社内文書を根拠に回答するRAG(Retrieval-Augmented Generation:検索拡張生成)を組み込んだものの、「質問と関係ない文書を引いてくる」「根拠はあるのに回答がずれる」——RAGは動かすだけなら難しくないぶん、精度が出ずにつまずくケースが目立ちます。

やっかいなのは、精度が出ない原因が一箇所ではないことです。RAGは「文書を分割 → 検索 → プロンプトに詰めて生成」という複数の工程の連なりで、どこか一つが崩れると全体の回答がずれます。この記事では、RAGの精度が出ない原因を工程ごとに切り分け、対処する手順を解説します。生成AI機能を本番まで通す全体像は生成AIのPoCが本番に上がらない理由、Webへの組み込み手順は生成AI機能をWebに組み込む実装ステップもあわせてご覧ください。

なお筆者・馬込は、RAG型チャットボットの構築や、社内マニュアルを根拠にした回答精度の改善に携わってきました。本記事はその実務目線でまとめています。

結論:精度問題は「検索」か「生成」かをまず切り分ける

RAGの精度が出ないとき、いきなりプロンプトをいじるのは遠回りです。まず、「そもそも正しい文書を引けているか(検索)」と「引けた文書から正しく答えているか(生成)」のどちらが崩れているかを切り分けます。この一手で、直すべき場所が半分に絞れます。

手順1:検索が正しい文書を引けているかを確認する

最初に、生成の前段である**検索(Retrieval)**を単体で確認します。ユーザーの質問に対して、根拠となるべき文書が実際に検索結果の上位に来ているかを見ます。

  • 質問をいくつか用意し、検索結果の上位に「正解の文書」が入っているかを目視で確認する
  • 正解が上位に来ていなければ、問題は生成ではなく検索側にある
  • このとき、LLMに渡す前の「検索結果そのもの」を見るのがポイント

ここで正解が引けていないのに、プロンプトや生成モデルをいくら調整しても回答は良くなりません。検索が引けていない=生成に渡す材料が間違っているからです。

手順2:文書の分割(チャンク)を見直す

検索が引けていない場合、原因の多くは**チャンク(文書の分割単位)**にあります。分割が大きすぎたり小さすぎたりすると、検索の精度が落ちます。

症状 ありがちな原因 対処の方向
関係ない文書を引く チャンクが大きく、複数話題が混在 意味のまとまりで分割し直す
断片的で文脈が欠ける チャンクが小さすぎる 前後の重なり(オーバーラップ)を持たせる
見出しや表が壊れる 単純な文字数分割 文書構造を考慮して分割する

分割は「何文字で切るか」より「意味のまとまりで切れているか」が重要です。ここを直すだけで検索精度が大きく変わることは珍しくありません。

手順3:生成側(プロンプト)を調整する

検索は正しく引けているのに回答がずれる場合、問題は生成側にあります。ここで初めてプロンプトを調整します。

  • 「渡した文書の範囲でのみ答え、なければ『分からない』と答える」と明示し、憶測(ハルシネーション)を抑える
  • 根拠として使った箇所を回答に併記させ、検証可能にする
  • 文書を渡す順番や量が多すぎないかを確認する(詰め込みすぎると精度が落ちることがある)

プロンプト調整は最後の工程です。検索が崩れたままここをいじっても、土台が傾いた上で微調整するようなもので、根本解決になりません。

手順4:直した結果を、同じ質問セットで確かめる

切り分けて直したら、本当に良くなったかを毎回同じ物差しで確かめます。RAGの改善でいちばん危ういのが、「なんとなく良くなった気がする」で進めてしまうことです。生成AIは出力が毎回揺れるため、1回試して良かったからといって、改善したとは言えません。

やり方はシンプルで、代表的な質問を20〜50件、固定のセットとして用意しておきます。チャンクを変えた、プロンプトを直した——そのたびに同じセットを流し、前後を比較します。

  • 正しい文書を引けた割合(検索側の改善が効いたか)
  • 引けた文書から正しく答えられた割合(生成側の改善が効いたか)
  • 根拠がないのに答えてしまった件数(ハルシネーションが増えていないか)

この3つを分けて見るのがポイントです。全体の精度だけを見ていると、「検索は良くなったが生成が悪化した」といった相殺に気づけません。工程ごとに分けて測れば、どの変更が効いたのかがはっきりします。

そして、一箇所直すたびに測ること。まとめて何箇所も変えてから測ると、どれが効いてどれが逆効果だったのか分からなくなり、改善が振り出しに戻ります。

よくある落とし穴

  • いきなりプロンプトから直す:検索が崩れていると効果がありません。まず検索か生成かを切り分けます。
  • チャンクを文字数だけで切る:意味が途切れ検索精度が落ちます。文書構造・意味で分割します。
  • 「分からない」を許容しない:無理に答えさせるとハルシネーションが増えます。根拠がなければ答えない設計にします。
  • 一度に全部を変える:どの変更が効いたか分からなくなります。一箇所ずつ変えて検索結果を確認します。
  • 1回試した結果で判断する:出力は毎回揺れます。固定の質問セットで前後を比較しないと、改善したかは分かりません。

よくある質問

Q. RAGとファインチューニング、どちらを選ぶべきですか? A. 「最新・社内固有の情報を根拠に答えさせたい」ならRAGが向きます。ファインチューニングは口調や形式を学ばせるのに向き、知識の追加には不向きなことが多いです。多くの業務QAはまずRAGで始めるのが現実的です。

Q. 精度はどのくらいまで上げられますか? A. 用途と文書の質に依存し、一律の目標値はありません。重要なのは「答えられない質問に無理に答えない」設計です。曖昧な質問まで100%正解を目指すより、確実な範囲を確実に答え、範囲外は『分からない』と返すほうが、業務では信頼されます。

Q. どの工程から手をつけると効果が大きいですか? A. 多くの場合、まず検索(チャンク分割と検索結果の確認)です。生成側の調整は目立ちますが、検索が崩れていると効果が出ません。土台である検索を整えてから、生成の微調整に進むのが効率的です。


RAGの精度問題は、①検索か生成かを切り分ける ②検索が弱ければチャンク分割を見直す ③検索が正しければプロンプトを調整する、という順で切り分ければ、原因不明の迷路に入らずに対処できます。プロンプトからではなく、検索から。これが遠回りしない進め方です。

自社プロダクトへの生成AI・RAGの組み込みや精度改善の相談は、開発支援について相談するからお問い合わせください。