Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RAGの回答精度評価用のQAデータセットを生成AIに作らせた話

Koreharu
August 28, 2024

 RAGの回答精度評価用のQAデータセットを生成AIに作らせた話

Koreharu

August 28, 2024
Tweet

Other Decks in Programming

Transcript

  1. ⽬次 1. ⾃⼰紹介 2. 本⽇の概要 3. 背景 RAGについて 4. 問題意識

    5. 基本的な考え⽅ 6. 構築 1. Bedrock Prompt Manager 2. Bedrock Prompt Flow 7. 結果 8. RAG評価への応⽤ 9. まとめ 10. 課題 2
  2. ⾃⼰紹介 l ⽒名 l 藏原 これはる l ロール l NCDC株式会社

    ITコンサルタント l 略歴 l 2021/04 ゼネコンの情シス職に新卒⼊社 l 2023/11 NCDC⼊社 l 趣味など l 読書(百年の孤独が積読に追加されました) l ポケモンGO 3
  3. 背景 RAGについて l “Retrieval-Augmented Generation (RAG) は、⼤規模⾔語モデル(LLM)によ るテキスト⽣成に、外部情報の検索を組み合わせることで、回答精度を向 上させる技術のこと。検索拡張⽣成などと訳される”(NRIより引⽤) l

    LLMによる汎⽤的な⽂章⽣成機能に、ユーザー独⾃の知識(ナレッジベー ス)を組み込むことで、独⾃の知識を踏まえた回答を⽣成させている l LLM⾃⾝がナレッジベースを学習しているわけではない 5 アプリケーション +リトリーバー プログラム(LLMの時もある) ジェネレーター LLM ユーザー 主として⼈間 弊社の有給取 得ルールを教 えて︕ 弊社の有給取得 ルールの説明⽂を ⽣成せよ。ただし ⽂書A中の…、⽂ 書B中の…という 内容をもとに⽣成 すること はい。弊社の 有給取得ルー ルは[……]です 参考︓https://ncdc.co.jp/columns/8742/
  4. 問題意識 l 世は⼤RAG時代、だが…… 1. 開発者⾃⾝がRAGの性能を評価できない l 太宰治作品を読んだことがない⼈に、「⾛れメロスRAG」の性能評価はで きない l ⾃分が知っている(正誤を判断できる)内容の質問しか想定することができな

    いから 2. 返答が微妙だった時の、性能の評価が難しい l そもそもその返答は正しいのか︖ 誤りなのか︖(ハルシネーション) l ナレッジが⾜りないのか︖ l RAGの回答精度が低いのか︖ l モデル性能が低いのか︖ l ジェネレーター or リトリーバー︖ l プロンプトが邪魔をしているのか︖ 6
  5. (参考) Guardrails for Amazon Bedrock について l Guardrails for Amazon

    Bedrock で contextual grounding check を実⾏で きるようになりました(2024/08) l Grounding: モデルからの出⼒が、ナレッジベースの情報にどれだけ基づ いているかを0~1で評価した値 l Relevance: モデルからの出⼒が、ユーザーの質問内容とどれだけ関連し ているかを0~1で評価した値 l GroundingとRelevanceを両⽅評価することで、ハルシネーションを 起こしている可能性が⾼い回答をフィルターすることが可能 l 情報の正誤そのものの評価ではないことに注意 l https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/g uardrails-contextual-grounding-check.html 8
  6. 構築 Bedrock Prompt Manager l ブラウザ上で基盤モデルを調整し、プロンプトの開発・保存ができ るサービス l 試⾏錯誤()の末、以下のプロンプトを作成した l

    基盤モデルにはClaude3.5 Sonnetを使⽤ l ⾼性能だが、費⽤が⾼い l テストデータの作成にはSonnetを使い、RAG本体にはHaikuなどのよ り廉価なモデルを使うといったような運⽤の⼯夫が考えられる 9 以下の物語を読み、質問と回答のセットを5つ作成しなさい。テキストから作品名を明らかにしな さい。物語は{{topic}}です.
  7. 構築 Bedrock Prompt Flow l ノーコード・ローコードツールに近い感覚で、Bedrockの機能を⽤ いたアプリケーションを開発できるサービス l 使い勝⼿、メリット、デメリットは他のノーコード・ローコードツー ルと同様

    l 使⽤できるモジュールがまだ少ない l 簡単なルーチンの⾃動化などの処理はすぐに作成できる l S3に配置したテキストファイルを読み込み、Bedrockのプロンプトを 呼び出す処理をノーコードで作成した 10
  8. 結果 l 「⾛れメロス/太宰治」から、質問と回答のセットを⽣成させた l 後から⼈間がチェックし、問題ないことを確認 11 番号 質問 回答 内容チェッ

    ク 1 メロスはどんな職業の⼈物 ですか? メロスは村の牧⼈(⽺飼い)で す。 正 2 メロスが王城に⾏った理由 は何ですか? 暴君ディオニスを暗殺するた めです。 正 3 メロスの⾝代わりになった 友⼈の名前は? セリヌンティウスです。 正 4 メロスが約束の時間に遅れ そうになった原因は何です か? 豪⾬による川の氾濫、⼭賊の 襲撃、極度の疲労などです。 正 5 物語の最後で、暴君ディオ ニスはどのような態度を取 りましたか? メロスとセリヌンティウスの 友情に感動し、⾃分も仲間に ⼊れてほしいと頼みました。 正
  9. 課題 l QAデータセット⽣成処理の⾃動化 l ナレッジを追加したタイミングで処理が⾛り、QAデータがjsonなどで吐き出される形が 理想 l txtファイル以外への対応 l 現状対応しているのはutf-8エンコーディングされたプレーンテキストのみ

    l トークン数の上限対応 l ⼀度に20万⽂字程度が限界 l 評価指標の定量化・システム化 l 因果推論タスクとして解かせてみる︖ l Guardrailsよりも意味のある指標になる︖ l 性能向上のための打ち⼿の切り分け l QAデータセットのハルシネーション対策 l そもそも「正しい」って何 l 哲学 15