# 幻觉——为什么 AI 会"胡说八道"?
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
大家好,我是技术UP主小傅哥。
终于到了大家最关心的问题:为什么 AI 会"胡说八道"?明明看起来那么聪明的 AI,为什么有时候会编造完全不存在的事实?这不是 Bug,而是机制决定的。
# 一、幻觉不是 Bug,是机制决定的
回到我们最开始的核心比喻:AI 是文字接龙选手。
它的工作原理是"必须接出下一个字"。它没有:
- ❌ "我不知道"的开关
- ❌ 一个事实数据库可以查
- ❌ 区分"真"和"假"的能力
它只有一个概率分布。
graph TB
A["你问:'某某公司在上海的地址?'"] --> B{模型怎么想}
B --> C["训练数据里这类问题 通常会跟一个具体地址"]
C --> D[那我也接一个像样的地址]
D --> E["输出: 上海市浦东新区... 编出一个完全不存在的地址"]
1
2
3
4
5
2
3
4
5
它不是"故意撒谎"——它根本不知道什么叫"撒谎"。
它只是在做它最擅长的事:让接出来的话看起来通顺、合理、像那么回事。
# 二、幻觉的数学必然性
2024 年 OpenAI 自己发了一篇论文 Why Language Models Hallucinate,证明了一件事:
在标准的训练和评测体系下,"猜一个"比"承认不知道"得分更高。所以模型会被训练成"宁可瞎编也不空着"。
这意味着幻觉不能靠堆参数消除,必须靠外部系统解决。
# 三、工程上怎么对付幻觉?
业界的标准做法叫 RAG(检索增强生成):
graph LR
A[用户提问] --> B["先去你的知识库 检索相关资料"]
B --> C["把资料塞给 AI 说: 基于这些资料回答"]
C --> D["AI 不再凭空编造 而是基于资料组织答案"]
1
2
3
4
2
3
4
打个比方:
- 没 RAG = 让学生闭卷考试 → 容易瞎编
- 用 RAG = 让学生开卷考试 → 答案有根有据
graph TB
A["公司内部文档 产品手册 知识库"] --> B[切成小块]
B --> C["计算每块的 Embedding 存进向量数据库"]
D[用户提问] --> E["计算问题的 Embedding"]
E --> F["从向量数据库 找最相似的几块"]
C --> F
F --> G["把这几块 + 用户问题 一起发给大模型"]
G --> H[模型基于资料生成答案]
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
💡 这就是为什么"企业内部 AI 助手"基本都是 RAG 架构:你不能让通用 AI 知道你公司内部的事,但你可以"开卷"让它现场查。
# 四、幻觉的常见场景与应对
| 场景 | 幻觉表现 | 应对方法 |
|---|---|---|
| 问具体数字/地址 | 编造一个看起来合理的 | 要求"原文引用",或用 RAG |
| 问实时信息 | 给出过时的数据 | 开联网模式,让 AI 搜索 |
| 问专业领域知识 | 编造不存在的概念 | 用专业领域 RAG 知识库 |
| 让 AI 算数学题 | 给出"看起来对但实际错"的数字 | 让 AI 列步骤,或用工具 |
# 五、对幻觉的正确态度
不要期望 AI "不再有幻觉"——这是文字接龙机制的固有特性。正确的态度是:
- 永远核实关键信息:涉及钱、法律、医疗、安全的内容,一定要人工确认
- 用 RAG 架构:让 AI 基于你的真实数据回答,而不是凭空编造
- 要求 AI 标注来源:让 AI 说出"我根据什么得出了这个结论"
- 用工具代替猜测:数学用计算器,实时数据用搜索,不要让 AI "猜"
💡 幻觉不是 AI 的缺陷,而是它的本质特性。理解了这一点,你就不会再被 AI "一本正经的胡说八道"所迷惑了。

