跳转到主要内容

幻觉并非根本原因:生产环境 AI 的调试方法论

阅读需 1 分钟Tian PanTian Pan

当一名律师在联邦备案文件中引用不存在的法庭案例时,这一事件被广泛报道为“ChatGPT 产生了幻觉”。当一家咨询公司的政府报告中包含虚假脚注时,复盘报告写道“AI 伪造引文”。当一个医疗转录工具在医疗笔记中插入暴力语言时,解释仅仅是“模型产生了幻觉”。在每一个案例中,代价昂贵的失败都被归结为一个由三个词组成的根本原因,这使得修复变得不可能。

“模型产生了幻觉”在 AI 领域等同于在堆栈跟踪中写下“未知错误”。它描述了发生了什么,却没告诉你为什么发生或如何修复。每一次幻觉都有一个可诊断的原因——通常属于四个类别之一——且每个类别都需要不同的工程响应。理解这种区别的团队能够交付可以优雅降级的 AI 系统。而不理解的团队则在不断地通过提示词玩“打地鼠”游戏。

四个真实的根本原因

现代幻觉研究已经形成了一套对工程师直接有效的分类法。这些类别清晰地映射到你系统执行路径的不同环节,这意味着你可以独立地对它们进行检测,并在不触动模型的情况下修复它们。

检索失败(Retrieval failure) 是 RAG 系统中最常见的根本原因,也最容易诊断。你的检索器返回了实际上无法回答用户查询的文档——无论是由于查询与文档的语义不匹配、你所在领域的嵌入(embedding)质量问题,还是知识库过时。模型随后生成了听起来权威但缺乏依据的文本,因为它在缺乏相关证据的情况下补全了一个模式。其特征是,手动注入正确的文档就能让幻觉消失。模型本身并没有损坏。

上下文冲突(Conflicting context) 发生在你的检索流水线提取了相互矛盾的文档时,或者提取的事实与模型的参数化知识(即它在训练期间学到的内容)相冲突时。模型随后面临一个它并非为显式解决而设计的决策问题——它会挑选一个来源并自信地生成内容,而不会向调用者指出冲突。自我矛盾的输出——即模型在同一次回复中提出两个不相容的主张——就属于这一类。实体混淆也是如此,即模型将不同文档中两个名称相似的事物混为一谈。

提示词歧义(Prompt ambiguity) 是团队最常低估的根本原因。模糊的指令会产生理解间隙,模型会用统计学上最合理的后续内容来填补这个间隙——而这在事实层面可能是错误的。“描述 X 的现状”会诱发模型对它无法了解的现状产生幻觉。“总结公司取得的成就”在没有范围限制的情况下,会被编造的成就所填充。模型并不是在随机猜测;它正在做它被训练去做的事情,即在指令不明确的情况下生成流畅、符合主题的文本。

知识边界违规(Knowledge boundary violations) 是在模型实际认知的边缘发生的故障。训练截止日期是最明显的案例,但在实践中,问题更为隐蔽:模型经常在接近其知识边界时高估自己的自信度。一个训练到 2024 年初的模型不仅无法了解 2024 年中期的事件,它还会主动生成关于那个时期听起来很可信的错误信息,因为它有足够的上下文来生成流畅的文本,但没有足够的事实依据来保证准确性。罕见与常见关联的复合效应加剧了这一问题:模型看到的关于常见(有时是错误的)模式的文本比正确的罕见模式更多,于是它会倾向于向多数派产生幻觉。

一个正规的幻觉复盘报告是什么样的

好的和差的复盘报告之间的区别不在于洞察力,而在于检测工具(instrumentation)。只有在故障发生时记录了正确的数据,你才能进行根本原因分析。

任何 LLM 请求的最小生产环境追踪(trace)都应捕获:完整的提示词(包括系统消息)、所有检索到的文档及其检索评分、原始模型输出、可用的置信度评分,以及对于 Agent 系统而言完整的对话历史。没有这些,你就是在没有证据的情况下进行法医鉴定。

有了记录的追踪数据,调试工作流将遵循系统的执行路径:

从输入开始。用户的查询是否有歧义?一个理智的人读到它是否会产生多种解释?当任务需要事实检索时,提示词模板是否鼓励了推测(如“建议”、“想象”、“可能会”)?在你有意识地尝试以多种方式解释查询之前,提示词歧义通常是隐形的。

然后转向检索。检索到的文档是否真的包含了回答查询所需的信息?高检索评分并不意味着高相关性——你的嵌入模型可能学到的是浅层的表面相似性,而不是针对你特定领域的语义相关性。在发布任何 RAG 系统之前,请在留出的评估集上衡量检索的精确率(precision)和召回率(recall)。许多团队跳过了这一步,结果通过生产环境中的幻觉才发现了问题。

接着检查上下文一致性。检索到的文档是否相互矛盾?它们是否与模型可能从参数化知识中声称的内容相矛盾?如果你正在调试特定的故障,可以通过对相同上下文进行多次模型补全采样来测试这一点——高方差标志着上下文冲突或边界违规,而低方差则表明存在提示词歧义或检索失败。

最后,评估知识边界。该查询是否关于模型可靠知识范围之外的事件、事实或现状?这里的关键洞察是,模型无法可靠地自我报告其知识盲点——你必须通过针对训练分布边缘或之外的已知事实进行测试,从外部进行探测。

在用户看到之前进行检测

复盘很有用,但目标是在幻觉到达用户手中之前捕捉到它们。2025 年的生产系统会叠加多种检测方法,因为没有任何一种单一方法足够可靠。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

凌晨三点调试 AI:LLM 驱动系统的故障响应指南

500 错误有堆栈跟踪,而糟糕的生成结果有概率分布。本文介绍如何在 AI 事故毁掉你的一周之前,对其进行分类、调试和事后复盘。

insider
observability
阅读需 10 分钟

AI 事故复盘:当「模型导致的」成为根本原因

当故障具有随机性时,经典的五问分析法就会失效。本文介绍如何为 AI 事故撰写有价值的事后分析报告、在推理阶段应捕获哪些遥测数据,以及如何构建不止于「加强监控」的运行手册。

insider
ai-engineering
阅读需 10 分钟

当你的 AI 功能过时:生产环境中的知识切断与时间溯源

基于具有固定训练切断点模型构建的产品,会随着世界与训练数据的偏离而失效。本文将介绍如何检测由知识切断引起的故障、管理 RAG 的新鲜度,并在时间漂移演变为隐蔽的生产回归之前进行针对性设计。

insider
ai-engineering
阅读需 9 分钟

模型升级陷阱:基础模型更新如何静默破坏生产系统

基础模型更新通过行为漂移、拒绝模式改变以及 JSON 序列化不一致,静默地破坏了生产系统 —— 本文为你提供一份关于检测和安全迁移的实用指南。

insider
llm
阅读需 9 分钟

那些由于模型选择了不同的 Token 而无法复现的 Bug

重现一个 LLM bug 时看到它通过了,并不意味着 bug 消失了 —— 而是意味着你抽取到了不同的样本。当你的工具假设一切都是确定性的,该如何调试一个采样器。

insider
llm