3行でいうと

  • Anthropicの文書は、基本の3手として、分からないと言う許可、逐語引用、主張ごとの引用による検証を挙げています。
  • 同じ文書は、これらは幻覚を大きく減らすが、なくしはしないので、重要な情報は必ず確かめるよう書いています。
  • Anthropicの引用機能は、答えが提供した文書の位置を指すことを保証しますが、引用が主張を支えているかは別の確認が要ります。
  • 評価の側が「拒否」に点を与えないと、AIは当て推量を選びやすくなる、と論文は述べています。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。

先に結論

前提:なぜ起きるのか

ハルシネーションは、AIが事実と違う内容を、もっともらしく書くことです。OpenAIとジョージア工科大学の研究者による論文「Why Language Models Hallucinate」(arXiv 2509.04664)は、2つの原因を述べています。

見立てです。AIが「分かりません」と言いにくいのは、指示で拒否を許していないことと、評価が拒否に点を与えないことの両方が関わっているのだと思います。以降の設計は、この点を踏まえています。

設計1:資料を渡し、外部知識を制限する

Anthropicの文書の「External knowledge restriction(外部知識の制限)」は、提供した文書の情報だけを使い、AI自身の一般知識を使わないよう指示する方法です。RAG(資料を探してからAIに答えさせる方式)では、これが土台になります。

OpenAIの安全に関する文書にも、近い考え方があります。検証済みの資料から答えを返せるなら、新しく生成した文章よりも安全なことがあり、例として、質問に答える代わりに、最も合う既存のサポート記事へ案内する方法を挙げています。

設計2:指示で拒否と引用を求める

Anthropicの文書は、基本の3つの手を挙げています。

手 文書の説明 使う場面
分からないと言う許可 不確かなら認めてよい、と明示する。「偽の情報を大きく減らせる」と書かれている すべて
逐語引用で根拠づけ 長い文書(2万トークン超)では、先に文書から一字一句の引用を抜き出させ、その引用だけで分析させる 長い資料の分析
引用による検証 主張ごとに根拠の引用を付けさせる。後から主張ごとに裏づけの引用を探させ、見つからなければ撤回させる 文書の作成・要約

「長い文書(2万トークン超)」の数字は、Anthropicの文書の記述です。トークンは、AIが文章を数える単位です。

指示文の書き方の例(僕らが組んだ例)

次は、Anthropicの文書の考え方を元に、僕らが組んだ指示文の例です。公式文書そのままではなく、動かして確かめてもいません。

  • 資料は<documents>の中にあるものだけを使う。AI自身の知識は使わない。
  • 手順1:質問に関係する箇所を、一字一句そのまま、番号付きで抜き出す。見つからなければ「関係する引用なし」と書く。
  • 手順2:その引用だけを根拠に答える。主張ごとに、引用の番号を付ける。
  • 引用が足りず答えられない部分は、「資料からは分かりません」と書く。推測で埋めない。

Anthropicの文書の例は、このほかに、「下書きの後で各主張に裏づけの引用を探し、見つからない主張は削除して、削除した位置に空の[]を残す」という書き方も示しています。

見立てです。「分からないと言う許可」だけを入れると、答えられる質問まで拒否しすぎることがあると思います。拒否の割合も、評価で数えておくと安全です(後述)。

設計3:API の引用機能を使う

Anthropicには、プロンプトで引用を頼む方法とは別に、API側の引用機能(Citations)があります。文書にcitations: enabledを指定すると、答えの各部分に、元の文書の位置が付きます。公式文書の説明です。

見立てです。「参照が有効」と「その引用が主張を本当に支えている」は別の話です。前者は仕組みで保証されますが、後者は、人間か別の検証で確かめる必要があると思います。文書も、検証を勧めています。

OpenAIのファイル検索(File search)は、答えの文章にfile_citationという注記(annotation)を付けて返します。注記には、ファイルのIDとファイル名、本文中の位置が入ります。検索で取れた資料の中身は、既定では返ってこず、includeで指定すると含められる、と書かれています。

設計4:出力を検証する

Anthropicの文書の「高度な手法」には、次の3つがあります。

学術的な対応する研究もあります。

費用は増えます。僕らの計算です。同じ質問をN回実行する方法は、出力の費用がおよそN倍になります(入力も含めて同じ設定で実行する場合)。検証の一手を追加する方法は、少なくとも1回分の呼び出しが増えます。回数を増やすほど確実になる、という保証もありません。

運用:人間の確認と、評価に拒否を入れる

OpenAIの安全に関する文書は、可能な限り、出力が実際に使われる前に人間が確認するよう勧めています。高リスクの分野とコード生成では特に重要としています。確認する人が、元の資料にすぐ戻れる(例:要約なら元のノートに簡単に当たれる)ようにしておくことも書かれています。

評価(このシリーズの評価の記事を参照)の側にも設計が要ります。前述の論文は、評価の指示に信頼度の目標を書く案を出しています。例は、「自信がtを超えるときだけ答えよ。間違いはt/(1−t)点の減点、正解は1点、『分からない』は0点」です。

僕らの計算です。この式で、答えたほうが得になる境目は、答えが当たる確率がtを超えるときです。

t 間違いの減点 答えると得になる確率
0.5 1点 50%超
0.9 9点 90%超

なお、論文の本文はt=0.75の減点を「2」としていますが、式から計算すると3になります。論文の誤記の可能性があり、確認できていません。この表では載せていません。

見立てです。自分の評価セットに、「資料から答えられない質問」を一定割合入れ、拒否したら正解、当て推量で答えたら不正解とするのが、実用的だと思います。拒否しすぎ(答えられる質問まで拒否する)も数えて、両方を見ます。

よくあるつまずき

気をつけること

出典

更新履歴