幻觉不是"故障"
先说一个容易被忽略的前提:语言模型的训练目标是预测下一个词,而不是"查证事实"。它学到的是"在这个上下文里,什么样的续写最像人写的"。
在这个目标下,生成一段"读起来完全合理、但事实不对"的内容,是机制的副产品,而不是实现缺陷。理解这一点,后面的缓解手段才有意义——它们都是在"合理"和"真实"之间补上约束。
三个主要来源
来源一:训练目标不区分"合理"与"真实"。模型优化的是像不像,而不是真不真。当它不知道答案时,最"像"的续写往往就是编一个。
来源二:知识的覆盖与时效有限。训练数据里没有的事,模型没有可靠依据;训练之后发生的事,它更无从知晓。这两类问题靠提示很难根治,只能靠外部信息补。
来源三:提示与解码带来的压力。如果问题预设了答案(“为什么某某是错的”),模型容易顺着预设答下去;如果温度偏高、长尾候选参与采样,偏离事实的概率也会上升。
工程上的四类缓解手段
| 手段 | 做法 | 主要作用 | 局限 |
|---|---|---|---|
| 检索增强 | 先查资料,再让模型基于资料作答 | 补上知识覆盖与时效 | 依赖检索质量,查不到仍然会编 |
| 强制引用 | 要求答案附带来源,并核对 | 让错误可被追溯与验证 | 引用本身也可能被张冠李戴 |
| 输出后校验 | 用规则或第二个模型检查关键事实 | 拦截明显错误 | 增加延迟与成本,且有漏判 |
| 允许拒答 | 明确告诉模型"不知道就说不知道" | 把编造转为可接受的降级 | 拒答率过高会损害可用性 |
四类手段不是选一个,而是按场景叠:检索保证有依据,引用保证可追溯,校验保证可拦截,拒答保证兜底。
三个常见误解
误解一:换个更强的模型就没有幻觉。更强的模型通常更少犯低级错误,但生成机制没变。只要目标是"预测下一个词",幻觉就不会归零。
误解二:幻觉都是编造。还有一种更隐蔽的情况:结论对,但依据错、来源错、数字错。这类错误更难被发现,也更值得警惕。
误解三:把幻觉率当成唯一指标。过度追求低幻觉,最省事的做法是让模型少说——但"什么都不说"同样是没有价值。用可用性换来的低幻觉,不一定是划算的。
一套可落地的组合
- 能查就查:把可检索的事实类问题先交给检索,而不是让模型凭记忆答
- 要来源:要求给出依据,并让依据可被点开、可被人工核对
- 可降级:为"不确定"设计明确的输出形态,而不是逼模型硬答
- 持续抽样:上线后定期抽检真实问答,按失败类型分类,而不是只看一个总分
收尾
幻觉的根不在某一次调用,而在"生成合理文本"这个目标本身。工程上能做的是在生成之后补上约束链条:让答案有依据、让依据可追溯、让错误可拦截、让不确定可以坦白。把这四件事做扎实,比反复换模型更有效。