“幻觉”指大模型生成看似合理、实则错误或无中生有的内容:编造不存在的论文、给出错误的法规条款、虚构一个产品功能。它是大模型落地中最常见、也最难彻底消除的问题。好消息是,虽然无法从根本上杜绝,但通过理解成因并在工程上层层设防,可以把它的影响控制在可接受范围内。

幻觉的三个主要来源

1. 训练目标是“像”,不是“对”

大语言模型的预训练目标是预测下一个 Token。它学到的是语言和知识的统计规律,而不是一个可查询的事实数据库。当它面对不确定的问题时,最“像”正确答案的输出,可能恰恰是一个格式完美、内容虚构的回答。

2. 知识边界模糊

模型的知识来自训练数据,存在截止时间,也存在覆盖盲区。对于冷门领域、最新事件或企业内部信息,模型本来就不知道,但它往往不会主动说“不知道”。后训练阶段虽然会教模型承认无知,但效果因模型和场景而异。

3. 解码过程会累积错误

模型逐个生成 Token,前面一旦出现偏差,后续内容会为了保持连贯而“顺着错下去”。采样温度过高也会增加生成低概率、不准确内容的机会,参数调节可参考采样参数实用指南。

哪些场景最容易出现幻觉

  • 要求提供具体数字、日期、引用来源、链接;
  • 询问非常小众或最新的信息;
  • 问题本身包含错误前提,比如“请解释某个不存在的政策”;
  • 长链条推理,中间一步出错导致结论错误;
  • 要求模型“一定给出答案”,没有允许它拒答的出口。

工程上的缓解方法

用检索提供依据

对于事实性问题,最有效的方法通常是检索增强生成(RAG):先从可信资料中找到相关内容,再让模型基于这些内容作答。但要注意,RAG 并不是万能药,如果检索到的资料本身有误或过时,模型同样会被带偏,这一点在 RAG 评测正在变难中有专门讨论。

允许并鼓励“不知道”

在系统提示中明确:资料中没有的信息要直接说明,不要推测。同时在产品上把“未找到可靠依据”设计为一种正常结果,而不是失败。

要求引用并自动校验

让模型在回答中标注依据来自哪段资料,再用程序检查这些引用是否真实存在、内容是否匹配。对于链接、文献、法规编号等,必须做存在性校验后再展示给用户。

结构化输出与规则检查

把开放式回答改为结构化字段,例如“结论、依据、置信度、待核实项”,再对关键字段做规则校验,比如日期格式、数值范围、枚举值,能拦住相当一部分明显错误。

把高风险环节交给工具

计算交给计算器,查询交给数据库,代码交给执行环境验证。模型负责理解意图和组织语言,确定性的工作交给确定性的系统。

人工复核关键输出

在医疗、法律、金融等高风险场景,模型输出应作为草稿而不是最终结论,并设计清晰的人工复核流程。

如何衡量幻觉是否改善

不要凭感觉判断。可以构建一个包含易错问题的评测集,覆盖无答案问题、错误前提问题和需要精确数字的问题,定期测试不同模型和提示词版本的表现,方法可参考如何构建评测集。

小结

幻觉源于大模型的工作原理,不会因为模型变大就自动消失。可靠的系统靠的是组合拳:用检索提供依据,用提示允许拒答,用程序校验引用和格式,用工具处理确定性任务,再加上必要的人工复核。