RAGの精度を上げる勘所。検索が当たらないとき、どこを疑うか
RAGは動くものを作るだけなら難しくありません。難しいのは精度です。「それらしい答えは返るが、肝心なときに正しくない」という状態から抜け出せず、本番投入を見送るケースが多く発生しています。この記事では、精度が出ないときにどこを疑うべきかを、処理の流れに沿って整理します。
RAGの処理はどこで失敗するか
RAG(検索拡張生成)は、質問に対して社内データから関連情報を検索し、その内容をLLMに渡して回答を生成させる仕組みです。処理は大きく次の順に進みます。
- 文書を適切な単位に分割する
- 分割した内容を数値化(Embedding)して保存する
- 質問を数値化し、近いものを検索する
- 検索結果を絞り込む
- LLMに渡して回答を生成させる
精度が出ないとき、多くの人は最後のLLMやプロンプトを疑います。しかし実際の原因は、前半の検索段階にあることがほとんどです。正しい情報が検索できていなければ、どれだけプロンプトを工夫しても正しい答えは出ません。
分割の仕方で結果が変わる
文書をどの単位で切るかを「チャンク分割」と呼びます。ここが精度に直結します。
細かく切りすぎると、前後の文脈が失われます。「その手続きは前項の条件に該当する場合に限る」という文だけが取れても、前項が何かは分かりません。
大きく切りすぎると、1つのチャンクに複数の話題が混ざります。検索の精度が落ち、LLMに渡す情報にも無関係な内容が混ざります。
実務では、文書の構造に沿って切るのが基本です。見出し単位、条項単位、Q&A単位。機械的に文字数で切るより、意味のまとまりを保てます。
チャンク同士を少し重ねる(オーバーラップさせる)手法もよく使われます。境界で文脈が切れる問題を緩和できます。
検索が当たらないときの原因
よくあるのは次のパターンです。
- 表記の揺れ/質問は「有給」、文書は「年次有給休暇」。数値化して近さを測る方式はある程度吸収しますが、社内固有の略語には弱くなります
- 質問が曖昧/「あれってどうなってましたっけ」に近い聞き方では、検索のしようがありません
- キーワードが本文にない/表やヘッダーに書かれた情報が、本文のチャンクに含まれていない
- 類似文書が多すぎる/似た規程が複数あり、どれが最新か判別できない
対策として、意味の近さで探す検索と、単語の一致で探す検索を組み合わせる方法が取られます。固有名詞や型番は単語一致のほうが確実に当たるためです。
質問そのものを一度LLMに整形させてから検索する、という手法もあります。曖昧な聞き方を検索しやすい形に直す前処理です。
検索したあとの絞り込み
検索で上位に出た内容が、必ずしも質問への答えを含んでいるとは限りません。そこで、取得した候補を再度評価して並べ替える処理を挟みます。
検索で20件取り、そこから本当に関連するものを5件に絞ってLLMへ渡す。この一段を入れるだけで、回答の質が目に見えて変わることがあります。
渡す情報を増やせば増やすほど良いわけではありません。無関係な内容が混ざると、LLMがそちらに引きずられます。
渡し方と答えさせ方
検索結果をLLMに渡す段階では、次の点を明示します。
- 渡した情報の範囲でのみ回答すること
- 情報が不足していれば「分からない」と答えること
- どの文書を根拠にしたかを示すこと
3つ目の出典表示は、業務利用では実質的に必須です。回答が正しいかどうかを利用者が自分で確認できるようになり、ハルシネーション(事実と異なる回答)のリスクを大きく下げられます。
2つ目も重要です。「分からない」と言えないシステムは、必ずそれらしい嘘をつきます。
評価の仕組みがないと改善できない
ここが実務でもっとも軽視される部分です。
チャンクの切り方を変えた、検索方式を変えた、プロンプトを直した。その変更が良くなったのか悪くなったのか、判断する基準がなければ改善は進みません。
最低限必要なのは、想定質問と期待する回答の組を用意しておくことです。数十件でも構いません。変更のたびにこれを流し、結果を比べます。
本番運用に入ってからは、実際の質問と回答を記録し、定期的に確認する仕組みが要ります。利用者が「役に立たない」と感じて使わなくなる前に、問題を検知できるかどうかが分かれ目です。
最後は元データの問題に行き着く
技術的な調整を尽くしても精度が上がらない場合、原因は元データにあります。
- 同じ内容の文書が複数あり、どれが最新か分からない
- 更新されないまま放置された古い情報が混ざっている
- 暗黙の前提が文書化されておらず、そもそも答えが存在しない
- 画像やスキャンPDFで、テキストとして読めない
「AIを導入したいが、社内のデータが整っていない」という状況は珍しくありません。 RAGの構築とは、その整備を含む仕事だと考えたほうが実態に近くなります。
この点で、データ基盤の知識を持つ人材が有利になります。どこに何があり、どう管理されているかを把握し、整える。技術の問題に見えて、実は情報管理の問題という場面が多く発生します。
AI開発案件をお探しの方へ
イーランサーは、AI開発、データ基盤・DWH、BI、AWS、Azure、GCP、Java、Python、SAP/S4HANA、Salesforceなど幅広い領域の案件を取り扱っています。専任担当がご経歴と希望条件を整理し、条件に合うプロジェクトをご提案します。
登録から案件のご紹介、契約手続きまで費用は一切かかりません。フルリモート・一部リモート・常駐のほか、週1〜2日の副業案件も取り扱っています。
案件を見る