メルマガ登録
前回の記事では、RAG(拡張検索生成)における代表的な改善観点として、データ・検索ロジック・プロンプトという3つのポイントを整理しました。
本記事においては、その続編として、この中でも特に影響が大きい「データのチューニング」に焦点を当てます。RAGの精度が安定しない原因は、生成モデルやプロンプト以前に、検索に渡されるデータのつくり方に問題があるケースが少なくありません。
RAGは、
という構造を持っています。
この構造を見ると分かる通り、RAGにおいて生成AIが扱える情報は、検索結果として渡されたデータに完全に依存しています。生成AIは自ら新たに情報を探索したり、検索結果を取り替えたりすることはできません。そのため、検索段階で「不適切なデータ」が混ざると、その後でどれだけプロンプトを工夫したとしても、もっともらしい誤答(ハルシネーション)が発生しやすくなります。
ここで重要なのは、生成AIは検索結果の正しさを自動的に検証してくれる存在ではない、という点です。生成AIは「与えられた情報をもっともらしく文章化する」ことには長けていますが、「その情報が本当に正しいか」「本来参照すべき文書を参照できているか」を判断する機構は持っていません。
言い換えると、生成AIは検索結果を前提条件として受け入れる存在です。検索結果に誤りやノイズが含まれていた場合に、それを疑うのではなく、「与えられた事実」として扱い、整合性のある文章を生成しようとします。

RAGを業務データに適用する際、一般的なWeb記事やFAQデータとは異なる、特有の難しさが存在します。
特に多くの現場で共通して見られるのが、次のような特徴です。
これらは業務文書としては「正しく整理されている」状態でもありますが、RAGの検索という観点では、区別がつきにくい要因にもなります。
例えば、有価証券報告書や決算説明資料、統合報告書といった文書は、多くの場合、
といった共通の構成を持っています。
このような文書を複数社分まとめてRAGの対象にすると、検索システムから見たときには、「構造が似ている上に、書いてあることも似ている文書群」として扱われてしまいます。
さらに、業務文書では使われる表現や語彙も非常に似通っています。
といった定型表現は、企業や年度が違ってもほぼ同じ形で使われます。
これは人間が読む分には問題になりませんが、意味検索の観点では 「意味的に非常に近い文書」 と判断されやすくなります。
意味検索(ベクトル検索)は、文書の内容を「意味の近さ」で評価します。そのため、同じような構成・同じような語彙・同じような話題を持つ文書は、企業が異なっていても高い類似度を持つと判断されがちです。
人間であれば「これはA社の話で、あれはB社の話だ」と自然に区別できますが、意味検索は文書がさしている主体を必ずしも強く意識しません。
このような条件が重なると、検索結果には次のような文書が混ざりやすくなります。
例えば、「ブレインパッドの財務状況」という質問に対して、他社の財務状況のセクションや、過年度の似た表現の文書が検索上位に並ぶ、といった現象が発生します。
このように、業務データでは「意味が近い」「文脈が似ている」という条件だけでは、本当に参照すべき文書を特定することができません。そのため、RAGを業務で活用する場合には、
といった、意味検索とは別の軸での制御が不可欠になります。
この制御を担うのが、次に紹介するメタデータフィルタです。
こうした問題に対して、まず検討すべきなのがメタデータフィルタです。
ここでいうメタデータとは、文書本文とは別に付与する、検索制御用の属性情報を指します。例えば以下の情報です。
重要なのは、これらを検索の前段で使う、という点です。
つまり、
という二段構えの構造を取ります。

この設計により、意味検索の「拾いすぎ」という弱点を補うことができます。ベクトル検索は非常に強力な手法ですが、検索対象が広すぎるとノイズを拾いやすいためです。
例えば、複数社の有価証券報告書をRAGの対象にしたとします。会社名をメタデータとして扱っていない場合、「有価証券報告書」という文脈に強く引っ張られます。その結果、他社の財務セクションが検索結果の上位にヒットする可能性があります。
結果として生成AIは、別会社の数値や説明を自然につなぎ合わせ、一見正しそうな回答を生成してしまいます。こういった現象は、生成AIの能力不足ではなく、検索設計の問題としてとらえるべきです。
実際に、富士通の有価証券報告書・ブレインパッドの有価証券報告書をナレッジとして登録し、「ブレインパッドの本店の所在の場所は、東京都何区ですか」と問い合わせてみました。
しかし、このとき生成AIは両方のドキュメントから情報を参照しようとしてしまい、整合性のある回答を返すことができませんでした。
ここで注目すべきなのは、ドキュメント単位ではなくチャンク単位で検索が行われているという点です。RAGにおけるベクトル検索は、PDF全体ではなく分割されたテキストチャンクを対象に類似度計算を行います。
今回のように複数企業の有価証券報告書を同時に登録した場合、
といった記述は、企業を問わず似た文脈・語彙で記載されていることが多く、チャンクレベルでは企業固有の識別子(社名など)を含まない断片的なテキストとして埋め込まれてしまいます。
その結果、「ブレインパッド」に関する質問であっても、
といった、異なる企業に由来するチャンクが同時にTopK検索でヒットする可能性があります。
生成AIは、これらを同一のコンテキストとして扱って回答を構築しようとするため、結果として企業情報が混在した不整合な回答、あるいは回答不能な状態に陥ります。
同じ例でも、以下のようなメタデータが文書に付与されていれば状況は大きく変わります。
検索時にまずこの条件でフィルタリングを行うことで、検索対象は「ブレインパッドの資料」のみに限定され、その中で意味検索が行われるという構造になります。これにより、他社情報の混入・回答内容のブレ・ハルシネーションの発生を大きく抑えることができます。実務においては、このメタデータフィルタだけでRAGの安定性が大きく向上するケースも珍しくありません。
さきほどの例においても、メタデータでcompany=ブレインパッドの文書のみ参照するように設定を変更すると、今度は東京都港区にある旨を正しく回答できるようになりました。
ここまで見てきたように、メタデータフィルタを適切に設計することで、RAGにおける検索対象は大きく制御できるようになります。
どの会社の、どの年度の、どの種類の情報を参照するのかを明示できるようになることで、検索結果のブレや不要な文書の混入を大幅に抑えることが可能になります。
しかし、ここで注意したいのは、メタデータ設計がどれだけ適切であっても、検索対象となるデータそのものの品質が低ければ、期待した効果は得られないという点です。
検索空間を正しく絞り込んでいたとしても、肝心の文書が「検索に適した形」で扱われていなければ、意味検索は正しく機能しません。
特に業務データでは、PDF形式の資料や、スキャンされた画像データが多く含まれるケースが一般的です。
これらの資料の多くは、あくまで人が読むために作成されたものであり、機械的に処理・検索されることを前提として設計されたものではありません。
そのため、人が目で見て内容を理解する分には何の問題もない「文書」であっても、RAGで取り扱うという観点では課題を抱えている場合があります。
すなわち、一見すると同じ「文書」に見えても、
が混在しています。
この状態でRAGに投入すると、「メタデータで正しく絞り込んでいるはずなのに、なぜか期待通りの検索結果が返ってこない」といった問題に直面することがあります。
つまり、メタデータによる“どの文書を使うか”という制御と同時に、“その文書をどのような状態で検索に渡すか”という前処理の設計が不可欠なのです。
次に、RAGで頻繁に問題になりやすいPDF・画像データを例に、前処理の重要性について見ていきます。
RAGで扱う業務資料がPDFであり、そのままでは文字情報として正しく扱えないケースは少なくありません。スキャンされた画像PDFの場合、テキストとして検索できる状態にするために次のような前処理が必要です。
これらの処理を行わないと、検索精度が大きく低下します。
スキャンされた画像PDFをRAGの対象にするためには、まずOCRによるテキスト化が不可欠です。OCRを行わない場合、検索システムから見ればその文書は「文字情報を持たないデータ」であり、どれだけ適切なメタデータを付与していても、検索にはヒットしません。
一方で、OCRを適用した場合でも、
といった問題が発生することがあります。
このため、OCRは「かければ終わり」ではなく、検索用途に耐える品質でテキスト化できているかどうかを意識する必要があります。
OCR後のテキストでは、不要な改行が大量に含まれることがよくあります。
といった状態のままインデックス化すると、意味検索において文脈が分断され、本来ひとまとまりとして扱うべき情報がバラバラに解釈される可能性があります。
その結果、
といった現象が起こりやすくなります。
業務資料では、ページごとに同じヘッダーやフッターが繰り返し含まれることが多くあります。
これらは人間が読む際には無意識に無視できますが、検索システムにとっては頻出する重要な語句として扱われてしまいます。
その結果、
といった副作用が生じ、検索精度の低下につながります。
PDF資料では、段組みレイアウトが使われていることも多くあります。
OCR後のテキストでは、
といった形で、意味的に不自然な文章が生成されることがあります。
この状態でインデックス化すると、検索システムは意味の通らない文書を前提に検索を行うことになり、結果として検索精度が大きく損なわれます。
これらの前処理を行わずにRAGを構築すると、次のような問題が表面化します。
こうした問題は、モデルやプロンプトを調整しても解消されないことが多く、原因がデータ前処理にあると気づくまでに時間がかかる点も厄介です。
RAGにおける前処理は、単なるデータクレンジングではありません。検索と生成の両方を前提にした「データ設計」と捉える必要があります。
これらを意識して前処理を設計することで、初めてメタデータフィルタや検索ロジックの効果が最大化されます。どのようなデータを、どのような状態で検索に渡すか。この設計こそが、RAGを業務で安定して活用するための重要な前提条件であると言えるでしょう。
データ側のチューニングは、RAGの中でも最も地味な作業に見えるかもしれません。しかしその一方で、RAGの品質を最も確実に底上げしてくれるのも、この領域です。
こうした状態は、生成AIの振る舞いを調整するだけでは実現できません。
データ設計という土台が整って初めて得られる性質だと言えるでしょう。
本記事では、RAGにおける「データ側」のチューニングとして、
を中心に整理しました。
RAGの精度改善というと生成AIやプロンプトに注目が集まりがちですが、検索に渡る前のデータ設計が結果を左右するという点は、現場でRAGを活用する上で避けて通れない観点です。
次回はさらに踏み込み、より高度な検索構造(GraphRAG) といった「検索そのもののチューニング」について解説していく予定です。
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説