本文へスキップ
BecomeCoder

RAGコース · 第4章 生成につなぐ · レッスン16

出典を示す・幻覚を減らす ― プロンプト設計

ローカル実施

導入

検索を挟んでいても、LLMは平気で幻覚(hallucination、もっともらしい嘘)を起こします。検索結果が的外れだったり、モデルがせっかく渡した文脈を無視して自分の知識で答えてしまったりするからです。プロンプトの設計を工夫することで、この幻覚をかなり減らせます。

説明

代表的な工夫を5つ挙げます。

  • ①「contextのみで答える/なければ知らないと言う」を明示する。 レッスン14で使った指示です。これが土台になります。
  • ②各文書に番号やIDを振り、「出典[1]のように引用させる」。 どの一文がどの文書に基づくかをLLM自身に示させると、根拠のない主張が減りますし、ユーザーが元の文書を確認しやすくなります。
  • ③contextを質問より前に置く。 先に文脈を読ませ、最後に質問を提示する順番にすると、LLMが文脈を踏まえて答えやすくなります(レッスン14のプロンプトも、この順番になっています)。
  • ④温度(temperature)を低めにする。 温度はLLMの出力のばらつき具合を決めるパラメータです。事実に基づく回答がほしいRAGでは、創造性より正確さを優先し、温度を低めに設定するのが基本です。
  • ⑤根拠が薄いときは「確信が持てない」と言わせる。 「絶対に答えを出せ」ではなく、「自信がなければそう言ってよい」と許可しておくと、無理にそれらしい答えをでっち上げる動きを防げます。

②の「出典を引用させる」プロンプトの例を見てみましょう。

You are a helpful assistant. Answer using ONLY the numbered context below.
Cite the source number in brackets like [1] after each claim.
If the context does not contain the answer, say "I don't know".

Context:
[1] Mount Fuji is 3776 meters tall.
[2] Mount Fuji is located on Honshu island in Japan.

Question: How tall is Mount Fuji, and where is it?
Answer:

この形式でLLMに渡すと、たとえば "Mount Fuji is 3776 meters tall [1], located on Honshu island in Japan [2]." のように、どの文がどの出典に基づくかを明示した回答が返ってきやすくなります。ユーザー側は [1] [2] を見れば元の文書に立ち返って裏取りできるので、回答への信頼性が上がります。

まとめ

  • 幻覚を減らす鍵は、プロンプトの設計にある。
  • 「contextのみで答える」「出典番号を引用させる」「contextを先に置く」「温度を下げる」「自信がなければそう言わせる」の5つが代表的な工夫。
  • 出典つきの回答は、ユーザーが元の文書を確認できるという意味でも実務上の価値が高い。