ハルシネーション (もっともらしい誤り) に、どう手当てしますか

RAG で根拠を渡して出典を示す、決まった形 (JSON スキーマ) で出させて値をコードで確かめる、間違いが命取りになる場面では AI に最後の判断をさせない、と答える問い。

答えてみる

面接官に「ハルシネーション (もっともらしい誤り) に、どう手当てしますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

声に出して答えた人は「書かずに答えを見る」で開けます。

解説を読む

聞かれ方から関連するコースまで、この問いの解説を全部ここに置いています。

こう聞かれます

  • 「ハルシネーションに、どう手当てしますか」
  • 「AI が存在しない情報を答えてしまったら、どうしますか」
  • 「AI に金額の計算を任せてよいですか」

面接官が見ている点

  • 無くせる物ではない、という前提に立てているか
  • 根拠を渡す、形を固める、コードで確かめる、人が決める、と手を重ねられるか
  • 間違いの重さで、AI に任せる範囲を変えられるか

短い答え

  • ハルシネーションは無くせない前提で、RAG で根拠の文書を渡し、答えに出典を示して、利用者が確かめられるようにします。
  • 出力は決まった形 (JSON スキーマ) で出させ、値が正しい範囲か、根拠にある値かをコードで確かめます。
  • 医療や金額のように間違いが命取りになる場面では、AI に最後の判断をさせず、人や確かなプログラムが決めます。

少し詳しい答え

なぜ起きるか

LLM は、それまでの文に続きそうな言葉を選んで文を作ります。正しいかどうかを確かめて書いているわけではないので、知らないことでも、もっともらしい文を作ることがあります。これがハルシネーションです。

重ねる手当て

  • 根拠を渡す RAG で関係する文書を渡し、「渡した文書だけを根拠に答える」「載っていなければ分からないと言う」と指示します
  • 出典を示すどの文書のどこを根拠にしたかを答えに付けさせ、画面にも出します。利用者が元を確かめられます
  • 形を固める自由な文ではなく、決まった欄の JSON で出させます。形が決まると、コードで確かめられます
  • コードで確かめる出た値が範囲内か、根拠の文書に本当にある値か、計算が合うかを、プログラムで確かめます

TypeScript

type Answer = {
  answer: string;
  sources: string[];   // 根拠にした文書の番号
  amountYen: number | null;
};

function check(a: Answer, docIds: string[]): boolean {
  // 渡していない文書を出典にしていないか
  const ok = a.sources.every((id) => docIds.includes(id));
  // 金額は AI に計算させず、別のプログラムで出した値と比べる
  return ok && (a.amountYen === null || a.amountYen >= 0);
}

任せる範囲を決める

間違えても害が小さい作業 (下書き、要約、案出し) は、AI に任せやすい作業です。お金、医療、法律のように間違いが重い作業では、AI は材料を集めて案を出す役にとどめ、最後は人か、決まった計算のプログラムが決めます。

トレードオフ

「分からなければ答えない」と強く指示すると、答えられる質問まで断ることが増えます。確かめの処理や人の確認を増やすほど、遅く、費用もかかります。評価データで、間違いの割合と、断りすぎの割合の両方を測りながら釣り合いを取ります。

よくある間違い

  • プロンプトで「嘘をつかないで」と頼めば直ると言う減ることはあっても、無くなりません。仕組みで確かめます
  • RAG を入れれば起きないと言う文書があっても読み違えることがあります。出典と確かめを組み合わせます
  • 計算を LLM に任せる金額や数の計算はプログラムで出し、LLM には説明だけを任せます

深掘りの問い

  • 「ハルシネーションの割合は、どう測りますか」評価データで、根拠に無いことを言った割合を数える、と答えます
  • 「利用者にはどう見せますか」出典を並べる、AI の答えであることを明かす、確かめ方を案内する、と答えます
  • 「答えられない質問が来たら」分からないと伝え、人の窓口や公式の案内へ渡す、と答えます

確認日 2026年10月24日

技術面接問題の一覧へ戻る