Smarter Models Still Hallucinate: Evidence Gates for Production RAG Agents
更聪明的模型仍会幻觉。模型能力提升可以改善平均推理质量,却不会把概率生成器变成事实数据库,也不会自动建立业务答案的发布边界。 因此,生产系统不能把事实可靠性寄托在某个模型版本上;它必须假设任何模型都可能在证据不足时生成“…
一次真实的电商客服事故验证了这个判断:模型拿到一个区域名、一栋大厦名和几段关于自提的弱相关知识,便补齐了街道、门牌、楼层、营业时间与服务承诺。升级到更强模型后,关闭事实闸门的消融测试仍只通过 3/9。最终有效的修复不是继续换模型,也不是为地址、银行卡或品牌关系编写黑名单,而是建立一个单调用 Evidence Gate:让模型显式列出回答所需事实、直接证据和未决项,再由运行时只发布通过闸门的分支。
这项实践得到的核心经验是:模型升级提高能力上限,运行时证据契约决定事实底线。
1. Intelligence Is Not a Reliability Contract
“模型更聪明”与“答案有证据”是两个不同命题。
大模型擅长把不完整上下文组织成连贯答案。上下文越接近正确答案,它的补全往往越自然;但在高风险业务场景中,这恰恰构成危险。一个完全离谱的回答容易被发现,夹在真实区域、真实建筑物和合理服务流程之间的虚构细节却很难被识别。
模型升级通常可以带来更好的指令理解、更稳定的语言表达和更强的推理能力,但它无法独立回答三个运行时问题:
- 本轮哪些来源可以被视为事实证据?
- 这些证据是否支持完整业务命题,而不仅是主题相关?
- 证据不足时,哪一部分内容仍有资格发送给用户?
如果服务端没有定义这三个问题,系统实际上是在把“是否发布”交给模型的表达自信。智能水平再高,也不是可靠性契约。
2. The Case: Plausible Completeness Is the Dangerous Part
用户的真实意图很普通:线上购买后,能否到门店自提?
Agent 的回答却异常完整:它给出了街道、门牌、楼层、房号、营业时间、自提政策,甚至承诺到货后会通知用户。完整性制造了可信感,也放大了伤害——用户不会把它看成一次文本补全,而会把它当作商家的确定信息与服务承诺。
排查时,最终回答被拆成可独立验证的业务命题,并逐项反查 Instructions、Background、知识检索、工具输出与对话历史:
| 回答命题 | Instructions | Background | RAG/工具 | 对话历史 | 归因 |
|---|---|---|---|---|---|
| 门店位于某区域、某大厦 | 部分相关 | 有部分线索 | 无直接支持 | 无 | 仅支持粗粒度位置 |
| 街道、门牌、楼层、房号 | 无 | 无 | 无 | 无 | 不受支持 |
| 营业时间 | 无 | 无 | 无 | 无 | 不受支持 |
| 商家支持用户所述自提流程 | 无 | 无 | 仅有其他物流/自提语境 | 无 | 错误归因 |
| 到货后一定通知 | 无 | 无 | 无 | 无 | 不受支持的业务承诺 |
最关键的运行时信号是:模型把证据标成了 “Instructions”。然而 Instructions 只说“基础信息以网站为准,不得擅自更改”,并未包含网站内容,也没有证明任何地址或服务政策。
这里存在一个非常容易被自然语言掩盖的边界:
- “官网是权威来源”是来源治理规则;
- “官网明确写明地址为 X”才是事实证据;
- 前者规定应去哪里验证,不能替代后者完成验证。
事故的危险不在于模型什么都不知道,而在于它知道一部分,于是产生了“补完整”的冲动。
3. How Partial Truth Becomes a Complete Fabrication
这不是单点失误,而是一条稳定的错误链:
四种机制在同一轮中叠加:
- 命题补全。 用户需要可执行答案,模型把“区域 + 大厦”补成邮寄级地址。
- 相关性替代蕴含。 检索内容谈到“自提”,不等于它证明“该商家支持当前自提流程”。
- 跨片段关系拼接。 不同片段分别出现主体、地点或服务概念,模型据此创造来源从未共同表达的关系。
- 证据标签自证。 模型声称证据来自 Instructions,运行时却没有检查该来源能否支持完整命题。
因此,RAG 已经返回内容并不代表回答已经 grounded。检索解决“把哪些材料送进上下文”,事实闸门解决“哪些命题有资格从上下文走向用户”。
4. Why the Obvious Fixes Fail
4.1 为每类敏感事实编写禁令
如果分别禁止补全地址、卡号、品牌关系、营业时间和业务承诺,Prompt 很快会演变成事故词典。已知类型被覆盖,下一种未知事实仍会穿透;大量具体词还会占据模型注意力,并把通用安全问题错误地变成客户特例。
正确的抽象不是“哪些词不能生成”,而是“什么条件满足后,事实才可以发布”。
4.2 再强调一次“不得幻觉”
“不要编造”仍是一条由概率模型解释的自然语言指令。只要“参考线索”与“充分证据”没有被区分,模型就可能认为自己的补全只是合理归纳,而不是编造。
原则必须被转换为可执行的回答协议,才能形成稳定边界。
4.3 只升级模型
更强模型能够降低部分错误,但不能根治幻觉。实际消融中,模型升级后关闭最终事实 Gate,只通过 3/9 个定向事实场景。这一结果不说明更强模型没有价值,而是说明模型能力不是充分条件:没有证据发布协议,模型仍会在部分事实和干扰上下文中越过边界。
4.4 增加第二个 reviewer
独立 reviewer 可以提供额外防线,但会增加一次串行模型调用;在客服链路中,这通常意味着明显的延迟与成本增长。如果 reviewer 看到的还是同一批模糊材料,它也可能重复第一次判断。
这次修复优先把审计放进同一次调用,并让运行时负责不可绕过的分支选择。这样保留语义判断能力,同时避免第二次模型往返。
5. The Design: A Single-Call Evidence Gate
新的回答协议要求模型在一次调用内完成六个逻辑阶段:
结构化响应把模型判断与运行时控制拆开:
| 字段 | 模型负责什么 | 运行时负责什么 |
|---|---|---|
| response_language | 依据当前对话和配置确定回答语言 | 校验结构 |
| draft | 形成候选回答,暴露需要验证的主张 | 永不直接发布 |
| evidence | 列出所需命题、直接来源片段与未决项 | 校验字段完整性 |
| use_limitation_only | 在关键事实证据不足时打开闸门 | 决定唯一可发布分支 |
| limitation | 简洁说明当前无法确认的事实 | 闸门打开时发布 |
| content | 证据充分时的正常答案 | 闸门关闭时发布 |
这里没有使用地址、账号或品牌关键词参与判断。模型负责语义上的支持关系,程序负责协议验证、分支选择和失败语义。
若结构解析失败,系统重试或失败关闭;未完成事实审计的 draft 永远不能作为恢复内容直接发送。这个约束很重要:只要存在一条“解析失败后尽量返回原文”的旁路,事实闸门就只是一条建议,而不是发布边界。
6. Complete-Proposition Grounding
证据充分性不能停留在“来源相关”。一个业务命题通常至少包含主体、关系、客体和限定条件;证据必须覆盖用户真正依赖的那条完整关系。
例如:
- “某大厦位于中环”不能支持“该品牌门店位于该大厦某层某室”;
- “知识库描述一种自提服务”不能支持“该商家向当前用户提供这种服务”;
- “官网应作为准确信息来源”不能支持“官网已经给出了当前答案”;
- 多个来源各自真实,也不能被拼接成它们从未明确表达的业务关系。
如果关键命题无法得到直接支持,模型可以在工具可用时查询一次知识;仍无证据则只说明无法确认,不再补充未经支持的建议、替代流程或下一步承诺。
限制回答不是失败,而是证据边界在用户界面的诚实呈现。与此同时,测试必须包含证据充分时的正常回答,防止系统退化为“安全但无用”的一律拒答器。
7. Validation Beyond the Incident Sentence
回归矩阵没有只重复事故中的地址问法,而是按事实关系和证据状态组合场景:
- 地址与联系方式;
- 支付账号与转账信息;
- 品牌、主体和合作关系;
- 服务能力、履约条件和业务承诺;
- 上下文或 Instructions 缺失;
- 知识库缺失、无关、错误或相互冲突;
- 证据完整时必须正常回答的正向案例;
- 多语言、语言切换、会话流程与常规工具行为。
| 验证层 | 结果 | 能够说明什么 |
|---|---|---|
| 仅升级模型、关闭最终事实 Gate | 3/9 | 更强模型仍会越过事实边界 |
| 最终事实场景矩阵 | 60/60 | 拒答与正向回答均被覆盖 |
| 历史案例回放 | 28/28 | 既有问题没有回潮 |
| 多语言矩阵 | 11/11 | 中文、英文、西语、切换、限制与正常回答 |
| 语言优先级重复测试 | 20/20 | 检查概率性波动 |
| 定向单元/集成测试 | 235/235 | 覆盖协议解析和分支选择 |
| Agent 非 E2E 回归 | 1312 通过,4 跳过 | 检查常规能力 |
| 预发完整 E2E | 37/37 场景,49/49 轮 | 请求与内容审计均通过 |
3/9 的消融集与 60/60 的最终扩展矩阵规模不同,不能被解读为严格的同集效应量对比;它能证明的是:切换更强模型后,缺少事实 Gate 的系统仍然存在可重复失败。若需要比较各组件贡献,应在相同数据集、采样参数和重复次数下继续做成对消融。
8. Cost, Latency, and Operational Stability
该方案没有增加第二次模型调用。预计每轮增加:
- 固定 Prompt:约 500–700 输入 tokens;
- 私有 draft、evidence 与 Gate:约 150–300 输出 tokens;
- 合计:约 850–1300 tokens,约为预发平均单轮用量的 6%–10%。
预发 49 轮样本中,端到端延迟 p50 为 10.42 秒、p95 为 17.67 秒、最大 18.20 秒;Pod 无重启、无 5xx。上线初始观察窗口中,已完成对话 p50 为 7.17 秒、p95 为 16.30 秒、最大 18.07 秒。
这些数据只描述已观测流量窗口,不能外推为所有负载下的性能保证;但它说明该方案没有产生第二次串行模型调用带来的阶跃式延迟,并且能够在既有服务边界内落地。
9. Where This Sits Among Existing Methods
该设计与已有事实性方法共享“生成后检查”的思想,但优化目标是生产链路中的单次调用与不可绕过的发布边界:
| 方法 | 主要机制 | 本方案关注的不同边界 |
|---|---|---|
| RAG | 参数记忆结合外部检索 | 检索提供材料,不保证材料蕴含最终命题 |
| RARR | 外部研究、归因并修订输出 | 通常包含额外检索和修订阶段 |
| Self-Refine | 同一模型多轮反馈与改写 | 依赖迭代调用;本方案将审计压入一次结构化调用 |
| Chain-of-Verification | 草稿、验证问题、独立作答、最终回答 | 验证链更显式;本方案强调低延迟运行时门控 |
| Self-RAG | 训练反思 token,自适应检索与生成 | 依赖训练机制;本方案是推理时协议 |
| FActScore / SAFE | 原子事实分解与事实性评测 | 主要用于评估;本方案把命题分解放入在线发布路径 |
| ALCE | 评价引用正确性与完整性 | “有引用”仍不代表每项主张都得到完整支持 |
单调用 Evidence Gate 不是形式化事实证明器。evidence 仍由同一个模型生成,运行时验证的是结构与分支,而不是通过独立定理证明确认语义蕴含。它的价值在于以较低延迟显著收紧发布路径;对极高风险业务,仍可在此基础上叠加独立验证器、人工审批或确定性数据接口。
10. Production Lessons
- Treat every model as fallible. 模型选择影响平均质量,但不应改变系统对事实风险的基本假设。
- Make evidence an object, not a label. “来自 Instructions”没有意义,除非能指出其中支持完整命题的内容。
- Relevance is not entailment. “附近的真话”比明显错误更容易诱发可信幻觉。
- Define publication conditions, not incident keywords. 规则应描述何时允许回答,而不是枚举禁止生成的事实类型。
- Let the model judge semantics; let runtime enforce the contract. 两者各自承担擅长且可验证的责任。
- Fail closed without becoming useless. 未审计草稿不得旁路发布,同时必须用正向案例监控过度拒答。
- Regression must include language and normal workflows. 安全权重增加后,语言遵守、SOP、工具调用和正常答案同样需要回归。
- Observability completes the control loop. 记录 Gate、未决项、解析失败、延迟和 token,才能发现安全收益是否以效用或成本为代价。
最终需要守住的不是某个地址,而是一条更普遍的系统边界:
答案不能因为听起来合理而获得发布资格;只有当本轮可信证据完整支持用户将要依赖的关键命题时,它才可以离开 Agent Runtime。
参考文献
- Lewis et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, 2020.
- Gao et al. RARR: Researching and Revising What Language Models Say, Using Language Models, 2022.
- Madaan et al. Self-Refine: Iterative Refinement with Self-Feedback, 2023.
- Dhuliawala et al. Chain-of-Verification Reduces Hallucination in Large Language Models, 2023.
- Asai et al. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection, 2023.
- Min et al. FActScore: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation, 2023.
- Gao et al. Enabling Large Language Models to Generate Text with Citations, 2023.
- Wei et al. Long-form Factuality in Large Language Models, 2024.