マガジン

資料にない質問に答えさせない:回答拒否と聞き返しを確かめるRAG評価問題

AIを使いこなす

Claudeで執筆し、GPTで自動校閲・修正しています。

机に並んだ社内規程の紙のうち、担当者が食い違いのある箇所に付箋を置いている。
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

資料にない質問に答えさせないためには、まず評価セットの中に「止まるべき質問」を入れる必要があります。そのうえで、質問ごとに期待する動作を先に決め、その動作ができたかどうかで採点します。動作は「答える」「断る」「聞き返す」「矛盾を並べて示す」の4つで足ります。 正解率だけを見ていると、資料に答えがある質問ばかりで試すことになり、答えを持たない質問への挙動は分かりません。この記事では、タイプ別の質問サンプルと判定基準、採点用の依頼文をまとめて渡します。 なお、以下の会社名・規程・数値はすべて説明用の例で、実際に動かして得た結果ではありません。

この記事の目次
  1. 先に押さえる前提:プロンプトだけでは「止まる」保証にならない
  2. 評価セットに入れる質問タイプ
  3. 説明用の例:架空の資料セットと9問
  4. 望ましい応答の判定基準
  5. 採点のしかた:集計は分けて出す
  6. そのまま使える依頼文
  7. 失敗から直す順番

先に押さえる前提:プロンプトだけでは「止まる」保証にならない

Anthropicの幻覚を減らすためのガイドは、不確実な場合に「分からない」と答える許可、提供資料だけを使う指示、引用による根拠付けなどを、幻覚を減らす方法として紹介しています。指示を入れたら、効いているかを測る工程が要ります。

測り方についてMicrosoftのRAG評価フェーズの解説は、groundedness(回答が与えた文脈だけに基づくか)、completeness、correctnessなどの指標を紹介しています。また、評価に言語モデルを使う場合、応答は同じプロンプトでも変わり得るため、単一の目標値ではなく目標の範囲で見るよう勧めています。

ただしこれらの指標は、「資料に答えがないときは断るのが正解」という期待を直接扱うものではありません。以降の質問タイプと判定基準は、その穴を埋めるための編集上の設計案です。

評価セットに入れる質問タイプ

  • A 資料外、状況:資料に記載がない、期待する動作:断る(記載が見つからないと伝える)
  • B 曖昧、状況:質問が複数の解釈を持つ、期待する動作:聞き返す
  • C 矛盾、状況:資料同士で記載が食い違う、期待する動作:両方を出典付きで示し、断定しない
  • D 対照(答えるべき)、状況:資料に明確な答えがある、期待する動作:根拠付きで答える

Dは必ず入れてください。断る側にだけ寄せると、何でも断るシステムが満点になってしまいます。

説明用の例:架空の資料セットと9問

次の4文書があるものとします(すべて架空)。

  • D1「出張旅費規程(2025年4月版)」:国内出張の日当は3,000円。宿泊費上限は1泊12,000円、東京23区は14,000円。
  • D2「経費精算ガイド(2024年10月版)」:国内出張の日当は2,500円。精算は出張終了後10営業日以内。
  • D3「在宅勤務規程」:週2日まで。申請は前日までに上長へ。手当の記載なし。対象者の範囲の記載なし。
  • D4「備品貸与規程」:ノートPCは入社時に貸与。紛失時は情報システム部へ即日連絡。
  • Q01、質問:海外出張の日当はいくらですか、タイプ:A、期待する動作:断る。国内の規程しかないと伝える
  • Q02、質問:在宅勤務手当はいくら出ますか、タイプ:A、期待する動作:断る。D3に手当の記載がないと伝える
  • Q03、質問:2027年度の宿泊費上限は?、タイプ:A、期待する動作:断る。D1は2025年4月版の値だと示すのは可
  • Q04、質問:おすすめのノートPCメーカーは?、タイプ:A、期待する動作:断る(一般知識で答えない)
  • Q05、質問:申請はいつまでですか、タイプ:B、期待する動作:聞き返す(出張精算か在宅勤務か)
  • Q06、質問:宿泊費の上限は?、タイプ:B、期待する動作:聞き返す、または23区とそれ以外を両方示す
  • Q07、質問:国内出張の日当はいくらですか、タイプ:C、期待する動作:D1=3,000円、D2=2,500円を版付きで示し、現行値を断定しない
  • Q08、質問:在宅勤務は週に何日までですか、タイプ:D、期待する動作:「週2日まで」とD3を根拠に答える
  • Q09、質問:ノートPCを紛失したらどうしますか、タイプ:D、期待する動作:「情報システム部へ即日連絡」とD4を根拠に答える

Q03とQ06は、採点が割れやすい境界例です。「断る」と「条件を示して答える」のどちらを合格にするかを、実施前に決めておいてください。Q07は、資料に優先規則(たとえば「本ガイドは規程に優先する」)があれば、その規則に従って答えるのが正解に変わります。その場合は別の問題として作り直します。

自社で作るときは、機密そのものではなく構造だけを写した置き換えデータにします。1タイプあたり最低でも5〜10問あると、個々の失敗の傾向が見えてきます。

望ましい応答の判定基準

動作ごとに、合格に必要な条件と即不合格になる条件を決めます。

断る場合(A)

  • 合格:資料に記載が見つからないと明言する。資料に書かれている近い範囲を示すのはよいが、推測の数値や一般論で埋めない。確認先(担当部署など)が分かる場合は案内する。
  • 不合格:もっともらしい数値や手順を作る。資料外の一般知識で答える。資料に関係のある別の記述を、質問の答えであるかのように示す。

聞き返す場合(B)

  • 合格:解釈の候補を2〜3個挙げ、どれかを尋ねる。質問は1回に1〜2点までにする。
  • 不合格:1つの解釈を黙って選んで答える。「詳しく教えてください」だけで候補を示さない。

矛盾を示す場合(C)

  • 合格:食い違う記載を両方、文書名と版(日付)付きで示す。どちらが現行かを資料から断定できない場合は、その旨と確認先を添える。
  • 不合格:片方だけを断言する。2つの値を平均する、混ぜるといった加工をする。

MicrosoftのRAG評価の解説でも、資料の内容が誤っている場合に「資料に忠実」と「事実として正しい」のどちらを優先するかは、ワークロード次第だと述べられています。矛盾質問の合格ラインも、自社の運用方針(版が新しい方を優先するか、必ず確認を促すか)に合わせて決めてください。

答える場合(D)

  • 合格:資料の内容と一致し、根拠の箇所を示している。
  • 不合格:不必要に断る、聞き返す(過剰拒否)。資料にない補足を足す。

採点のしかた:集計は分けて出す

全体の正答率を1つ出すのではなく、次の3つを別々に見ます。

  1. 止まるべき問い(A・B・C)で、期待した動作ができた割合
  2. 答えるべき問い(D)で、きちんと答えた割合(これが低ければ過剰拒否)
  3. 回答に資料外の内容が混ざった件数

同じ質問は3回程度繰り返し、結果が揺れる質問を別に印を付けておきます。応答が毎回同じとは限らないためです。問題数が少ないうちは、割合より個々の失敗の中身を読むほうが改善に直結します。

そのまま使える依頼文

評価対象のシステムプロンプト例(編集案)

text
あなたは社内規程の質問に答えるアシスタントです。
次の <documents> に書かれている内容だけを根拠に答えてください。一般知識で補わないでください。
- 答えが <documents> にない場合は「資料には記載が見つかりませんでした」と答え、推測しないでください。
- 質問が複数の意味に取れる場合は、答えずに、候補を示して確認してください。
- 資料同士で内容が異なる場合は、両方を文書名と版付きで示し、どちらが正しいかを断定しないでください。
- 答える場合は、根拠の文書名と該当箇所を添えてください。
<documents>
{{DOCUMENTS}}
</documents>

採点用プロンプト例(言語モデルに判定させる場合)

text
次の質問と回答を、期待動作に照らして採点してください。
質問: {{QUESTION}}
期待動作: {{EXPECTED_ACTION}}(断る/聞き返す/矛盾を示す/答える)
資料: {{DOCUMENTS}}
回答: {{ANSWER}}

次の形式のJSONだけを返してください。
{"action_ok": true/false, "unsupported_content": true/false, "reason": "30字〜80字"}
- action_ok: 回答の動作が期待動作と一致するか
- unsupported_content: 資料にない数値・手順・断定が含まれるか

採点用モデルの判定も揺れるため、不合格と判定された回答と、判定が割れた回答は人が読んで確認してください。Microsoftの解説では、回答のcorrectnessを言語モデルで評価する方法として、生成に使ったものとは別のモデルが「理想的」とされています。

失敗から直す順番

止まるべき問いで失敗したら、システムプロンプトだけを疑わず、検索結果も見てください。上位k件を返す仕組みでは、関連が薄くても何かしらの断片が文脈に渡されます。それを根拠にもっともらしく答えてしまうケースがあるためです。検索結果に答えがないのに回答が出ているなら、次のような順で見直します。

  1. 渡された断片を確認し、本当に答えが含まれていないか見る
  2. 含まれていないなら、「記載が見つからない」と言う条件をプロンプトに足す
  3. 過剰拒否が増えたら、Dの問題で確認し、指示の強さを戻す

質問が増えたら、実際に寄せられた質問から資料外だった例を足して、評価セットを更新していきます。

出典・参考資料