LLMNotes

第 22 章:幻觉治理

zjc 于 2026-01-22 发布

这是《LLM 应用开发 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 幻觉指模型生成了看似合理但缺乏依据、与事实或业务规则冲突的内容。不能期待完全消除,但可以通过数据、检索、约束、校验和流程降低发生率和影响。

22.1 幻觉类型

类型 示例 治理
事实幻觉 编造不存在的政策 RAG 与引用
来源幻觉 引用不存在的文档 引用校验
逻辑幻觉 推理链条跳跃 分步验证
数值幻觉 计算总额错误 程序计算
权限幻觉 假设用户可访问 服务端权限
指令幻觉 声称已完成操作 操作确认
时间幻觉 过期信息当现行 时间过滤

22.2 产生原因

  1. 训练目标奖励流畅表达,不保证事实正确;
  2. 上下文缺少关键信息;
  3. Prompt 要求强行回答;
  4. 检索结果无关或冲突;
  5. 文档版本过时;
  6. 问题超出系统边界;
  7. 输出格式要求诱导编造字段;
  8. 工具结果被误解;
  9. 用户诱导或注入。

22.3 预防策略

边界定义
  -> 数据治理
     -> 检索质量
        -> Prompt 约束
           -> 程序计算
              -> 输出校验
                 -> 人工兜底

Prompt 示例:

只根据提供的资料回答。
如果资料不足,输出 information_insufficient。
不要猜测订单状态、价格和日期。
每个关键结论必须给出来源编号。

22.4 证据链

{
  "answer": "标准订单可在签收后 7 天内申请退款。",
  "claims": [
    {
      "text": "标准订单可在签收后 7 天内申请退款",
      "source_chunk_id": "policy-v3#42",
      "quote": "标准订单自签收之日起 7 天内可申请退货退款"
    }
  ]
}

服务端校验:

  1. chunk ID 存在;
  2. chunk 在本次候选中;
  3. quote 与原文匹配;
  4. 用户有权限;
  5. claim 与 quote 相关;
  6. 文档当前有效。

22.5 RAG 降幻觉

环节 措施
解析 修复表格和标题
切块 保留完整条款
索引 版本和生效时间
检索 混合召回
重排 相关性精排
上下文 只保留相关资料
生成 要求引用
校验 引用真实性

资料不足时宁可拒答,也不要让模型补全。

22.6 结构化输出防幻觉

允许空值:

{
  "contract_no": null,
  "reason": "扫描件第一页缺失"
}

规则:

  1. 枚举必须固定;
  2. required 只包含必须可得字段;
  3. 不确定性转为 unknown
  4. 数值来自计算程序;
  5. 日期走解析器;
  6. 关键字段设置信或复核标记。

22.7 Agent 幻觉

Agent 更危险的幻觉是“声称已经执行”。

治理:

  1. 每个操作必须有执行回执;
  2. 工具失败不生成成功话术;
  3. 状态写库后再确认;
  4. 执行前后做前置校验;
  5. 关键动作可回滚;
  6. 保存 tool_call_id 与结果;
  7. 高危操作人工确认。

22.8 检测方法

方法 说明
NLI 校验 判断答案是否被上下文蕴含
引用校验 检查 quote 是否存在
事实库比对 与数据库或规则比对
多次采样 检查答案稳定性
模型评审 找无依据断言
人工抽检 高风险场景
用户反馈 线上发现

示例规则:

def verify_amount(answer_amount, db_amount):
    if answer_amount != db_amount:
        raise ValueError("amount mismatch")

22.9 拒答设计

拒答不是失败,而是安全边界。

{
  "status": "information_insufficient",
  "answer": "当前资料无法确认该订单的退款资格,请补充订单号。",
  "missing": ["order_id"],
  "suggestion": "进入人工客服"
}

拒答要:

  1. 说明缺什么;
  2. 给下一步;
  3. 不泄露内部判断细节;
  4. 记录原因;
  5. 支持补充信息后继续。

22.10 监控指标

指标 说明
hallucination rate 人工抽检幻觉率
unsupported claim rate 无证据断言率
citation failure rate 引用校验失败率
insufficient answer rate 拒答率
wrong numeric rate 数值错误率
stale answer rate 过期答案率
user correction rate 用户纠正率

本章小结

幻觉治理是系统工程:明确回答边界,提供可靠上下文,允许不确定,要求证据,服务端校验关键事实,并为高风险动作保留人工兜底。目标是降低幻觉影响,而不是相信模型不会犯错。

思考题

  1. 为什么“请务必正确回答”不能防幻觉?
  2. 引用校验应检查哪些条件?
  3. 哪些数值不应由模型计算?
  4. Agent 声称已执行操作时如何验证?
  5. 拒答率上升一定是坏事吗?