RAG 是什么
大模型很强,但它的强,首先是“会生成高质量文本”,不是“天然知道你现在需要的所有事实”。当你问它“贵司 2025 年 Q3 的销售数据是多少”时,它答不上来,往往不是因为模型笨,而是因为这些数据既不在它的训练参数里,也不在当前上下文里。RAG 要解决的,正是这个“模型能力很强,但知识边界很硬”的问题。Lewis 等人在 2020 年提出的原始 RAG 论文,就把它概括为把参数化记忆和外部非参数化记忆结合起来做生成。(arXiv)
这篇文章会讲什么
flowchart LR
A[用户问题] --> B[检索相关资料]
B --> C[组装上下文]
C --> D[LLM 生成回答]
D --> E[带证据的答案]
K[外部知识库] --> B
很多人第一次接触 RAG,会把它理解成“给大模型接一个知识库”。这个理解不算错,但太轻了。RAG 真正重要的地方,不是多了一个数据库,而是它改变了 LLM 回答问题的方式:从“闭卷作答”变成“先查资料,再回答”。这意味着模型不再只能依赖训练时学到的知识,而可以在回答前动态读取外部信息。这个模式今天已经成为企业知识问答、内部 Copilot、文档助手、客服问答等场景的标准做法。LangChain 的官方 RAG 教程,本质上也是围绕这条链路来组织:用户问题进入系统后,先检索,再把检索结果与问题一起送给模型生成回答。(arXiv)
大模型的三大痛点
在谈 RAG 之前,先把“为什么需要它”讲清楚。对企业落地来说,LLM 至少有三类非常现实的痛点:
| 痛点 | 表现 | 典型场景 |
|---|---|---|
| 知识截止 | 模型训练数据有时间边界,不知道之后发生的事 | 问最新政策、最新产品、最新市场数据 |
| 幻觉 | 模型会生成流畅但不真实的细节 | 问具体参数、具体制度条款、具体数字 |
| 私有数据不可及 | 模型默认看不到企业内部资料和数据库 | 问公司制度、内部 SOP、客户数据 |
这三类问题分别对应了三种常见失败方式:不知道、乱猜、看不到。RAG 的价值就在于,它不是试图“让模型记住一切”,而是让模型在需要时能够访问外部知识。(arXiv)
RAG 的定义
RAG 全称 Retrieval-Augmented Generation,中文通常叫“检索增强生成”。它的核心思想非常朴素:
- 用户先提出问题
- 系统先去外部知识库里找相关材料
- 把找到的材料和用户问题一起送给 LLM
- 让 LLM 基于这些材料生成回答
这意味着,RAG 不是替代 LLM,而是在 LLM 前面加了一层“查资料”的过程。原始论文中的做法是把外部知识库作为非参数化记忆接入生成模型;今天工程实践里更常见的是把检索和生成解耦:检索用 embedding + 向量数据库,生成用通用 LLM。(arXiv)
用户问题 → 检索相关文档 → 将文档 + 问题送入 LLM → 生成答案
这里的“知识库”不一定非得是向量数据库。它可以是:
- 向量数据库
- 传统关键词搜索系统
- 混合检索系统
- 企业文档平台
- 数据库查询层
- 任何能返回相关内容的外部知识源
所以从系统设计上看,RAG 不是某个产品,而是一种系统设计模式。(arXiv)
三个核心组件
| 组件 | 英文 | 职责 |
|---|---|---|
| 检索 | Retrieval | 根据用户问题,从知识库中找出最相关的文档片段 |
| 增强 | Augmentation | 把检索到的内容组织成上下文,注入到 prompt 中 |
| 生成 | Generation | LLM 基于增强后的 prompt 生成最终答案 |
这三个词看起来简单,但它们分别代表三类完全不同的工程问题。Retrieval 解决“找什么”;Augmentation 解决“怎么把找到的内容塞给模型”;Generation 解决“模型如何基于这些内容组织出一个可读答案”。RAG 的效果不好,可能是检索错了,也可能是上下文组织得差,还可能是模型没有正确利用检索结果。所以别把 RAG 想成单一步骤,它天生就是一条流水线。(arXiv)
开卷 vs 闭卷:一个最有用的类比
理解 RAG,最好的类比仍然是考试。
- 闭卷考试:模型只能依赖自己参数里“记住”的知识作答
- 开卷考试:模型可以先翻资料,再根据资料回答
Fine-tuning 更像是把某些知识、风格或任务模式“背进模型里”;RAG 更像是把资料摆在桌上,让模型在回答前先查一遍。这个类比非常重要,因为它直接解释了 RAG 的两个关键优势:第一,知识库可以随时更新,不必重新训练模型;第二,回答可以带来源,便于审计和溯源。Lewis 等人的原始论文也把 RAG 的优势描述为:外部记忆更容易更新,并且能为生成提供可追踪的知识来源。(arXiv)
当然,开卷考试不意味着永远答对。 如果系统查到的资料本身就是错的,或者查到了对的资料但模型解读错了,答案依然会错。所以 RAG 从来不是“消灭幻觉”的银弹,它只是把回答从“纯靠模型猜”推进到“尽量基于证据回答”。这一步已经非常有价值,但仍然需要检索、重排、上下文组织和输出约束共同配合。(arXiv)
为什么 2026 年 RAG 仍然重要
这几年一个常见问题是:既然长上下文越来越强,RAG 还有没有必要?
答案是:有,而且非常有。
原因不难理解。OpenAI 的 GPT-4.1 系列官方支持最高 100 万 token 上下文,Google 的 Gemini 2.5 Pro 官方也支持约 100 万 token 输入;这说明长上下文能力确实在快速进步。(OpenAI)
但长上下文解决的是:
模型这次最多能“看见多少内容”
RAG 解决的是:
这次到底应该把哪几段内容拿给模型看
这是两个完全不同的问题。
把整个知识库直接塞进上下文,往往会遇到三个现实问题:
- 成本高,token 消耗大
- 噪声多,无关内容会干扰模型
- 长上下文里,中间信息未必能被同样稳定利用
所以即使在长上下文时代,RAG 依然重要,因为它让系统只把“最相关的那几段”送进去,而不是让模型在海量上下文里自己翻。换个工程角度看:
长上下文解决“能塞多少”,RAG 解决“该塞什么”。(OpenAI)
RAG vs Fine-tuning vs 长上下文
| 方案 | 更适合什么问题 | 优点 | 缺点 |
|---|---|---|---|
| RAG | 知识频繁更新、私有数据、需要可溯源回答 | 可更新、可解释、接入私有知识方便 | 依赖检索质量,系统链路更复杂 |
| Fine-tuning | 风格、术语、固定任务模式 | 响应快、行为更稳定 | 更新知识成本高,不适合高频变化事实 |
| 长上下文 | 单次任务需要读大量原文 | 实现直接、适合单文档分析 | 成本高、噪声大,不等于好检索 |
这三者不是非此即彼。现实里经常是组合使用:
- 用 Fine-tuning 固化风格和任务格式
- 用 RAG 注入最新知识和私有资料
- 用长上下文处理某次会话里必须整段阅读的大文档
所以更好的问题不是“RAG 和微调谁更好”,而是:
哪一部分该靠模型参数,哪一部分该靠外部知识,哪一部分该靠当前上下文。 (arXiv)
简史:从 Lewis 2020 到现代模块化 RAG
RAG 这个名字并不是后来工程圈随便起的,而是来自 2020 年 Lewis 等人的论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks。原始论文里的 RAG 更偏研究范式:检索器和生成器一起优化,目标是让模型在知识密集型任务上结合参数记忆和外部记忆。(arXiv)
但今天工程上的 RAG,已经演化成更模块化的形态:
- Embedding 模型负责把 query 和文档变成向量
- 向量数据库负责高效检索
- reranker 负责精排
- LLM 负责把检索内容组织成最终回答
这种形态虽然比原始论文里的“端到端 RAG”更松耦合,但工程上更灵活,也更容易替换组件。你可以换 embedding、换 vector DB、换模型,而不需要重新训练整套系统。这也是为什么 RAG 会在企业实践里迅速普及:它非常工程化。(arXiv)
一个简单例子:为什么企业场景会偏爱 RAG
假设你有一个企业知识库,里面包含:
- 员工手册
- 报销制度
- API 文档
- 客服 SOP
- 内部产品说明
用户问:
年假有多少天?
没有 RAG
模型可能会:
- 根据常识猜一个范围,比如“通常是 5–15 天”
- 或者说不知道
- 或者说出一个听起来合理但并非你公司政策的数字
有 RAG
系统先检索到员工手册相关条款,例如:
“员工入职满一年后,享有 10 天年假。”
然后模型再基于这段内容回答:
根据《员工手册》,入职满一年后可享有 10 天年假。
这两个答案的差别,不只是“后者更准”,而是:
- 后者有依据
- 后者可审计
- 后者可以展示来源
- 后者随着知识库更新而自动更新
这正是企业场景最看重的价值。(arXiv)
实践中的常见误区
| 误区 | 更准确的说法 |
|---|---|
| RAG 能完全消除幻觉 | 不能,它只能显著降低“纯靠猜”的概率 |
| 检索越多越好 | 不是,过多无关内容会稀释重点并增加噪声 |
| RAG 和 Fine-tuning 二选一 | 不是,很多系统会把两者组合使用 |
| 长上下文能替代 RAG | 不能完全替代,长上下文更像“容量”,RAG 更像“选择机制” |
最值得强调的一点是:
RAG 是一套工程系统,不是一个理论银弹。
它的效果同时受这些因素影响:
- 文档清洗质量
- chunk 切分策略
- embedding 模型
- 检索方式
- rerank 是否存在
- prompt 组织
- 回答约束
- 引用与后处理机制
所以,一个“RAG 效果不好”的系统,不一定是 RAG 这个思路有问题,更可能是其中某一个环节还没做好。(arXiv)
何时考虑 RAG
| 场景信号 | 建议 |
|---|---|
| 问题依赖企业内部文档、制度、产品说明 | 强烈建议使用 RAG |
| 知识更新频率高 | RAG 通常优于把知识硬塞进模型 |
| 需要给出依据或引用来源 | RAG 很合适 |
| 只是通用常识问答 | 可以先不接 RAG |
| 主要是单份长文档深度分析 | 可优先考虑长上下文,不一定先做 RAG |
一句话判断法是:
如果答案依赖“模型训练后才出现的知识”或“模型从未见过的私有知识”,那你就应该认真考虑 RAG。 (arXiv)
RAG 的工程挑战
把 RAG 接上,并不等于系统就能稳定工作。落地时最常见的挑战包括:
| 挑战 | 常见原因 | 常见方向 |
|---|---|---|
| 检索不准 | chunk 切分差、embedding 不匹配、query 表达弱 | 优化 chunk、embedding、query rewrite |
| 文档更新困难 | 缺乏增量更新和版本管理 | 做 ingest 流程、去重、增量索引 |
| 多语言效果不稳 | embedding 模型语言覆盖不足 | 选多语言模型、按语言分索引 |
| 长文档难处理 | 切太碎或切太粗 | 章节切分、parent-child、分层检索 |
| 结果看起来有依据但仍不准 | 检索到了不完全相关内容,或模型误解了材料 | rerank、引用约束、答案校验 |
所以从工程视角看,RAG 的难点不只是“会不会检索”,而是:
如何把检索、组织、生成这三步做成一条高召回、低噪声、可解释的链路。
这也是为什么 RAG 值得单独开一个系列。(arXiv)
小结
RAG 解决的是大模型的“知识边界”问题。它不是让模型变成另一个模型,而是让模型在回答前有机会访问外部知识。这个能力对于三类场景尤其关键:
- 知识会变
- 知识是私有的
- 回答必须有依据
即使在长上下文和更强模型不断出现的今天,RAG 仍然是企业落地 LLM 的主流方案之一,因为它同时兼顾了更新性、成本、可控性和可解释性。Lewis 等人的原始论文给出了这个方向的研究起点,而今天的工程实践则把它发展成了一条成熟的系统路线。(arXiv)
核心概念速查
| 概念 | 一句话 |
|---|---|
| RAG | 在生成答案前先检索外部知识,再基于知识作答 |
| Retrieval | 从知识库中找出与问题最相关的文档片段 |
| Augmentation | 把检索结果组织成模型当前可见的上下文 |
| Generation | 模型基于问题和参考资料生成最终回答 |
| Parametric Memory | 模型参数里“记住”的知识 |
| Non-parametric Memory | 外部知识库、索引或检索系统提供的知识 |
| 开卷 vs 闭卷 | RAG 像开卷查资料,Fine-tuning 更像把知识背进参数 |
| 长上下文 vs RAG | 长上下文解决容量,RAG 解决选择什么内容进入上下文 |