讓模型承認自己不知道:降低幻覺的提示設計
模型預設會傾向給出答案。要它回「不知道」,必須明確給出這條路,而且讓這條路夠好走。
幻覺的一大來源是:提示裡沒有「不知道」這個合法選項。模型被要求回答,就一定會生出東西。
明確提供退場選項
限制:
- 只根據 <context> 內的資訊回答。
- 若 <context> 沒有足夠資訊,answer 一律填 "insufficient_context",不得推測。
- 回答時必須在 evidence 欄位引用 <context> 的原文片段。要求引用原文
強制引用是很有效的抑制手段:模型必須找到可引用的句子才能作答,找不到時就自然會走向 insufficient。而且引用欄位讓你能程式化驗證——檢查 evidence 是否真的出現在 context 裡。
def verify(answer, context):
ev = answer.get('evidence', '')
return bool(ev) and ev.strip()[:40] in context別懲罰誠實
如果你的評測把「不知道」一律算錯,模型(以及調提示的人)就會被推往亂猜。評測設計上應該區分三種結果:答對、答錯、誠實棄答,並讓答錯的代價高於棄答。
把
insufficient_context 的比例當成監控指標。這個數字突然上升,通常代表檢索端出了問題,而不是模型變笨。