RAGにおけるGIGOとQIQO:出力品質は入力品質から始まる
要点
RAGは、整理されていない文書群を自動的に正確な回答へ変換してくれる仕組みではありません。
GIGO — Garbage In, Garbage Out:
低品質なデータ、不明確な質問、不適切な検索結果を入力すると、低品質な回答が生成される可能性が高まります。
QIQO — Quality In, Quality Out:
高品質なデータ、適切な検索、明確なコンテキストは、正確な回答を生成するための重要な条件です。
ただし、QIQOは結果を保証する法則ではありません。正しい文書が与えられても、モデルが内容を誤解したり、重要な情報を見落としたり、根拠のない主張を生成したりすることがあります。
1. RAGは「ゴミを除去する装置」ではない
一般的なRAGの処理は、次の3段階で表せます。
質問 → 文書検索 → LLMによる回答生成
この仕組みにより、言語モデルはパラメータ内部の知識だけでなく、外部の情報源も利用できます。
Lewisらの基礎研究では、検索拡張型モデルが、内部知識だけに依存するモデルよりも具体的で事実に基づいた回答を生成できることが示されました [1]。
しかし、RAGが行うのは、検索した文書をモデルのコンテキストに追加することです。
以下の点を自動的に保証するわけではありません。
- 文書の内容が正しいか
- 情報が現在も有効か
- 検索された箇所が質問に答えているか
- 複数の情報源が矛盾していないか
そのため、誤った情報が検索されると、LLMはその内容を自然で説得力のある文章として提示してしまう可能性があります。
これがRAGにおけるGIGOです。
2. 「Garbage」はあらゆる層から入り込む
低品質なナレッジベース
ナレッジベースに古い文書、重複した文書、出典不明の情報、矛盾した情報が含まれている場合、Retrieverは信頼できる根拠を選べません。
例えば、次のようなケースです。
新しい返金ポリシーがすでに適用されているが、ナレッジベースには旧ポリシーも残っており、適用日が記録されていない。
この場合、Retrieverは正しいテーマの文書を見つけても、古いバージョンを取得する可能性があります。
問題はLLMから始まるのではありません。
LLMがアクセスできるデータから始まります。
Chunkingによって文脈が失われる
正しい文書であっても、不適切に分割されると低品質な入力になります。
例えば、規則の本文が1つのChunkにあり、重要な例外条件が別のChunkに分かれている場合、システムは規則の一部しか検索できないかもしれません。
この場合、LLMが完全に情報を捏造しているとは限りません。
不足したコンテキストをもとに回答を生成しているのです。
したがって、RAGにおけるデータ品質には、事実の正確性だけでなく、次の要素も含まれます。
- 文書構造
- Metadata
- Chunkのサイズと境界
- セクション間の関係性
RAGに関する調査研究でも、Indexing、Retrieval、Context Augmentationは相互に関係する要素であり、同時に最適化する必要があるとされています [2]。
低品質なQueryは低品質なRetrievalを生む
Retrieverが検索するのは、ユーザーが本当に知りたいことではなく、実際に入力された質問です。
例えば、次の質問を考えてみます。
「休暇制度はどうなっていますか?」
これは、年次有給休暇、病気休暇、無給休暇、育児休暇のどれを指しているのか分かりません。
国や雇用形態によっても回答は変わります。
質問が曖昧、不完全、または入力ミスを含む場合、検索品質は大きく低下する可能性があります。
そのため、Query Rewriting、質問の明確化、Query Classificationは、Embedding Modelの選択と同じくらい重要です。
関連性が高くても答えが含まれているとは限らない
Similarityが高いことと、Usefulであることは同じではありません。
質問と同じ単語を多く含む文書でも、必要な根拠が含まれていない場合があります。
例えば、次のケースです。
Retrieverは「返金手続き」に関する文書を取得したが、ユーザーが知りたいのは「返金が口座に反映されるまでの日数」である。
テーマは合っています。
しかし、質問への答えはありません。
文書は、意味的に似ているだけで有用と判断すべきではありません。
実際の質問に答えるための根拠を提供できるかどうかで評価する必要があります。
3. Contextは多ければよいわけではない
検索結果が弱い場合、top_kを増やして、より多くの文書をモデルに渡す方法がよく使われます。
しかし、長いContextはノイズも増やします。
Lost in the Middleでは、モデルが情報を利用できるかどうかは、その情報がContext内のどこに配置されているかに大きく影響されることが示されました。
長いContextの中央にある重要情報は、冒頭や末尾にある情報よりも十分に利用されない場合があります [3]。
そのためRAGASでは、Context Relevanceを重要な評価指標の1つとしています。
検索されたContextは、必要な情報に集中し、不要な情報をできるだけ含まないことが望まれます [4]。
目標は次のようなものではありません。
できるだけ多くの文書を検索する。
本当の目標は次のとおりです。
質問に答えるために必要な根拠を、重複やノイズを最小限にして取得する。
4. QIQOは「良い入力なら必ず良い出力になる」という意味ではない
QIQOは、設計原則として理解する必要があります。
入力の信頼性が高いほど、信頼できる出力が生成される可能性も高くなる。
これは決定論的な公式ではありません。
正しい文書が取得されても、モデルは次のような失敗をする可能性があります。
- 根拠を誤って解釈する
- 重要な条件を見落とす
- 無関係な記述を結合する
- 根拠のない主張を生成する
つまり、次のように考える必要があります。
Quality InはQuality Outを可能にするが、Generationの制御は依然として必要である。
信頼できるRAGシステムでは、少なくとも次の指標を個別に評価する必要があります。
- Context Precision: 検索された箇所は本当に有用か
- Context Recall: 必要な根拠を十分に取得できたか
- Faithfulness: 回答は取得したContextに基づいているか
- Answer Relevance: 回答は質問に直接答えているか
RAGASなどの評価Frameworkが、Retrieval QualityとGeneration Qualityを分けて評価するのは、このためです [4]。
5. RAGにおけるGIGOは完全に直線的ではない
すべてのノイズ文書が、同じように悪影響を与えるわけではありません。
一見すると関連性が高いものの、実際には答えを含んでいない文書は、完全に無関係な文書よりも有害な場合があります。
関連性が高く見える誤解を招く情報は、モデルを間違った結論へ誘導する可能性があるためです。
つまり、RAGにおける「Garbage」はSimilarity Scoreだけでは定義できません。
重要なのは、次の問いです。
この文書は、モデルが正しく根拠のある回答を生成するために役立つか。
答えが「No」であれば、Similarityが高くても有用なContextとは言えません。
6. Production環境でGIGOからQIQOへ移行する
信頼できるRAG Pipelineには、複数の段階で品質管理が必要です。
Retrieval前
- 古い文書や重複文書を削除する
- Source、Version、更新日を保存する
- 文書構造に沿ってChunkingする
- 必要に応じてQueryを正規化または書き換える
Retrieval後
- Rerankerを使用する
- 根拠を含まない箇所を除外する
- 重複した内容を削除する
- 情報源の矛盾を検出する
- 根拠が不足している場合は回答を拒否できるようにする
Generation後
- 各ClaimをContextと照合する
- 重要な主張にはCitationを付ける
- FaithfulnessとAnswer Relevanceを測定する
- 高リスクな用途ではHuman Reviewを導入する
Corrective RAGのような手法では、Retrieval Evaluatorを追加し、低品質な検索結果を検出して修正処理を実行します。
Self-RAGでは、モデル自身がRetrievalの必要性を判断し、取得した根拠と生成した回答を評価します。
重要なのは、Retrievalを単なる検索処理として扱わないことです。
制御されたEvidence Pipelineとして設計する必要があります。
結論
RAGにおける回答品質は、最後のPromptから始まるのではありません。
ナレッジベース、Metadata、Chunking Strategy、Query、そして検索されたEvidenceから始まります。
GIGOは、弱いデータPipelineをLLMだけで救うことはできないと教えてくれます。
QIQOは、出力を改善するためには、まずモデルに渡されるすべての入力を改善する必要があると教えてくれます。
実務的には、次のようにまとめられます。
Clean Corpus + 明確なQuery + 十分なEvidence + ノイズの少ないContext + Faithfulness Check
= より信頼できるRAG
より大きなModelに変更すれば、必ず問題が解決するわけではありません。
最初に修正すべきものは、モデルそのものではなく、モデルに読ませている情報かもしれません。
References
[1] Patrick Lewis et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020. arXiv:2005.11401.
[2] Yunfan Gao et al. Retrieval-Augmented Generation for Large Language Models: A Survey. 2023. arXiv:2312.10997.
[3] Nelson F. Liu et al. Lost in the Middle: How Language Models Use Long Contexts. 2023. arXiv:2307.03172.
[4] Shahul Es et al. RAGAS: Automated Evaluation of Retrieval-Augmented Generation. 2023. arXiv:2309.15217.