4.1为什么需要 RAG
本课只解决一个主问题:本单元只解决一个主问题:如果 LLM 已经学了很多知识,为什么还需要 RAG?
学习目标
学完本单元后,学习者应该能够:
- 解释 LLM 为什么需要外部知识增强。
- 用一句话说清楚 RAG 的基本流程。
- 区分 RAG、微调、联网搜索和普通 Prompt。
- 判断哪些场景适合用 RAG,哪些场景不该先用 RAG。
- 识别 RAG 系统在检索、资料、生成、引用和权限上的失败点。
开场场景
假设你在做一个课程学习助手。
学习者问:
这门课里,Prompt 和 RAG 的区别是什么?
如果只让通用模型回答,它可能讲得也不错,但会有几个问题:
- 它不一定知道这门课的定义。
- 它不一定知道课程讲到哪一步。
- 它无法引用课程文件。
- 它可能用别处的说法覆盖课程主线。
课程产品要的不是“一个差不多的 AI 回答”,而是“基于课程资料、能引用、能复查、能和学习路径一致的回答”。
这就是 RAG 出场的地方。
先给直觉
LLM 像一个读过很多书的人,但它有几个问题:
- 它不一定知道你公司的内部资料。
- 它不一定知道课程最新版本。
- 它不一定知道今天刚发生的事情。
- 它可能记错、说混或编造。
- 它不能天然给出可靠来源。
RAG 的思路是:不要只靠模型“脑子里的印象”,而是让它先查资料,再根据资料回答。
RAG 是 Retrieval-Augmented Generation,检索增强生成。
人话版:
先找资料,再让模型带着资料回答。
这个定义里有两个动作:
- Retrieval:检索,找到相关资料。
- Generation:生成,基于资料组织回答。
如果只检索不生成,就是搜索。
如果只生成不检索,就是普通 LLM 问答。
RAG 把两者接起来。
为什么 LLM 不能直接解决所有知识问题
1. 知识截止
模型训练完成后,它的参数不会自动知道后来的世界变化。
产品可以给模型加联网搜索、数据库查询或知识库检索,但那是外部系统提供的能力,不是模型参数自己实时更新。
2. 私有知识
公司制度、内部文档、课程讲义、客户资料、项目记录,这些通常不在通用模型训练数据里。
如果你问:
我们公司今年的报销规则是什么?
模型默认不知道,除非你把相关资料提供给它。
3. 可追溯性
很多场景不只要答案,还要知道答案来自哪里。
比如:
- 法务。
- 医疗。
- 财务。
- 企业制度。
- 学术研究。
- 课程学习。
如果模型不能引用来源,用户很难信任结果。
4. 幻觉风险
当模型没有足够资料时,它仍然可能生成看似合理的回答。
RAG 通过提供相关资料,可以减少模型乱猜,但不能彻底消灭幻觉。
资料找错、放错、模型读错,都可能导致错误。
RAG 的基本流程
一个简化 RAG 流程:
用户提问
↓
理解问题
↓
从知识库检索相关片段
↓
把片段放进 Prompt
↓
模型基于片段生成回答
↓
输出答案和引用
更完整的系统还会包括:
- 文档清洗。
- Chunk 切分。
- Embedding。
- 向量检索。
- 关键词检索。
- 元数据过滤。
- 重排。
- 引用生成。
- 回答评估。
- 权限控制。
- 失败日志。
后续单元会逐步展开这些环节。
图:RAG 的完整链路——理解问题、检索相关片段、组装上下文、生成回答、标注引用。核心是让模型"带着资料"回答,而不是凭空发挥。
一个最小 RAG Prompt
为了理解 RAG,可以先看一个极简 Prompt:
你是课程学习助手。
请只根据以下课程资料回答用户问题。
如果资料不足,请明确说“课程资料中没有足够信息”。
回答后列出引用来源。
课程资料:
{{retrieved_chunks}}
用户问题:
{{question}}
这个 Prompt 的关键不是语气,而是规则:
- 只基于资料回答。
- 资料不足要承认。
- 回答后给来源。
这三点决定 RAG 和普通聊天的差异。
RAG、搜索、微调、普通 Prompt 的区别
| 方式 | 核心动作 | 适合场景 | 局限 |
|---|---|---|---|
| 普通 Prompt | 直接让模型回答 | 通用解释、写作、轻量任务 | 资料不可靠时容易猜 |
| 搜索 | 找到相关网页或文档 | 找资料、查来源 | 不负责组织最终答案 |
| RAG | 检索资料后生成回答 | 私有知识库、课程问答、引用型问答 | 依赖检索和资料质量 |
| 微调 | 用数据继续训练模型 | 固定风格、固定任务模式 | 不适合频繁更新事实 |
一句话区别:
搜索负责找资料,RAG 负责带着资料回答,微调负责改变模型习惯。
RAG 和微调有什么区别
这是入门者非常容易混淆的问题。
RAG
RAG 是把资料放到模型推理时的上下文里。
适合:
- 知识经常更新。
- 需要引用来源。
- 私有文档问答。
- 希望快速迭代知识库。
优点:
- 更新资料相对方便。
- 可追溯性更好。
- 不一定需要重新训练模型。
局限:
- 检索质量决定上限。
- 上下文长度有限。
- 资料组织不好会影响回答。
- 引用需要额外设计和评估。
微调
微调是用特定数据继续训练模型,改变模型参数。
适合:
- 固定风格。
- 固定格式。
- 特定任务模式。
- 行业表达习惯。
优点:
- 可以让模型更适应某类任务。
- 推理时不一定需要塞很多示例。
局限:
- 不适合频繁更新事实知识。
- 训练和评估成本更高。
- 不能天然提供来源引用。
一句话类比:
RAG 更像开卷考试,微调更像专项训练。
类比边界:RAG 不是简单复制资料,微调也不是让模型真正记住所有业务事实。
哪些场景适合 RAG
适合 RAG 的场景通常有几个特征:
- 答案依赖特定资料。
- 资料会更新。
- 需要引用来源。
- 问题类型比较开放。
- 用户希望自然语言提问。
- 需要把内部知识变成问答体验。
典型例子:
- 企业知识库问答。
- 产品文档助手。
- 课程学习助手。
- 法规政策查询。
- 研究资料问答。
- 客服知识库。
- 内部流程问答。
哪些场景不该先用 RAG
RAG 不是所有问题的第一选择。
不适合先用 RAG 的情况:
- 任务只需要简单分类。
- 资料非常少,直接放进 Prompt 就够。
- 资料质量很差,还没整理。
- 用户问题高度结构化,规则系统更简单。
- 要解决的是输出格式或语气问题,而不是知识问题。
- 业务还没验证,先做复杂知识库成本太高。
如果知识库本身乱,RAG 不会自动让它变好。
很多 RAG 项目的第一步不是建向量库,而是整理资料。
RAG 不能解决什么
RAG 很有用,但不是万能。
它不能自动解决:
- 原始资料质量差。
- 文档结构混乱。
- 检索不到正确内容。
- 检索到太多噪音。
- 模型误读资料。
- 用户问题本身模糊。
- 权限和隐私控制缺失。
- 引用不支持结论。
如果知识库里没有正确资料,RAG 也很难生成正确答案。
模型不是资料管理员,它只是被迫收拾资料管理员留下的现场。
图:回答不对时按链路逐环排查,每个环节都有典型失败方式,先别急着怪模型。
RAG 失败定位表
RAG 出错时,不要只怪模型。
可以按下面拆:
| 失败表现 | 可能原因 | 检查方向 |
|---|---|---|
| 答非所问 | 问题理解错误、检索词不准 | 查询改写、意图识别 |
| 没找到资料 | Chunk 切分差、索引缺失 | 文档入库、切分策略 |
| 找到错资料 | Embedding 不匹配、关键词缺失 | 混合检索、重排 |
| 找到资料但答错 | 模型误读、Prompt 约束弱 | 回答 Prompt、引用检查 |
| 引用不支持结论 | 引用生成随意 | 引用校验、片段对齐 |
| 泄露不该看的内容 | 权限过滤错误 | 先权限过滤,再检索 |
| 资料不足却强答 | 拒答规则弱 | 加资料不足判断 |
RAG 的价值不只是回答问题,还包括让错误可以被定位。
案例:课程学习助手
假设本课程要做一个 AI 学习助手。
用户问:
Prompt 和 RAG 有什么区别?
不使用 RAG:
- 模型根据通用知识回答。
- 可能和课程定义不一致。
- 无法引用课程章节。
使用 RAG:
- 检索课程中 Prompt 和 RAG 的相关单元。
- 把相关片段放进上下文。
- 要求模型只基于课程资料回答。
- 输出答案并引用对应课程文件。
这样更适合教学产品,因为答案与课程体系一致。
案例:企业制度问答
用户问:
出差住宿费超过标准,是否可以报销?
RAG 系统应该:
- 识别这是报销制度问题。
- 检索最新差旅政策。
- 检查用户所在地区和职级是否影响标准。
- 引用对应条款。
- 如果资料不足,提示联系财务确认。
这个场景中,引用和版本比回答流畅更重要。
常见误区
误区 1:RAG 可以彻底解决幻觉
不能。RAG 可以降低幻觉,但检索错误、资料错误、模型误读都会造成问题。
误区 2:有了长上下文,就不需要 RAG
长上下文有帮助,但把所有资料塞进去成本高、噪音大,也不利于引用和权限控制。
误区 3:RAG 等于向量数据库
向量数据库只是 RAG 的一部分。RAG 还包括清洗、切分、检索、重排、生成、引用和评估。
误区 4:微调比 RAG 更高级
它们解决的问题不同。频繁更新的事实知识通常更适合 RAG。
误区 5:资料越多,回答越准
无关资料会干扰模型,增加成本和延迟。关键是找到相关、可靠、权限正确的资料。
动手练习
选一个你熟悉的资料集,比如:
- 公司制度。
- 一门课程讲义。
- 产品说明书。
- 一组论文笔记。
- 客服 FAQ。
完成表格:
| 问题 | 你的答案 |
|---|---|
| 用户最可能问哪些问题? | |
| 哪些问题必须引用原文? | |
| 哪些资料需要按主题切分? | |
| 哪些内容有权限限制? | |
| 哪些问题资料不足时必须拒答? | |
| 如果模型回答错了,风险是什么? |
检查题(自测)
- 为什么 LLM 需要 RAG?
- RAG 和微调的核心区别是什么?
- RAG 系统可能在哪些环节失败?
- 为什么长上下文不能完全替代 RAG?
- 为什么权限过滤应该发生在检索前,而不是回答后?
参考答案
- 因为 LLM 默认不知道私有资料和最新信息,也不能天然提供可靠来源。RAG 通过检索外部资料,让模型基于资料回答。
- RAG 在推理时把资料放入上下文,适合更新频繁、需要引用的知识任务;微调改变模型参数,适合固定风格、格式或任务模式。
- 可能失败在资料质量、文档切分、检索、重排、Prompt、模型理解、引用生成、权限控制和评估等环节。
- 长上下文能放更多资料,但成本高、噪音多、权限难控、引用难做。RAG 的目标是先找到相关资料,再让模型回答。
- 如果先检索所有资料再让模型不要说敏感内容,模型仍可能看到不该看的信息。正确做法是先按权限过滤可访问资料,再检索。
Takeaway
RAG 的核心不是“给模型加一个数据库”,而是建立一套让模型查资料、用资料、引用资料并接受评估的机制。它让 LLM 更适合处理私有、实时、可追溯的知识任务,但它不能替代资料整理、权限控制和质量评估。