幻觉问题
问题
什么是 AI 幻觉(Hallucination)?有哪些类型,如何检测和缓解?
答案
一、幻觉的定义
AI 幻觉指模型生成的内容看似合理但与事实不符。这是 LLM 最核心的安全问题之一。
二、幻觉类型
| 类型 | 描述 | 示例 |
|---|---|---|
| 事实性幻觉 | 生成与已知事实矛盾的信息 | "爱因斯坦获得诺贝尔化学奖" |
| 忠实性幻觉 | 输出与输入上下文不一致 | 摘要含原文未提到的内容 |
| 编造引用 | 生成虚假的参考文献 | 杜撰不存在的论文和 DOI |
| 数据幻觉 | 编造数据和统计数字 | "该公司 2024 年营收 500 亿" |
| 逻辑幻觉 | 推理过程出错但表述自信 | 错误的数学计算 |
三、幻觉产生原因
四、检测方法
| 方法 | 原理 | 适用场景 |
|---|---|---|
| RAG + 引用溯源 | 回答必须基于检索文档,标注来源 | 知识问答 |
| 自我一致性检查 | 多次采样,检查答案一致性 | 推理类任务 |
| 外部知识验证 | 用知识图谱/搜索引擎验证事实 | 事实核查 |
| LLM-as-Judge | 用另一个模型检查幻觉 | 自动化评估 |
| 不确定性估计 | 检查 token 概率分布的熵值 | 置信度评估 |
五、缓解策略
核心策略
- RAG:让模型基于检索到的真实文档回答,而非依赖参数记忆
- 引用溯源:要求模型标注信息来源,便于用户验证
- Prompt 约束:明确指示"如果不确定,请说不知道"
- Temperature 调低:降低随机性,减少创造性编造
- Grounding:将输出锚定到特定数据源
// Prompt 中添加防幻觉指令
const systemPrompt = `你是一个严谨的助手。
规则:
1. 只基于提供的上下文回答问题
2. 如果上下文中没有相关信息,明确说"根据现有资料无法回答"
3. 用 [来源: 文档名] 标注每个关键声明的出处
4. 不要编造任何数据或引用`;
常见面试问题
Q1: 如何在生产环境中减少幻觉?
答案:
- 架构层面:使用 RAG,模型回答必须基于检索文档
- Prompt 层面:System Prompt 限制"不知道就说不知道",要求引用来源
- 后处理:对输出进行事实检查(搜索验证、知识图谱匹配)
- 评估监控:定期评估幻觉率,建立评估数据集
Q2: RAG 能完全解决幻觉问题吗?
答案: 不能。RAG 能大幅减少但不能完全消除:
- 检索到的文档可能不相关 → 模型仍可能编造
- 模型可能忽略检索内容,依赖参数记忆
- 需要配合 Prompt 工程 + 输出验证 + 引用溯源