RAG の正解を10問中8問から10問にした3つの直し方

社内文書チャット(RAG)の答えが正しいかを、10問で確かめました。最初は8問が正解で、合格の基準ちょうどでした。原因を調べて3つ直したところ、10問とも正解になりました。調べ方と、直した順番ごとの効き目をまとめます。

まとめ:Claude Code で AWS に社内文書チャットを作る まとめ

確かめ方

  • 登録した文書は、架空の規程3つ(就業規則・経費精算規程・情報セキュリティ規程)
  • この3つから、答えがはっきり書いてある質問を10問作った(例:「コアタイムは何時から何時まで?」「PC を紛失したら何時間以内にどこへ報告?」)
  • 1問ごとに会話を新しくして、ブラウザの画面で質問した(前の質問の影響を避けるため)
  • 正解かどうかの案は Claude が出し、最後は私が判断した

症状:書いてあるのに「情報がない」と答える

外れた2問は、どちらも経費精算規程の質問でした。

質問文書に書いてあること答え
タクシーを使えるのはどんなとき?22時以降の帰宅、または荷物が多い場合(領収書が必要)「検索結果に利用条件の情報がない」
領収書がない3,000円未満の支出は?支払証明書で代用する「具体的な情報がない」と答えたうえで、一般論を紹介

2問目は出典に経費精算規程が付いていましたが、答えの中身は文書に基づいていませんでした。出典が付いていても、答えが文書どおりとは限りません。

原因:検索の段階で、答えの部分が見つかっていなかった

RAG は「① 質問に近い部分を文書から探す」「② 見つかった部分をもとに AI が答える」の2段階です。そこで Claude に、② の前の ① だけを10問で実行してもらい、上位5件に何が入っているかを調べました。

分かったことは3つです。

  1. 登録した覚えのない文書が入っていた。 GenU には AWS の利用ガイドの PDF が2つ(大きいほうは約46MB)、サンプルとして最初から入っていて、デプロイのときに自動で登録されていました
  2. 検索結果の大半が、その PDF だった。 タクシーの質問は、上位5件がすべて PDF で、規程は1件も入っていませんでした。正解した8問も、上位5件の大半は PDF でした
  3. 答え方の指示が空だった。 RAG チャットの初期の指示(システムプロンプト)は空で、「文書に無ければ無いと答える」といった指示がありませんでした

直し方3つと、それぞれの効き目

同じ10問で、1つ直すごとに確かめました。

状態正解外れた2問の様子
直す前8 / 10AWS の内容や一般論で答える
A. PDF を外す8 / 10「お答えできません」「情報がない」
A + B. 答え方を指示する8 / 10「登録された文書には記載がありません」(一般論は出なくなった)
A + B + C. 検索件数を増やす10 / 102問とも文書どおりに答え、出典も付いた

A. 関係のない文書を外す

サンプルの PDF 2つを、文書の置き場所(S3)から消して、取り込み直しました。GenU の中のサンプル文書も、自分の3つに差し替えました。次にデプロイし直したときに、PDF がまた登録されないようにするためです。

B. 答え方を指示する

RAG チャットの初期のシステムプロンプトに、次の3点を書きました(GenU の packages/web/src/prompts/claude.ts)。

  • 検索結果に書かれている内容だけを根拠にする
  • 書かれていなければ「登録された文書には記載がありません」と答える
  • 関係のない検索結果は使わない

これで、一般論や AWS の内容で答えることは止まりました。ただ、正解は増えませんでした。答えの部分が検索で見つからなければ、正しく答えようがないからです。

C. 検索件数を増やす

GenU の初期設定では、検索で取ってくる件数は5件です。これを50件にしました(packages/cdk/lambda/utils/bedrockKbApi.ts の numberOfResults)。

最初は30件で試しましたが、タクシーの質問は0件のままでした。PDF を外して文書が少なくなっても、件数が少ないと0〜4件しか返ってきませんでした。50件にすると、2問とも答えの部分が取れました。

S3 Vectors(検索用データの置き場所)は「だいたい近いもの」を探す方式なので、登録が少ないと取りこぼしが出るのではないかと考えています。これは私の推測で、公式の説明では確かめていません。

注意:同じ10問を何度も使った

直す作業の中で、同じ10問を何度も使いました。この10問に合わせた結果になっている可能性があります。別の質問でも確かめるつもりです。

最初からこう頼めばよかった

RAG の答えが外れる原因を調べてください。まだ直さないでください。
まず、答えを作る前の「検索」だけを実行して、上位に何の文書が入っているかを質問ごとに表にしてください。
登録した覚えのない文書が入っていないか、検索件数とシステムプロンプトの初期値も確認してください。
直す案は、1つずつ効き目を確かめられる順番で出してください。

前回:Windows から AWS にデプロイしてつまずいた4つ
次回:AWS の構築を Claude Code に任せるときの線引き

コメント

タイトルとURLをコピーしました