幻觉:智能体最顽固的问题
如果只能用一个词概括当前 AI 智能体最致命的问题,行业里多数人会选"幻觉"(Hallucination)。通用大模型写诗写周报文采斐然,但让它分析"上季度 A 产品线毛利率下降的原因",它可能编造一串子虚乌有的数据,还附上看起来很专业的百分比。更糟糕的是——语气越自信,越难被非专业用户识破。
Fiddler AI 2026 年的报告给出了一个残酷的数字:生产环境智能体失败率 70%-95%,幻觉是头号杀手。BetterYeah 的调研发现,68% 的企业在 AI 落地中遭遇幻觉问题,其中 32% 因错误累积导致系统性风险。
这不是"模型还不够聪明"的问题。这是智能体的结构性挑战。
从单步错误到幻觉累加
单步幻觉:模型不确定时仍"自信输出"
LLM 的核心训练目标是"合理续写",而不是"如实回答"。当训练数据中缺少相关信息时,模型不会说"我不知道"——它会生成一段看起来连贯但实际上没有事实支撑的文字。
这是因为:
- 训练数据偏差:互联网文本中,自信断言远多于谦虚声明"我不确定"
- 采样机制:模型采样概率最高的 token 序列,不受事实约束
- 缺乏不确定性建模:模型内部没有显式的"置信度"信号传递给输出层
结果:模型在信息不足时的行为是"编造",而非"沉默"。
多步累加:小偏差滚雪球
当智能体执行多步任务时,单步幻觉的破坏力被指数放大。看一个典型场景:
步骤 1:检索客户信息 → 幻觉:编造了不存在的客户 ID
步骤 2:用该 ID 查询订单 → 返回空结果
步骤 3:智能体"推断"该客户是新客户 → 编造注册时间
步骤 4:基于虚假注册时间做客户画像分析 → 输出错误结论
步骤 5:基于错误结论撰写运营建议 → 决策偏离
每一步都"合乎逻辑",但起点就是一个虚构的事实。这就是幻觉累加效应——错误在推理链中不断传播和放大,最终输出和现实南辕北辙。
2025 年 Q1 某金融机构的案例就是典型:智能体在财报分析中第一次幻觉了一个营收数字,后续所有财务比率、趋势判断、投资建议全部基于这个错误数字展开。表面看报告专业完整,实际结论完全失真。
为什么传统 NLP 时代的幻觉没那么致命?
传统 QA 系统也幻觉,但影响范围有限——一次问答的错误不影响下一次。智能体截然不同:它是一个持续运行的闭环系统,前一步的输出是后一步的输入。一个幻觉 token 就像生物学中的基因突变,在后续"转录"过程中被不断放大。
三类幻觉的根源
1. 事实性幻觉
模型编造不存在的事实。典型表现:
- 编造学术引用(伪造论文标题、作者、发表年份)
- 虚构统计数据(“根据 2025 年 Gartner 报告,78% 的企业…")
- 捏造历史事件或人物
根源:训练数据中该事实缺失,但模型基于语义相邻性"补全"了它认为最可能的答案。
2. 逻辑性幻觉
推理过程看似自洽,但基于错误前提或跳跃式推理。例如:
“因为 A 产品销量下降 15%,所以必须砍掉 A 产品线。”
看似合理,但忽略了 A 产品可能是高毛利产品、销量下降是短期波动、砍掉会影响整体组合等十几个变量。
根源:模型擅长模式匹配但不擅长因果推理。“相关性 ≠ 因果性"这个人类都需要反复提醒的原则,模型更难内化。
3. 一致性幻觉
模型对同一问题在不同上下文中给出矛盾回答,但每次都自信满满。
根源:模型没有持久的世界模型。每个推理上下文是相对独立的,缺乏跨会话的一致性约束。
对策:从治标到治本
第一层:检索锚定(RAG)
思路:不让模型自由发挥,先检索事实,再基于事实生成。
- 基础 RAG:查询 → 向量检索 → Top-K 文档 → 拼接到 prompt → 生成
- 高级 RAG:多路召回(向量 + BM25 + 知识图谱)→ 重排序 → 上下文压缩 → 生成
有效场景:知识库问答、政策查询、技术文档检索
局限:RAG 只能减少"无中生有"型幻觉,无法解决推理错误。如果检索到的文档本身就包含错误,幻觉反而会被"锚定"到错误事实上。
第二层:结构化输出约束
思路:通过 JSON Schema、函数签名等方式约束输出格式,减少模型"自由发挥"的空间。
# 不约束:模型可能在任何字段上幻觉
prompt = "分析这个客户的情况"
# 约束后:幻觉空间被压缩到特定字段
schema = {
"customer_id": "string, must match pattern ^CUST-[0-9]{6}$",
"purchase_count": "integer, derived from order_list length",
"risk_level": "enum: [low, medium, high]"
}
效果:格式幻觉大幅减少,但内容幻觉(在合法字段内编造值)仍然存在。
第三层:分步验证(Guardrail)
思路:在智能体的每一步输出后增加校验节点,不符合条件就拦截。
[LLM 输出] → [事实校验:与知识库交叉比对] → [逻辑校验:推理链是否自洽]
↓ ↓
通过 → 下一步 拦截 → 重试或人工介入
实现方式:
- 规则校验:正则匹配、枚举值、数值范围
- 交叉验证:用另一个 LLM 或工具独立验证关键结论
- 置信度评估:模型自我评估答案的可靠性(calibration)
局限:增加延迟和成本。每个验证节点都是一次额外推理,但这是减少幻觉的最直接手段。
第四层:不确定性表达
思路:让模型学会说"我不知道”。
- 校准训练(Calibration):通过少量标注数据训练模型识别自身知识边界
- 置信度阈值:设置最低置信度,低于阈值时输出"无法确定”
- 拒绝回答机制:对于高风险领域(医疗、法律),默认拒绝 + 人工确认
目前主板的商业模型已经在这方面有显著进步——说"我不知道"的频率比一年前高了很多。但在智能体场景中,模型往往被包装成"全能助手"的产品形态,用户期望的是答案而非谦逊。
实战建议
- 高风险场景必须加 RAG:不依赖模型记忆,用检索锚定事实
- 多步任务必须加检查点:每 3-5 步插入事实校验,阻断幻觉传播链
- 输出后续处理:关键数据字段做自动交叉验证,不要让幻觉数据直接写入数据库
- 用户教育:让使用者理解智能体 ≠ 搜索引擎,输出需要人工审核
- 监控幻觉率:上线后持续采样输出做人工评审,量化幻觉率趋势
小结
幻觉不是 bug,是 LLM 架构的 feature——模型被训练为"合理续写",而我们期望它"如实回答"。这个错位在单轮对话中还可控,在多步智能体中就变成了系统性风险。
完整的解决方案不会来自单一技术(RAG 不够,Guardrail 不够,Calibration 也不够),而是多层防御的组合:检索锚定减少无中生有 → 结构化约束压缩幻觉空间 → 分步验证阻断传播 → 不确定性表达守住底线。
下一篇文章,我们来聊智能体的第二大问题:工具调用失败——当智能体的"手"不听使唤时会发生什么。