大模型幻觉(Hallucination)
先说结论
幻觉(Hallucination)是指大语言模型生成看似合理但事实错误、与输入矛盾或无法被验证的内容,是大模型落地最大的阻碍之一。
QUESTION 面试高频:什么是大模型幻觉?有哪些类型? 幻觉是指模型生成不真实或不可靠的内容。主要分为:内在幻觉(生成内容与输入/上下文矛盾)、外在幻觉(生成内容无法从上下文验证但可能错误)、事实性幻觉(输出与真实世界事实不符)。其中内在幻觉最容易检测(可对比上下文),外在幻觉最难处理。
幻觉类型
| 幻觉类型 | 定义 | 示例 | 检测难度 |
|---|---|---|---|
| 内在幻觉(Intrinsic) | 生成内容与输入/上下文矛盾 | 上下文说"2023年",模型输出"2025年" | 中等 |
| 外在幻觉(Extrinsic) | 生成内容无法从上下文验证 | 上下文未提及某人的毕业院校,模型自行编造 | 高 |
| 事实性幻觉 | 输出与真实世界事实不符 | 编造不存在的论文、法律条文 | 高 |
| 忠实度违反 | RAG 场景中,输出与检索内容不一致 | 检索到的文档说 A,模型输出 B | 中等 |
| 推理幻觉 | 逻辑推理过程中出现错误步骤 | 推理链中的某一步逻辑错误 | 中高 |
QUESTION 面试高频:幻觉的根源是什么? 从模型训练角度看,幻觉的根源包括:预训练数据噪声(训练数据本身包含错误信息)、知识截止日期(模型无法获取训练后的新信息)、解码策略(温度过高增加随机性)、指令误解(将"创造性"与"事实性"混淆)。更深层的原因是:模型学到了数据的统计模式而非真正的"理解",在不确定时会"猜测"而非"承认不知道"。
幻觉检测方法
检测方法对比
| 方法 | 原理 | 优缺点 |
|---|---|---|
| SelfCheckGPT | 多次采样同一问题,检查输出一致性 | 无需外部知识,但漏检"自信的错误" |
| FactScore | 将长文本拆分为原子事实,逐条验证 | 粒度细,但依赖可靠的知识源 |
| NLI(自然语言推理) | 用蕴含模型判断上下文是否蕴含生成内容 | 速度快,但 NLI 模型精度有限 |
| LLM-as-a-Judge | 用强模型评估输出的事实性 | 灵活,但裁判模型有偏差 |
| 检索验证 | 将生成内容在搜索引擎/知识库中验证 | 可靠,但成本高 |
| RAGAS Faithfulness | RAG 场景下检查回答是否忠于上下文 | RAG 专用,效果好 |
RAGAS Faithfulness 计算流程
- 声明分解:将回答拆分为原子声明
- "张三毕业于清华计算机系,2020年入职" →
- "张三毕业于清华大学"
- "张三的专业是计算机"
- "张三2020年入职"
- "张三毕业于清华计算机系,2020年入职" →
- 逐条验证:检查每个声明是否可从上下文推断
- 计算得分:Faithfulness = 被支持的声明数 / 总声明数
幻觉评测基准
| 基准 | 评测内容 | 方法 |
|---|---|---|
| TruthfulQA | 真实性 vs 常见误解 | 人工标注的问题+真假答案 |
| HaluEval | 幻觉检测与评估 | 对话/摘要/问答中的幻觉 |
| FActScore | 细粒度事实性评估 | 原子事实逐一验证 |
| FreshQA | 时效性事实评测 | 需要最新知识的问答 |
| RAGAS | RAG 系统忠实性评估 | 检索增强生成的质量评估 |
幻觉缓解方法
QUESTION 面试高频:如何缓解大模型幻觉?
缓解策略分为四个层面:
1. 源头预防(检索/知识层面)
| 方法 | 说明 | 效果 |
|---|---|---|
| RAG | 用外部知识源约束生成 | 高 |
| 高质量训练数据 | 预训练时过滤噪声数据 | 高(但成本极大) |
| 知识图谱约束 | 用结构化知识约束生成 | 高(但构建成本高) |
2. 生成过程控制(解码层面)
| 方法 | 说明 | 效果 |
|---|---|---|
| 降低温度 | temperature=0 减少随机性 | 中等 |
| 约束解码 | 限制输出在可信范围内 | 中高 |
| 自一致性(Self-Consistency) | 多次采样取一致答案 | 中高 |
| Chain-of-Verification | 先生成再验证关键事实 | 高 |
3. 提示工程(Prompt 层面)
| 方法 | 说明 |
|---|---|
| 明确约束 | "仅基于上下文回答,不要使用外部知识" |
| 要求引用 | "每个事实陈述都要标注来源" |
| 承认不确定性 | "如果不确定,请明确说明" |
| Few-shot 示例 | 给出正确处理不确定性的示例 |
4. 后处理验证(输出层面)
| 方法 | 说明 |
|---|---|
| 事实核查 | 将输出中的关键声明在知识库中验证 |
| NLI 验证 | 检查输出是否与上下文蕴含关系一致 |
| 置信度评估 | 让模型评估自身输出的可靠程度 |
RAG 场景的幻觉
QUESTION 面试高频:RAG 能完全解决幻觉问题吗? 不能。RAG 场景有两种幻觉来源:检索失败导致的幻觉(检索器返回了无关或过时的文档,模型基于错误上下文生成看似忠实但实际错误的内容)和生成端的幻觉(即使检索到了正确文档,模型仍可能编造上下文外的内容)。RAG 缓解了幻觉但未根治。
RAG 幻觉评测指标(RAGAS)
| 指标 | 衡量内容 | 范围 |
|---|---|---|
| Faithfulness | 回答是否忠实于检索上下文 | [0, 1] |
| Answer Relevancy | 回答是否切题 | [0, 1] |
| Context Precision | 检索内容中相关部分排名 | [0, 1] |
| Context Recall | 检索内容是否覆盖了回答所需信息 | [0, 1] |
过度拒绝问题
QUESTION 面试高频:什么是过度拒绝(Over-refusal)?
为避免幻觉,模型可能过度保守——对合理问题也拒绝回答。例如:
- 用户问"请介绍一下量子计算的基本原理",模型回答"我无法确认此信息的准确性"
- 这种行为严重影响用户体验,是幻觉缓解的常见副作用
解决方法:在安全性和有用性之间取得平衡,通过 Prompt 引导模型在"确定知道"时自信回答、"不确定"时说明不确定性而非直接拒绝。
工程落地时我会怎么做
- RAG 场景必须评测 Faithfulness + Context Recall
- 多方法交叉验证:NLI + LLM-as-a-Judge + 采样一致性
- 建立幻觉案例库:收集真实幻觉案例,定期回归测试
- 高敏感场景加实时检测:生成后、展示前增加验证环节
- 监控 Faithfulness 分布:关注低尾而非只看均值
- 分类型统计:区分内在/外在/事实性幻觉,针对性优化
如果要对外讲,可以怎么概括
"幻觉是大模型落地最大的阻碍之一,核心原因是模型学到了统计模式而非真正的理解。在分类上,内在幻觉(与上下文矛盾)最容易检测,外在幻觉(无法验证但可能错误)最难处理。在缓解策略上,我分四个层面:源头用 RAG 提供可靠知识;过程用低温度和自一致性控制解码;Prompt 层面要求模型引用来源和承认不确定性;后处理用 NLI 和事实核查验证输出。关键的 trade-off 是忠实度与有用性——过度追求忠实度会导致模型拒绝回答合理问题。在工程实践中,我会建立幻觉案例库持续回归测试,同时监控 Faithfulness 分布的低尾。"
最后记几条
- 幻觉根源:模型学到统计模式而非真正理解,在不确定时"猜测"而非"承认不知道"
- RAGAS Faithfulness = 被支持的声明数 / 总声明数,是 RAG 幻觉检测的核心指标
- RAG 不能完全解决幻觉:检索失败 + 生成端幻觉都可能存在
- SelfCheckGPT 漏检"自信的错误":一致性高不等于正确
- 过度拒绝是幻觉缓解的常见副作用:需在安全性和有用性间取平衡
参考资料
- Huang, L. et al. "A Survey on Hallucination in Large Language Models" (2023)
- Manakul, P. et al. "SelfCheckGPT" (2023)
- Min, S. et al. "FActScore: Fine-grained Atomic Evaluation of Factual Precision" (2023)
- Es, S. et al. "RAGAS: Automated Evaluation of RAG" (2024)
- TruthfulQA: https://github.com/sylinrl/TruthfulQA