Hello there, ('ω')ノ
「RAGの回答がイマイチ…でも、原因はどこ?」
RAG(検索拡張型生成)を使っていると、こんなモヤモヤを感じることはありませんか?
- AIの回答がピンとこない
- 出典はあるけど、なんか質問に合ってない
- プロンプトを変えても改善しない…?
実はこれ、RAGの“検索部分”と“生成部分”が混在して評価されていることが原因かもしれません。
今回は、検索(Retrieval)と生成(Generation)を分けて評価する理由と方法について、わかりやすく解説します!
💡 RAGは「検索」と「生成」の2段構成!
RAGの仕組みをあらためて振り返ると…
検索部分(Retrieval)
→ 質問に関連する社内文書を探し出す(ベクトル検索)生成部分(Generation)
→ 見つけた文書をもとに、自然な文章で回答を生成(LLM)
📌 つまり、「どこが良くて、どこが悪いか」を把握するには、この2つを別々にチェックする必要があるということです!
🔍 なぜ分けて評価すべきなのか?
評価しないと… | 分けて評価すると… |
---|---|
「AIが変な回答したな…」で終わってしまう | 検索ミスか、生成ミスかを切り分けられる |
改善の方向性が見えない | プロンプトを変えるべきか、データを直すべきか判断できる |
精度の向上に限界がある | それぞれの精度を最適化できるようになる |
🧩 検索部分の評価方法(Retrieval)
✅ ① Context Recall(文脈の再現率)
- 定義: 質問に答えるのに必要な情報が、検索結果に含まれているか?
- チェック方法:
→ 検索されたチャンクに「正しい答え」が入っているかを人手で確認(またはragasで自動スコア)
✅ ② Context Precision(文脈の適合率)
- 定義: 関係のないチャンクが混ざっていないか?
- チェック方法:
→ ノイズが多すぎると、生成結果がブレやすくなる
✅ ③ チャンク設計の見直しポイント
- チャンクが長すぎる → 関連部分がボヤける
- チャンクが短すぎる → 必要な情報が分断される
- チャンクにタイトルやタグ(メタ情報)がない → 検索の精度が下がる
✍️ 生成部分の評価方法(Generation)
✅ ① Faithfulness(忠実性)
- 定義: 回答が検索文書に正確に基づいているか
- → “それっぽいけど嘘”を防ぐ指標
✅ ② Answer Relevance(質問との関連性)
- 定義: 回答が質問にちゃんと答えているか?
- → 曖昧な質問でも、文脈を理解して答えているかチェック
✅ ③ 表現のわかりやすさ・簡潔さ
- 過剰な専門用語がないか?
- 回答が長すぎないか?
- 結論から先に書かれているか?
➡ ここはプロンプト設計やLLMの選定がカギ!
🛠 分けて評価するためのステップ
ステップ | 内容 |
---|---|
① 質問と回答セットを準備 | なるべく実際の業務に近い内容が◎ |
② 検索結果(コンテキスト)を記録 | どのチャンクが使われたかを保存 |
③ 「検索評価」と「生成評価」に分ける | それぞれ別のチェックリストやスコアで評価 |
④ 改善ポイントを整理 | 例:「検索チャンクに必要情報がない」→DBの見直し |
📊 評価イメージ(例)
質問 | Context Recall | Faithfulness | Relevance | コメント |
---|---|---|---|---|
Q1 | ✅ | ✅ | ✅ | 理想的! |
Q2 | ❌ | ✅ | ✅ | 検索がズレてる。DBに情報がない? |
Q3 | ✅ | ❌ | ✅ | 生成で“盛ってる”。プロンプト要改善 |
Q4 | ✅ | ✅ | ❌ | 質問の解釈に失敗。入力の工夫が必要 |
✅ 評価に使えるツール
- 🔹 ragas:検索・生成を分けたスコアが自動で出せる
- 🔹 手動評価シート(Excel / Googleフォーム)
- 🔹 langfuse, Heliconeなど:LLM出力のログ・分析ツールと連携可能
まとめ:分けて評価すれば、直す場所が見えてくる!
- RAGの精度を高めるには、「検索の精度」と「生成の品質」をそれぞれ分けてチェックすることが大切
- 検索に問題があるのか? 生成がズレているのか? を明確にするだけで、改善のスピードと効果が格段に上がる
- 分けて評価する習慣が、継続的に“使えるRAG”を育てる第一歩!
Best regards, (^^ゞ