幻觉与可靠性:什么时候能信,怎么验证
幻觉不是 bug,是目标函数的必然结果
模型被训练成「输出最像正确答案的文本」,而不是「输出正确文本」。它内部没有一个真假校验环节。所以当它没有依据时,不会停下来,而是继续生成格式上最合理的内容——这就是幻觉。
理解这一点很重要:幻觉不是「偶尔出错」,而是它的工作方式本身。可靠性的全部工作,都是在它外面加检查。
什么时候最容易出问题
| 高风险 | 相对安全 |
|---|---|
| 精确数字、日期、版本号、法条编号 | 改写、摘要、语气调整 |
| 具体引用(论文、判例、API 名称) | 常见概念的通俗解释 |
| 长尾冷门知识(人名、小机构、地方规定) | 有明确上下文可依据的问答 |
| 时间敏感信息(现在怎样、最近发生什么) | 结构稳定的模板生成 |
| 多步链条中间的一步(错了会连锁) | 单步、可人工一眼核对的输出 |
引用类最危险:它编造的论文标题、法条、函数名,往往格式完美、看起来极可信,甚至能自圆其说。
自信不等于正确
模型的语气(「一定是」「据我所知」)与它的正确率没有稳定关系,这叫校准差。判断可靠性不能靠读它的语气,只能靠外部依据:
- 它有没有可核查的来源,来源里是否真有这句话;
- 换成另一种问法,答案是否一致;
- 关键数字/名称能否用搜索、数据库、代码执行验证。
实用的验证习惯
- 分级:把用途分成「错了无所谓」(草稿、灵感、内部检索)和「错了要负责」(对外内容、法务、医疗、财务)。后者必须有人核查或有工具核查,不能直接上线。
- 要出处,并抽查出处:不是要它「给出引用」就完事,而是抽查引用是否真实存在。
- 让它可核查:能要求它「只根据我给的资料回答,资料里没有就说不知道」——这能显著减少幻觉,代价是覆盖率下降。
- 拆步:多步任务逐步验证,而不是等最后一大段。中间步骤错了,后面再漂亮也没用。
- 交叉:关键结论换一个模型或换一种问法再问一次,分歧处就是需要人工介入处。
一个可用的心智模型
把 LLM 当成一个极能干、极爱面子、从不承认不知道的实习生:速度惊人、覆盖面广、格式漂亮,但你必须为每一份交付物指定核查方式。凡是「没人核查就直接发出去」的场景,都不该交给它。