RAG(Retrieval-Augmented Generation,检索增强生成)
RAG 是什么?
RAG(Retrieval-Augmented Generation,检索增强生成)是一种让 AI 在回答问题时,先从外部知识库中检索相关资料,再结合这些资料生成答案的技术。
简单来说:
RAG = 先查资料,再回答问题。
它可以让大语言模型在不重新训练模型的情况下,利用企业文档、学校资料、产品说明书、知识库等外部信息回答问题。
一句话理解
如果普通 AI 是:
用户提问 → AI 根据自己“记住的知识”回答
那么 RAG 是:
用户提问 → 搜索相关资料 → 把资料交给 AI → AI 根据资料回答
例如你问:
“公司的年假制度是什么?”
普通大模型可能不知道你公司的具体制度。
而使用 RAG 后,系统可以先从公司的员工手册中找到:
“正式员工每年享有 10 天带薪年假……”
然后把这段资料提供给大模型,最终生成回答。
RAG 解决了什么问题?
大语言模型虽然拥有大量知识,但它并不是一个可以随时访问你内部资料的数据库。
实际应用中经常会遇到几个问题。
1. 模型不知道你的私有数据
例如:
- 公司内部规章制度
- 学校管理文件
- 企业产品手册
- 项目技术文档
- 内部知识库
- 用户上传的资料
这些内容通常没有出现在模型训练数据中。
如果不提供这些资料,模型自然无法准确回答。
2. 模型知识可能存在时效性问题
大模型的训练数据并不会实时更新。
例如:
“我们公司 2026 年最新的报销标准是什么?”
模型不可能凭空知道你公司刚刚修改的制度。
RAG 可以在回答之前,先查询最新的知识库内容。
3. 模型可能产生“幻觉”
所谓 AI 幻觉,是指模型生成了看起来合理,但实际上并不正确的信息。
例如:
用户问:
“学校计算机学院毕业论文答辩要求是什么?”
如果模型没有相关资料,它可能会根据常见的高校规定“猜”一个答案。
使用 RAG 后,可以让模型优先参考学校提供的正式文件,从而降低胡编乱造的概率。
注意:RAG 可以降低幻觉风险,但不能保证 AI 永远不会产生错误。
RAG 是怎么工作的?
一个完整的 RAG 系统通常可以简单理解成两个阶段:
第一阶段:建立知识库
先把各种资料转换成 AI 可以检索的形式。
PDF / Word / 网页 / TXT
↓
文档解析
↓
文本切分
↓
Embedding
↓
向量数据库
第二阶段:用户提问
用户提出问题以后:
用户问题
↓
问题向量化
↓
检索知识库
↓
找到相关内容
↓
将资料 + 用户问题
↓
大语言模型
↓
最终答案
因此可以把 RAG 简化成:
知识库 + 检索 + 大语言模型
RAG 的完整流程
下面按照一个实际的知识库系统来看。
① 导入资料
首先把需要让 AI 学习的资料导入知识库。
例如:
员工手册.pdf
产品说明书.docx
技术文档.md
公司制度.txt
RAG 系统会对这些文件进行解析。
② 文档切分
一份文档可能有几十页甚至几百页。
如果直接把整个文档交给模型进行检索,效率会比较低。
因此通常需要把文档拆成多个较小的文本片段。
例如:
员工手册
第 1 章 公司制度
↓
文本片段 1
第 2 章 考勤制度
↓
文本片段 2
第 3 章 薪酬制度
↓
文本片段 3
第 4 章 请假制度
↓
文本片段 4
这些文本片段通常被称为 Chunk(文本块)。
③ Embedding 向量化
文本不能直接进行高效的语义搜索,因此需要通过 Embedding 模型将文本转换成向量。
例如:
“员工每年有 10 天带薪年假”
↓ Embedding
[0.12, -0.38, 0.72, 0.15, ...]
这个向量可以理解为文本的“语义坐标”。
意思相近的文本,在向量空间中通常也会比较接近。
④ 保存到向量数据库
生成的向量以及对应的原始文本会被保存下来。
例如:
向量
↓
Vector Database
0.12,-0.38,0.72...
↓
员工每年有10天带薪年假
常见的向量数据库包括:
- Milvus
- Qdrant
- Weaviate
- Pinecone
- pgvector
用户提问后发生什么?
假设用户问:
“员工一年有多少天年假?”
系统不会直接把这个问题交给大模型。
而是先进行检索。
① 用户问题向量化
员工一年有多少天年假?
↓
Embedding
↓
问题向量
② 检索相关资料
系统使用这个向量去知识库中搜索语义最相近的内容。
例如找到:
员工每年享有 10 天带薪年假……
同时可能找到:
年假申请需要提前 3 个工作日提交……
以及:
入职满一年后开始享受年假……
系统会根据相关程度进行排序。
③ 将检索结果交给大模型
最终发送给大模型的内容可以理解成:
用户问题:
员工一年有多少天年假?
参考资料:
员工每年享有 10 天带薪年假。
请根据参考资料回答用户问题。
④ 大模型生成最终答案
最终用户看到:
根据公司员工手册,员工每年享有 10 天带薪年假。
这样就完成了一次 RAG 查询。
RAG 和普通 AI 有什么区别?
可以通过下面这个例子理解。
普通大模型 | RAG | |
|---|---|---|
使用模型自身知识 | ✅ | ✅ |
查询外部知识 | ❌ | ✅ |
使用企业内部资料 | ❌ | ✅ |
使用实时更新资料 | 有限制 | ✅ |
不需要重新训练模型 | — | ✅ |
可以引用知识库内容 | 有限 | ✅ |
能完全避免幻觉 | ❌ | ❌ |
所以 RAG 并不是重新训练一个 AI。
它更像是在:
给 AI 配了一套“外接知识库”。
RAG 的典型应用场景
RAG 最常见的应用就是让 AI 能够理解和使用特定领域的知识。
企业知识库
例如:
- 公司规章制度
- 员工手册
- HR 制度
- 产品资料
- 技术文档
用户可以直接询问:
“公司的出差报销标准是什么?”
学校知识库
例如:
- 学校规章制度
- 教务通知
- 培养方案
- 学生手册
- 校历
- 办事流程
学生可以直接询问:
“补考申请什么时候截止?”
技术文档问答
把项目的:
API 文档
开发文档
数据库文档
部署文档
GitHub README
导入知识库。
然后直接询问:
“这个接口需要传哪些参数?”
产品客服
将:
- 产品说明书
- FAQ
- 售后政策
- 使用指南
导入知识库。
用户可以直接询问产品相关问题。
RAG 的核心组成
一个完整的 RAG 系统通常包含以下几个部分:
1. 文档解析
负责读取:
PDF、Word、Excel、网页、Markdown 等内容。
2. 文本切分
将长文档拆分成适合检索的文本块。
对应概念:Chunk
3. Embedding
将文本转换成向量。
4. 向量数据库
保存向量和对应文本。
5. Retriever
负责从知识库中找到与问题相关的内容。
6. Reranker
对检索结果进行进一步排序,提高相关内容的准确性。
7. LLM
最终根据:
用户问题 + 检索结果
生成自然语言答案。
RAG 常见相关概念
如果你第一次接触 RAG,下面这些概念经常会一起出现:
概念 | 简单理解 |
|---|---|
Chunk | 文档切分后的文本块 |
Embedding | 把文本转换成向量 |
Vector Database | 存储和检索向量 |
Retriever | 找相关资料 |
Reranker | 对检索结果重新排序 |
Context | 提供给模型的上下文 |
LLM | 根据资料生成最终答案 |
Hybrid Search | 关键词搜索 + 向量搜索 |
Metadata | 描述文档的额外信息 |
RAG 的优势
不需要重新训练模型
最大的优势之一,就是不需要因为增加新知识而重新训练大模型。
只需要:
更新知识库即可。
更适合企业私有知识
企业可以把内部资料放入自己的知识库中,让 AI 根据这些资料回答问题。
知识更新更加方便
例如公司修改了员工制度。
只需要更新:
旧制度.pdf
↓
新制度.pdf
然后重新建立对应的知识索引即可。
可以结合来源进行回答
优秀的 RAG 系统还可以告诉用户:
这个答案来自哪一份文档、哪一页、哪一段。
这样用户可以进一步验证 AI 的回答。
RAG 有什么缺点?
RAG 并不是万能的。
检索不到正确资料
如果知识库中没有相关内容,系统自然无法提供正确答案。
文档切分不合理
如果 Chunk 切得太小:
上下文可能不完整。
如果切得太大:
检索准确度可能下降。
检索结果不准确
如果 Retriever 找错了资料,即使大模型能力很强,也可能生成错误答案。
仍然可能产生幻觉
即使提供了正确资料,大模型也可能对资料进行错误理解。
所以实际项目通常还需要:
检索优化 + Rerank + Prompt 约束 + 引用来源 + 答案校验
RAG 和 Fine-tuning 有什么区别?
这是很多初学者容易混淆的地方。
简单来说:
RAG 是给 AI “查资料”。
Fine-tuning 是让 AI “学习一种特定的行为或能力”。
例如:
你希望 AI 知道公司最新规章制度
更适合:
RAG
因为制度可能经常变化。
你希望 AI 学会固定的回答风格
例如:
所有客服回答都使用统一格式。
这种情况下可以考虑:
Fine-tuning
两者也可以一起使用
实际项目中:
RAG + Fine-tuning
也可以结合使用。
一个简单的 RAG 示例
假设我们建立一个:
“AI学习猫知识库”
知识库中有:
RAG.md
Embedding.md
Agent.md
MCP.md
Prompt.md
用户问:
“Embedding 是什么?”
系统首先从知识库中检索:
Embedding.md
找到相关内容后:
用户问题
+
Embedding.md 相关内容
↓
LLM
↓
AI生成答案
最终用户就可以直接获得基于“AI学习猫知识库”的回答。
总结
RAG 可以简单理解为:
让 AI 在回答问题之前,先从外部知识库中找到相关资料,再利用这些资料生成答案。
它解决的核心问题是:
如何让大语言模型使用模型之外的知识。
一个典型 RAG 流程可以概括为:
文档
↓
解析
↓
切分 Chunk
↓
Embedding
↓
向量数据库
↓
用户提问
↓
检索
↓
Rerank
↓
上下文
↓
LLM
↓
最终答案
如果你只需要记住一句话:
RAG = 检索相关知识 + 大模型生成答案。
延伸阅读
相关知识
- Embedding
- Vector Database
- Chunk
- Retriever
- Reranker
- LLM
- Agent
- Prompt
推荐阅读
- RAG 官方/技术文档
- RAG 相关论文
- 向量数据库文档
适合继续学习
想真正搭建一个 RAG 知识库,可以继续阅读「RAG 知识库搭建教程」。