Slide 1

Slide 1 text

RAGの性能評価⽤のQAデータセットを ⽣成AIに作らせた話 ´ AI/MLなんでもLT会 ´ 藏原 これはる(NCDC株式会社) ´ 2024 / 08 / 23

Slide 2

Slide 2 text

⽬次 1. ⾃⼰紹介 2. 本⽇の概要 3. 背景 RAGについて 4. 問題意識 5. 基本的な考え⽅ 6. 構築 1. Bedrock Prompt Manager 2. Bedrock Prompt Flow 7. 結果 8. RAG評価への応⽤ 9. まとめ 10. 課題 2

Slide 3

Slide 3 text

⾃⼰紹介 l ⽒名 l 藏原 これはる l ロール l NCDC株式会社 ITコンサルタント l 略歴 l 2021/04 ゼネコンの情シス職に新卒⼊社 l 2023/11 NCDC⼊社 l 趣味など l 読書(百年の孤独が積読に追加されました) l ポケモンGO 3

Slide 4

Slide 4 text

本⽇の概要 l RAGの回答精度の評価⼿法に関する話 l RAGの構築に関する話は今⽇はしません l ナレッジからQAデータセットを作成し、テストを⾏う⼿法を提案 l QAデータセットの作成に、Amazon Bedrockの各サービスを利⽤ l ノーコードで処理を開発できたため、⾮プログラマでも実⾏可能 4

Slide 5

Slide 5 text

背景 RAGについて l “Retrieval-Augmented Generation (RAG) は、⼤規模⾔語モデル(LLM)によ るテキスト⽣成に、外部情報の検索を組み合わせることで、回答精度を向 上させる技術のこと。検索拡張⽣成などと訳される”(NRIより引⽤) l LLMによる汎⽤的な⽂章⽣成機能に、ユーザー独⾃の知識(ナレッジベー ス)を組み込むことで、独⾃の知識を踏まえた回答を⽣成させている l LLM⾃⾝がナレッジベースを学習しているわけではない 5 アプリケーション +リトリーバー プログラム(LLMの時もある) ジェネレーター LLM ユーザー 主として⼈間 弊社の有給取 得ルールを教 えて︕ 弊社の有給取得 ルールの説明⽂を ⽣成せよ。ただし ⽂書A中の…、⽂ 書B中の…という 内容をもとに⽣成 すること はい。弊社の 有給取得ルー ルは[……]です 参考︓https://ncdc.co.jp/columns/8742/

Slide 6

Slide 6 text

問題意識 l 世は⼤RAG時代、だが…… 1. 開発者⾃⾝がRAGの性能を評価できない l 太宰治作品を読んだことがない⼈に、「⾛れメロスRAG」の性能評価はで きない l ⾃分が知っている(正誤を判断できる)内容の質問しか想定することができな いから 2. 返答が微妙だった時の、性能の評価が難しい l そもそもその返答は正しいのか︖ 誤りなのか︖(ハルシネーション) l ナレッジが⾜りないのか︖ l RAGの回答精度が低いのか︖ l モデル性能が低いのか︖ l ジェネレーター or リトリーバー︖ l プロンプトが邪魔をしているのか︖ 6

Slide 7

Slide 7 text

基本的な考え⽅ l ナレッジの内容に関して、正しいとわかっている「質問ー回答」の データセットを⽤意し、RAGに質問を⼊⼒することで正しい回答 を返すかを評価する l 利⽤するナレッジは「質問ー回答」の形式になっていないことがほと んど l ナレッジを⽣成AIに⼊⼒し、「質問ー回答」のデータセットを⽣成させる 7 ナレッジ ナレッジベース化 ・Kendra ・OpenSearch RAG開発 ・モデル選択 ・プロンプト作成 提供 QAデータセット 作成 テスト

Slide 8

Slide 8 text

(参考) 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

Slide 9

Slide 9 text

構築 Bedrock Prompt Manager l ブラウザ上で基盤モデルを調整し、プロンプトの開発・保存ができ るサービス l 試⾏錯誤()の末、以下のプロンプトを作成した l 基盤モデルにはClaude3.5 Sonnetを使⽤ l ⾼性能だが、費⽤が⾼い l テストデータの作成にはSonnetを使い、RAG本体にはHaikuなどのよ り廉価なモデルを使うといったような運⽤の⼯夫が考えられる 9 以下の物語を読み、質問と回答のセットを5つ作成しなさい。テキストから作品名を明らかにしな さい。物語は{{topic}}です.

Slide 10

Slide 10 text

構築 Bedrock Prompt Flow l ノーコード・ローコードツールに近い感覚で、Bedrockの機能を⽤ いたアプリケーションを開発できるサービス l 使い勝⼿、メリット、デメリットは他のノーコード・ローコードツー ルと同様 l 使⽤できるモジュールがまだ少ない l 簡単なルーチンの⾃動化などの処理はすぐに作成できる l S3に配置したテキストファイルを読み込み、Bedrockのプロンプトを 呼び出す処理をノーコードで作成した 10

Slide 11

Slide 11 text

結果 l 「⾛れメロス/太宰治」から、質問と回答のセットを⽣成させた l 後から⼈間がチェックし、問題ないことを確認 11 番号 質問 回答 内容チェッ ク 1 メロスはどんな職業の⼈物 ですか? メロスは村の牧⼈(⽺飼い)で す。 正 2 メロスが王城に⾏った理由 は何ですか? 暴君ディオニスを暗殺するた めです。 正 3 メロスの⾝代わりになった 友⼈の名前は? セリヌンティウスです。 正 4 メロスが約束の時間に遅れ そうになった原因は何です か? 豪⾬による川の氾濫、⼭賊の 襲撃、極度の疲労などです。 正 5 物語の最後で、暴君ディオ ニスはどのような態度を取 りましたか? メロスとセリヌンティウスの 友情に感動し、⾃分も仲間に ⼊れてほしいと頼みました。 正

Slide 12

Slide 12 text

RAG評価への応⽤ l 基盤モデルとして、Claude3 SonnetとCalude3 Haikuを使った⼆ つのエージェントを⽤意し、同じ質問に対する回答を⾒⽐べて⽐較 12 Haiku Sonnet QAデータセットと 同⼀内容の回答を 返した︕

Slide 13

Slide 13 text

RAG評価への応⽤ l Claude3 Haikuは、スピードとコストで優れるものの、正確さという点で Sonnetにやや劣る l どちらもQAセットと異なったので、プロンプトに⼯夫の余地がある可能性 13 Haiku Sonnet どちらもQAデータセットと は異なる回答を返し、さら に誤った情報を記載した (正しくは妹の結婚式)

Slide 14

Slide 14 text

まとめ l RAGの性能評価を⾏った l QAデータセットをナレッジから作成し、RAGに対して質問を投げるこ とで、回答の正誤判定を⾏った l QAデータセットと⽐較することで、「なんとなく正しそう」「データ が取れてそう」という雰囲気ベースの評価以上に正確な評価を⾏える ようになった l QAデータセットの作成に際して、Amazon Bedrockの新サービス を活⽤した l ノーコードで作業を完結できた 14

Slide 15

Slide 15 text

課題 l QAデータセット⽣成処理の⾃動化 l ナレッジを追加したタイミングで処理が⾛り、QAデータがjsonなどで吐き出される形が 理想 l txtファイル以外への対応 l 現状対応しているのはutf-8エンコーディングされたプレーンテキストのみ l トークン数の上限対応 l ⼀度に20万⽂字程度が限界 l 評価指標の定量化・システム化 l 因果推論タスクとして解かせてみる︖ l Guardrailsよりも意味のある指標になる︖ l 性能向上のための打ち⼿の切り分け l QAデータセットのハルシネーション対策 l そもそも「正しい」って何 l 哲学 15

Slide 16

Slide 16 text

Thank you! 16

Slide 17

Slide 17 text

(参考)返答が微妙だった時の対応切り分けフロー 17 微妙な 返答 情報はナ レッジにあ るか︖ テストデータ と同じモデル を使っている か︖ 他モデルとの検証など ナレッジの拡充 プロンプトの改良