🌟

RAGの精度評価・分析観点チェックリスト(自動生成)

に公開

LLM-RAGシステム精度分析チェックリスト

LLM-RAGシステムのアウトプット精度が期待値に満たない場合の原因分析を行うためのチェックリストです。問題を①データ、②プロンプト、③RAG、④LLMの4つの要素に切り分け、MECE(モレなくダブりなく)を意識して各観点を網羅的にリストアップします。


① データ (RAGナレッジソース) の分析観点

前提: RAGシステムにとって、データは「唯一の正解の源」です。ここの品質が低いと、後続のプロセスがどれだけ優れていても良いアウトプットは望めません。

☐ 品質の観点 (Quality)

  • [ ] 正確性・最新性: 格納されている情報が古かったり、間違っていたりしないか?
  • [ ] ノイズの除去:
    • [ ] 不要なテキスト: Webページのヘッダー/フッター、広告、ナビゲーションメニューなど、回答に無関係な定型文が混入していないか?
    • [ ] 特殊文字・HTMLタグ: スクレイピング等で取得したデータに、意味をなさない特殊文字やHTMLタグ(<div>, <br>など)が残っていないか?
  • [ ] 矛盾・重複: 同じ内容について矛盾する情報が異なるドキュメントに存在していないか?あるいは、完全に同一のドキュメントが複数格納されていないか?
  • [ ] 完全性: 回答生成に必要な情報が、一部分だけ欠落していないか?(例:表の一部だけがテキスト化されているなど)

☐ 形式・構造の観点 (Format & Structure)

  • [ ] 構造化 vs 非構造化:
    • [ ] 構造化データ: 表やJSONなどの構造化データが、意味を保ったままテキスト化されているか?(例:表が単なる文字列の羅列になっていないか)
    • [ ] 非構造化データ: PDFやWord文書のレイアウト(段組み、図表キャプション等)が崩れ、文章の文脈が壊れていないか?
  • [ ] ファイル形式: RAGが対応しているファイル形式か?パーサー(解析ライブラリ)が文書の構造を正しく認識できているか?
  • [ ] 一貫性: ドキュメント全体のフォーマットやスタイルは統一されているか?(例:見出しの付け方、箇条書きの形式など)

☐ 関連性・網羅性の観点 (Relevance & Coverage)

  • [ ] スコープ: ユーザーが質問すると想定される範囲の情報が、そもそもナレッジソース内に存在するか?
  • [ ] 粒度: 情報の粒度は適切か?情報が抽象的すぎたり、逆に細かすぎて本質が埋もれたりしていないか?
  • [ ] 無関係な情報の混入: 検索対象のドキュメント群に、トピックと全く関係のないドキュメントが大量に含まれていないか?(検索ノイズの原因になる)

② プロンプトの分析観点

前提: プロンプトはLLMに対する「指示書」です。RAGで取得したコンテキストをどう利用してほしいかを明確に伝える必要があります。

☐ 指示の明確性・具体性の観点 (Clarity & Specificity)

  • [ ] 役割(Role)の設定: LLMにどのような役割(例:「あなたは〇〇に関する専門家です」)を期待するかが明記されているか?
  • [ ] タスクの定義: 実行してほしいタスク(要約、質問応答、リストアップなど)が具体的に指示されているか?
  • [ ] コンテキスト利用の強制:
    • [ ] 「提供された情報のみを元に」: 「以下の情報だけを使って回答してください」「情報がない場合は『分かりません』と答えてください」といった、外部知識の利用を制限する指示があるか?(ハルシネーション抑制に非常に重要)
  • [ ] 出力形式の指定: 回答のフォーマット(箇条書き、JSON、表形式など)や、言語(日本語、英語など)、トーン(丁寧、簡潔など)を指定しているか?

☐ コンテキストの組み込み方の観点 (Context Integration)

  • [ ] プレースホルダー: 検索結果(コンテキスト)とユーザーの質問を埋め込む場所が、プロンプトテンプレート内で明確に区切られているか?(例:{context}, {question}
  • [ ] 構造: コンテキストを質問の前と後のどちらに配置しているか?配置順によってLLMの応答が変わることがあるため、最適な順序を検証したか?
  • [ ] 区切り文字: 複数のチャンク(文書断片)をコンテキストとして渡す際、各チャンクが明確な区切り文字(例:---)で分けられているか?

☐ 制約条件とガードレールの観点 (Constraints & Guardrails)

  • [ ] 回答の制約: 回答に含めてはいけない情報(個人情報、機密情報など)について、明確な禁止事項を記載しているか?
  • [ ] 不明時の挙動: コンテキスト内に回答がない場合の望ましい挙動(例:「情報が見つかりませんでした」と回答する)を指示しているか?

☐ プロンプトエンジニアリング技法の観点 (Advanced Techniques)

  • [ ] Few-shotプロンプティング: 理想的な質疑応答の例をいくつかプロンプトに含めることで、LLMの応答を誘導しているか?
  • [ ] Chain-of-Thought (CoT): 複雑な質問に対して、「ステップバイステップで考えてください」のように、思考プロセスを促す指示を入れているか?

③ RAG (検索拡張) メカニズムの分析観点

前提: RAGの「検索(Retrieval)」部分が、ユーザーの質問に対して適切でない情報を渡している可能性があります。

☐ データ前処理・インデックス作成の観点 (Indexing / Pre-processing)

  • [ ] チャンキング戦略 (Chunking):
    • [ ] チャンクサイズ: 1つのチャンクに含まれるテキスト量は適切か?(小さすぎると文脈が失われ、大きすぎるとノイズが増える)
    • [ ] オーバーラップ: チャンク間でテキストを重複させる量は適切か?(文脈の断絶を防ぐために重要)
    • [ ] 分割方法: 固定長の分割か、段落や文単位など意味的なまとまりで分割しているか?文書の構造に適した方法か?
  • [ ] 埋め込みモデル (Embedding Model):
    • [ ] モデルの適合性: 使用している埋め込みモデルは、ドキュメントの言語(日本語など)や専門領域に適しているか?
    • [ ] モデルの性能: より高性能な埋め込みモデル(例:OpenAI text-embedding-3-large, intfloat/multilingual-e5-largeなど)を試す価値はあるか?
  • [ ] メタデータの付与: チャンクにソースドキュメント名、ページ番号、作成日などのメタデータを付与しているか?(後段でのフィルタリングや出典提示に利用できる)

☐ 検索 (リトリーバル) の観点 (Retrieval)

  • [ ] 検索アルゴリズム:
    • [ ] ベクトル検索: セマンティック(意味的)な検索のみで、キーワードの一致を拾えていない可能性はないか?
    • [ ] キーワード検索 (BM25など): 固有名詞や専門用語など、キーワードが重要な場合に利用しているか?
    • [ ] ハイブリッド検索: ベクトル検索とキーワード検索を組み合わせて、両者の長所を活かせているか?
  • [ ] 検索パラメータ:
    • [ ] top_k (取得チャンク数): 取得するチャンクの数は適切か?(少なすぎると必要な情報が漏れ、多すぎるとノイズでLLMが混乱する)
    • [ ] 類似度スコア閾値: 類似度が低い(関連性が薄い)チャンクを足切りする閾値は設定されているか?
  • [ ] クエリ変換 (Query Transformation): ユーザーの短い質問を、より検索に適した形(例:複数の視点からの質問文を生成する、キーワードを抽出する)に変換する処理を導入しているか?

☐ 再ランキング (リランキング) の観点 (Re-ranking)

  • [ ] リランカーの導入: top_kで取得したチャンク群を、より精度の高いモデル(例: Cross-encoder)で再度並べ替え、本当に最も関連性の高いチャンクを上位に持ってきているか?

④ LLM (大規模言語モデル) の分析観点

前提: データ、プロンプト、RAG検索が完璧でも、最終的な文章を生成するLLM自体に問題がある可能性も考慮します。

☐ モデル選定の観点 (Model Selection)

  • [ ] モデルの性能: タスクの複雑さに対して、モデルの性能(表現力、推論能力)は十分か?(例:GPT-3.5でダメならGPT-4を試す)
  • [ ] コンテキストウィンドウ: モデルが一度に処理できるトークン数(コンテキストウィンドウ)は、プロンプト+検索コンテキストの長さを十分にカバーできているか?超過していないか?
  • [ ] ファインチューニング: 特定のドメインやタスクに特化したファインチューニング済みモデルを利用しているか?あるいは、その必要性はあるか?

☐ 生成パラメータの観点 (Generation Parameters)

  • [ ] Temperature: 値は適切か?(高いと創造的で多様な回答になるが、ハルシネーションのリスクも増える。低いと決定的で保守的な回答になる)
  • [ ] Top-p / Top-k: 生成される単語の選択肢を制限するこれらのパラメータが、過度に回答を制約していないか?
  • [ ] ペナルティ (Presence/Frequency Penalty): 同じ単語やフレーズの繰り返しを抑制する設定は適切か?

☐ モデル固有の課題の観点 (Model-specific Issues)

  • [ ] ハルシネーション(幻覚): 提供されたコンテキストを無視して、モデルが内部知識から事実でない情報を生成していないか?(これはプロンプトの指示の弱さが原因の場合も多い)
  • [ ] 事実不一致: コンテキスト内の情報と矛盾する回答を生成していないか?
  • [ ] バイアス: モデルが特定のバイアス(社会的、文化的など)に基づいた不適切な回答を生成していないか?
  • [ ] 位置バイアス (Positional Bias): コンテキストの最初や最後の情報を過度に重視し、中間の重要な情報を見逃していないか?("Lost in the Middle"現象)

分析の進め方:
これらのチェックリストを上から順に、あるいは最も疑わしい箇所から確認していくことを推奨します。多くの場合、原因は一つではなく、複数の要素が複雑に絡み合っています。一つの項目を修正したら、必ず評価を行い、改善が見られたかを確認する、というサイクルを繰り返すことが精度向上の鍵となります。


※本記事はGemini 2.5 proによる自動生成です。あくまで参考として活用してください。

Accenture Japan (有志)

Discussion