LLMのハルシネーションを減らす方法:実践的な7つの対策
ハルシネーションとは、LLM が事実と異なる内容を、もっともらしく生成してしまう現象です。 完全にゼロにはできませんが、設計次第で大きく減らせます。この記事では実践的な対策を紹介します。
ハルシネーションとは
LLM は「次に来そうな言葉」を確率的に生成します。そのため、知らないことでも自信ありげに答えてしまうことがあります。特に、最新情報・固有名詞・数値・専門知識で起きやすい傾向があります。
減らすための対策
1. 根拠を与える(RAG)
最も効果的なのは、答えの根拠となる情報をプロンプトに含めることです。検索やデータベースから関連文書を取り出して渡す「RAG」により、モデルは記憶ではなく与えられた事実に基づいて答えられます。
2. 「分からない」を許可する
「分からない場合は分からないと答えてください」と明示するだけで、無理な断定が減ります。
3. 適切なモデルを選ぶ
タスクによってハルシネーションの起きやすさは異なります。事実重視の用途では、その傾向が低いとされるモデルを選ぶのも有効です。
4. 出力を構造化・検証する
JSON など決まった形式で出力させ、プログラム側で検証すれば、誤りを早期に弾けます。
5. 複数モデルで相互検証する
同じ質問を複数のモデルに投げて突き合わせると、片方の誤りに気づきやすくなります。重要な判断ほど有効です。
6. 温度(temperature)を下げる
創造性より正確性が欲しいタスクでは、出力のばらつきを抑える設定が向きます(モデルにより対応は異なります)。
7. 人間の確認を挟む
高リスクな用途では、最終確認を人間が行う設計にします。
実際に:根拠を与える
curl https://api.fastmetal.ai/v1/chat/completions \
-H "Authorization: Bearer $FASTMETAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic-claude-opus-5",
"messages": [
{"role": "system", "content": "以下の資料だけを根拠に回答し、資料にないことは「資料に記載なし」と答えてください。"},
{"role": "user", "content": "資料:〜〜〜\n\n質問:〜〜〜"}
]
}'
FastMetal の活用
「5. 複数モデルで相互検証」は、FastMetal と相性が良い対策です。一つのAPIキーで model を差し替えるだけで、複数モデルに同じ質問を投げて突き合わせられます。契約を分ける必要はありません。
まとめ
ハルシネーションは、根拠の付与・プロンプト設計・検証ステップの組み合わせで大きく減らせます。特に複数モデルでの相互検証は効果的で、FastMetal なら一つのキーで手軽に試せます。対応モデルはモデルカタログをご覧ください。