LLMStart|持续课程 · 不追玄学
模块 4 · 4.1
进阶级70 分钟样板课精修版

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 的完整链路——理解问题、检索相关片段、组装上下文、生成回答、标注引用。核心是让模型"带着资料"回答,而不是凭空发挥。

一个最小 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 失败定位表

RAG 出错时,不要只怪模型。

可以按下面拆:

失败表现 可能原因 检查方向
答非所问 问题理解错误、检索词不准 查询改写、意图识别
没找到资料 Chunk 切分差、索引缺失 文档入库、切分策略
找到错资料 Embedding 不匹配、关键词缺失 混合检索、重排
找到资料但答错 模型误读、Prompt 约束弱 回答 Prompt、引用检查
引用不支持结论 引用生成随意 引用校验、片段对齐
泄露不该看的内容 权限过滤错误 先权限过滤,再检索
资料不足却强答 拒答规则弱 加资料不足判断

RAG 的价值不只是回答问题,还包括让错误可以被定位。

案例:课程学习助手

假设本课程要做一个 AI 学习助手。

用户问:

Prompt 和 RAG 有什么区别?

不使用 RAG:

  • 模型根据通用知识回答。
  • 可能和课程定义不一致。
  • 无法引用课程章节。

使用 RAG:

  1. 检索课程中 Prompt 和 RAG 的相关单元。
  2. 把相关片段放进上下文。
  3. 要求模型只基于课程资料回答。
  4. 输出答案并引用对应课程文件。

这样更适合教学产品,因为答案与课程体系一致。

案例:企业制度问答

用户问:

出差住宿费超过标准,是否可以报销?

RAG 系统应该:

  1. 识别这是报销制度问题。
  2. 检索最新差旅政策。
  3. 检查用户所在地区和职级是否影响标准。
  4. 引用对应条款。
  5. 如果资料不足,提示联系财务确认。

这个场景中,引用和版本比回答流畅更重要。

常见误区

误区 1:RAG 可以彻底解决幻觉

不能。RAG 可以降低幻觉,但检索错误、资料错误、模型误读都会造成问题。

误区 2:有了长上下文,就不需要 RAG

长上下文有帮助,但把所有资料塞进去成本高、噪音大,也不利于引用和权限控制。

误区 3:RAG 等于向量数据库

向量数据库只是 RAG 的一部分。RAG 还包括清洗、切分、检索、重排、生成、引用和评估。

误区 4:微调比 RAG 更高级

它们解决的问题不同。频繁更新的事实知识通常更适合 RAG。

误区 5:资料越多,回答越准

无关资料会干扰模型,增加成本和延迟。关键是找到相关、可靠、权限正确的资料。

动手练习

选一个你熟悉的资料集,比如:

  • 公司制度。
  • 一门课程讲义。
  • 产品说明书。
  • 一组论文笔记。
  • 客服 FAQ。

完成表格:

问题 你的答案
用户最可能问哪些问题?
哪些问题必须引用原文?
哪些资料需要按主题切分?
哪些内容有权限限制?
哪些问题资料不足时必须拒答?
如果模型回答错了,风险是什么?
检查题(自测)
  1. 为什么 LLM 需要 RAG?
  2. RAG 和微调的核心区别是什么?
  3. RAG 系统可能在哪些环节失败?
  4. 为什么长上下文不能完全替代 RAG?
  5. 为什么权限过滤应该发生在检索前,而不是回答后?
参考答案
  1. 因为 LLM 默认不知道私有资料和最新信息,也不能天然提供可靠来源。RAG 通过检索外部资料,让模型基于资料回答。
  2. RAG 在推理时把资料放入上下文,适合更新频繁、需要引用的知识任务;微调改变模型参数,适合固定风格、格式或任务模式。
  3. 可能失败在资料质量、文档切分、检索、重排、Prompt、模型理解、引用生成、权限控制和评估等环节。
  4. 长上下文能放更多资料,但成本高、噪音多、权限难控、引用难做。RAG 的目标是先找到相关资料,再让模型回答。
  5. 如果先检索所有资料再让模型不要说敏感内容,模型仍可能看到不该看的信息。正确做法是先按权限过滤可访问资料,再检索。

Takeaway

RAG 的核心不是“给模型加一个数据库”,而是建立一套让模型查资料、用资料、引用资料并接受评估的机制。它让 LLM 更适合处理私有、实时、可追溯的知识任务,但它不能替代资料整理、权限控制和质量评估。