LLM 幻觉现象与缓解策略
什么是 LLM 幻觉
LLM 生成看似合理但事实上不正确的内容。模型不是"说谎",而是在概率预测过程中产生了与事实不符的输出。
幻觉类型
| 类型 | 表现 | 严重程度 |
|---|---|---|
| 事实性幻觉 | 编造不存在的事实、日期、数字 | 高——可能造成严重后果 |
| 来源幻觉 | 编造引用来源、论文、统计数据 | 高——看起来可信 |
| 推理幻觉 | 逻辑跳跃、错误因果 | 中——逐渐偏离正确方向 |
| 知识边界混淆 | 用自己的知识随意补充用户提供的上下文 | 中——RAG 场景常见 |
| 忠实度偏差 | 忽略或不准确遵循用户指令 | 低到中 |
幻觉的根源
- 模型不是数据库:LLM 压缩了训练数据,不是精确记忆
- 概率本质:生成过程本身有随机性
- 知识截止日期:不知道训练后的事件
- 过度自信:模型没有"我不知道"的内在机制
- 上下文冲突:当上下文中的信息与模型知识矛盾时
缓解策略
1. RAG(最有效)
为 LLM 提供可信的外部知识源作为上下文,减少对模型内部知识的依赖。
2. 约束生成
- 明确的 System Prompt:只在有来源支撑时才回答
- 要求标注引用来源和置信度
- 设置"我不知道"按钮——让说不知道比编造好
3. 检索增强安全
- 输出层规则校验:扫描回答中的关键事实是否与知识库一致
- 答案审查(Review Agent):用另一个模型独立验证答案
4. 事实性控制
- 降低 temperature:0.1-0.3 减少随机性
- Few-shot 示例:展示"不确定时如何回应"的例子
- 结构化输出:要求输出包含来源字段,便于事后校验
5. 可观测性
- 记录检索到的知识块和 LLM 的回答
- 建立幻觉检测评估集
- 定期用测试集回归检测
Agent 场景下的特殊风险
- 工具结果幻觉:Agent 可能编造工具调用结果,跳过实际执行
- 循环幻觉放大:一次幻觉被后续推理放大
- 中间步骤幻觉:多步推理中某步出错,后续全错