2023年11月18日

幻觉

幻觉(Hallucination)是指大语言模型生成**看似合理但事实错误、与输入矛盾或无法被验证**的内容,是大模型落地最大的阻碍之一。

知识库大模型安全与护栏safetyhallucination

大模型幻觉(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 计算流程

  1. 声明分解:将回答拆分为原子声明
    • "张三毕业于清华计算机系,2020年入职" →
      • "张三毕业于清华大学"
      • "张三的专业是计算机"
      • "张三2020年入职"
  2. 逐条验证:检查每个声明是否可从上下文推断
  3. 计算得分: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 引导模型在"确定知道"时自信回答、"不确定"时说明不确定性而非直接拒绝。

工程落地时我会怎么做

  1. RAG 场景必须评测 Faithfulness + Context Recall
  2. 多方法交叉验证:NLI + LLM-as-a-Judge + 采样一致性
  3. 建立幻觉案例库:收集真实幻觉案例,定期回归测试
  4. 高敏感场景加实时检测:生成后、展示前增加验证环节
  5. 监控 Faithfulness 分布:关注低尾而非只看均值
  6. 分类型统计:区分内在/外在/事实性幻觉,针对性优化

如果要对外讲,可以怎么概括

"幻觉是大模型落地最大的阻碍之一,核心原因是模型学到了统计模式而非真正的理解。在分类上,内在幻觉(与上下文矛盾)最容易检测,外在幻觉(无法验证但可能错误)最难处理。在缓解策略上,我分四个层面:源头用 RAG 提供可靠知识;过程用低温度和自一致性控制解码;Prompt 层面要求模型引用来源和承认不确定性;后处理用 NLI 和事实核查验证输出。关键的 trade-off 是忠实度与有用性——过度追求忠实度会导致模型拒绝回答合理问题。在工程实践中,我会建立幻觉案例库持续回归测试,同时监控 Faithfulness 分布的低尾。"

最后记几条

  1. 幻觉根源:模型学到统计模式而非真正理解,在不确定时"猜测"而非"承认不知道"
  2. RAGAS Faithfulness = 被支持的声明数 / 总声明数,是 RAG 幻觉检测的核心指标
  3. RAG 不能完全解决幻觉:检索失败 + 生成端幻觉都可能存在
  4. SelfCheckGPT 漏检"自信的错误":一致性高不等于正确
  5. 过度拒绝是幻觉缓解的常见副作用:需在安全性和有用性间取平衡

参考资料

  • 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

延伸阅读