【大模型应用开发】幻觉问题 —— 为什么 LLM 会一本正经地胡说八道?
·
6.1 什么是幻觉?
先看一个真实场景:
用户:帮我查一下,2024 年诺贝尔物理学奖得主是谁?
AI:2024 年诺贝尔物理学奖得主是 John Hopfield 和 Geoffrey Hinton,
他们因在机器学习领域的基础性发现和发明而获奖。✔ 这个是对的
用户:那 2025 年呢?
AI:2025 年诺贝尔物理学奖得主是……(开始编造一个不存在的名字和理由)❌
幻觉(Hallucination):模型生成的内容语法通顺、语气自信、逻辑自洽,但事实是错的—— 编造的、虚构的、不存在的。
注意关键词:语法通顺 + 语气自信。这是幻觉最可怕的地方:它看起来太像真的了。
6.2 幻觉的根源:模型的"本质"
还记得第 1 课吗?LLM 的本质是一个"文字接龙机器"。
它在训练时学的任务是:
"中国的首都是____" → 预测下一个词
它从来没有学过"查证事实",只学会了"什么词在什么上下文里更可能接在后面"。
所以当它遇到不知道答案的问题时,它的本能不是"我不知道",而是:
“我要根据我学过的文字模式,编一段最像答案的话。”
三个具体原因
| 原因 | 说明 |
|---|---|
| 1. 训练目标是"像人话",不是"说真话" | 预测下一个词的模型,编一句通顺的假话比说"我不知道"得分更高 |
| 2. 知识有截止日期 | 训练数据是过去某个时间点的快照,之后发生的事它真不知道 |
| 3. 知识被"压缩"失真 | 互联网上的信息互相矛盾、真假混杂,模型记住的是"统计规律"而不是"事实" |
6.3 幻觉的三种类型
| 类型 | 表现 | 例子 |
|---|---|---|
| 事实型幻觉 | 编造事实、人物、事件 | 编一个不存在的诺贝尔奖得主 |
| 逻辑型幻觉 | 推理过程自相矛盾 | 算出 3+5=9,还一本正经解释步骤 |
| 指令型幻觉 | 明明做不到却说做了 | “已经把你的文件发送到邮箱了”(其实没发) |
识别幻觉的一个技巧:越具体、越冷门、越超越模型知识截止日期的问题,越容易幻觉。
6.4 从 Prompt 层缓解(不花钱的方案)
技巧 1:给模型"退路"
❌ "公司的注册资金是多少?"
✅ "根据下面提供的资料回答问题。如果资料中没有提到,
请直接说'资料中没有相关信息',不要猜测。"
技巧 2:要求引用出处
✅ "请回答以下问题,并且标注答案来自哪段资料:
每一条结论后面用 [来源编号] 标注。"
技巧 3:提供上下文,别让模型"裸答"
❌ "帮我总结一下这个产品的优点"(模型只能编)
✅ "以下是该产品的官方介绍文档:
[粘贴文档内容]
请基于以上文档总结产品优点。"
技巧 4:降低温度
温度高 = 爱冒险 = 更容易编。事实性问题把 temperature 调到 0~0.3。
技巧 5:让模型先判断,再回答
✅ "在回答前,先检查你是否真的知道答案。
如果你对答案不确定,先列出你不确定的点,再给出回答。"
6.5 从应用层缓解(治本方案)
Prompt 技巧是"防守",真正治本要靠应用架构:
方案 1:RAG(检索增强生成)—— 最推荐
把答案来源"接上"真实资料,让模型基于检索到的内容回答,而不是凭空编。
用户提问
↓
从知识库检索相关资料 ← 事实来源
↓
把资料 + 问题一起给 LLM
↓
LLM 基于资料回答(编无可编)
这正是第三部分「RAG 篇」要深入讲的核心技术。
方案 2:工具调用(Function Calling)
让模型调用真实工具拿数据,而不是靠记忆猜:
- 查天气 → 调天气 API
- 算价格 → 调计算器
- 查股价 → 调行情接口
方案 3:校验与兜底
AI 回答 → 交给一个"审核模型"检查 → 不过关就重新生成 / 拒绝回答
用另一个模型交叉验证,能显著降低幻觉率(代价是多一次 API 调用)。
方案 4:提示用户风险
在高风险场景(医疗、法律、金融)必须加免责声明 + 醒目提示"AI 生成内容仅供参考"。
6.6 哪些场景最危险?
| 场景 | 幻觉后果 | 应对 |
|---|---|---|
| 医疗建议 | 可能危及健康 | 必须接入权威知识库 + 人工审核 |
| 法律意见 | 可能造成损失 | 只做资料整理,结论必须人工复核 |
| 金融决策 | 可能亏钱 | 工具调用拿真实数据,禁裸答 |
| 客服内容 | 承诺了做不到的事 | 限定在 FAQ 范围内回答 |
| 代码生成 | 生成了不存在的 API | 运行测试验证,别直接上线 |
核心心法:LLM 是"生成器"不是"数据库"。凡是"事实必须准确"的场景,都别让它裸答,要么给资料、要么接工具、要么加校验。
6.7 幻觉 VS 创造:如何区分?
有意思的是,同一个能力的两面:
写小说、编故事 → 我们叫它"创造力" ✅
回答事实问题时 → 我们叫它"幻觉" ❌
所以目标不是"消除想象",而是在需要事实的场景里,不让它发挥想象。做法就是上面说的:把"事实来源"显式提供给模型。
更多推荐
所有评论(0)