大模型RAG架构深度解析:让AI不再“一本正经地胡说八道“,程序员必备技能!
本文详细介绍了RAG(检索增强生成)技术的架构与实现流程,包括数据准备阶段(提取、分割、向量化、入库)和应用阶段(检索、提示词工程、生成)。重点讲解了文本分割策略、向量化模型选择、数据检索方法和提示词工程等关键技术点,并强调了RAG的核心目标是"检索要准、上下文要真、模型要被约束"。RAG不是简单的"给大模型接数据库",而是一套完整的信息检索与生成协同系统。
1. 引言
1.1.1. RAG 是怎么干活的?
可以把传统的大模型想象成一个闭卷考生—— 他靠记忆答题,知识固定在训练时。 而 RAG 则让他带上一本参考书: 在回答前,先去知识库中检索信息,再基于这些内容生成答案
| 对比维度 | 传统大模型 | 启用 RAG |
| 知识来源 | 训练语料(静态) | 外部知识库(动态) |
| 更新方式 | 重新训练 | 更新文档即可 |
| 回答逻辑 | 依靠记忆猜测 | 依托检索事实 |
| 是否可追溯 | 否 | 是,可附来源 |
RAG 的过程: 把问题转成语义向量;
在知识库中检索最相关的文档片段;
将这些片段拼进提示词(Prompt);
模型基于这些真实资料生成答案。
这就是网上传播很广泛的 7 个RAG架构(会在后面分七次文章讲解)

2. RAG架构
完整的RAG应用流程主要包含两个阶段:
数据准备阶段:数据提取——>文本分割——>向量化(embedding)——>数据入库
应用阶段:用户提问——>数据检索(召回)——>注入Prompt——>LLM生成答案

2.1. 数据准备阶段
数据准备一般是一个离线的过程,主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括:数据提取、文本分割、向量化、数据入库等环节。

2.1.1. 数据准备:
数据提取
数据加载:包括多格式数据加载、不同数据源获取等,根据数据自身情况,将数据处理为同一个范式。
数据处理:包括数据过滤、压缩、格式化等。
元数据获取:提取数据中关键信息,例如文件名、Title、时间等 。
2.1.2. 文本分割:
文本分割主要考虑两个因素:1)embedding模型的Tokens限制情况;2)语义完整性对整体的检索效果的影响。一些常见的文本分割方式如下:
句分割:以”句”的粒度进行切分,保留一个句子的完整语义。常见切分符包括:句号、感叹号、问号、换行符等。
固定长度分割:根据embedding模型的token长度限制,将文本分割为固定长度(例如256/512个tokens),这种切分方式会损失很多语义信息,一般通过在头尾增加一定冗余量来缓解。
文本分割策略 (应用层面的技术选型)
如果是中文场景,BGE 系列基本就是默认答案。它出自智源研究院,在中文和中英混合语料上的稳定性非常好,社区成熟,踩坑文档也多,属于那种“你不用很懂它,但它很少坑你”的模型。大多数中文知识库、客服、内部文档检索,用它不会出大问题。
如果你发现一个情况:同样的数据,BGE 的召回就是差那么一点,尤其是在一些偏业务、偏结构化、偏规则描述的文本上,那可以试试 M3E 系列。这是 Moka 社区比较早做中文 embedding 的模型,虽然热度不如 BGE,但在不少真实业务数据上,效果反而更贴近语义。很多时候不是 BGE 不行,而是“你的数据不像通用语料”,这时候 M3E 往往会给你惊喜。
OpenAI 的 embedding 模型更像一条“基准线”。如果你是纯英文文档,或者团队完全没有模型部署和运维能力,只想用 API 快速上线,那 text-embedding-3-small / large 很合适。但如果是中文,或者你在意成本和可控性,它通常不是最优解。
还有一类容易被忽略的模型是 Jina Embeddings。它最大的价值不在于“语义更准”,而在于能吃很长的文本。如果你的文档切片本身就很长,又不想为了 embedding 把内容切得七零八落,那 Jina 是一个值得考虑的方案。
2.1.3. 向量化(embedding):
向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。目前常见的embedding模型如表中所示,这些embedding模型基本能满足大部分需求,但对于特殊场景(例如涉及一些罕见专有词或字等)或者想进一步优化效果,则可以选择开源Embedding模型微调或直接训练适合自己场景的Embedding模型。
模型名称 描述 获取地址
ChatGPT-Embedding ChatGPT-Embedding由OpenAI公司提供,以接口形式调用。
ERNIE-Embedding V1 ERNIE-Embedding V1由百度公司提供,依赖于文心大模型能力,以接口形式调用。
M3E M3E是一款功能强大的开源Embedding模型,包含m3e-small、m3e-base、m3e-large等多个版本,支持微调和本地部署。
BGE BGE由北京智源人工智能研究院发布,同样是一款功能强大的开源Embedding模型,包含了支持中文和英文的多个版本,同样支持微调和本地部署。
2.1.4. 数据入库:
数据向量化后构建索引,并写入数据库的过程可以概述为数据入库过程,适用于RAG场景的数据库包括:FAISS、Chromadb、ES、milvus等。一般可以根据业务场景、硬件、性能需求等多因素综合考虑,选择合适的数据库。
2.2. 应用阶段
在应用阶段,我们根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案。关键环节包括:数据检索、注入Prompt等。

2.2.1. 数据检索
常见的数据检索方法包括:相似性检索、全文检索等,根据检索效果,一般可以选择多种检索方式融合,提升召回率。
- 相似性检索
:即计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括:余弦相似性、欧氏距离、曼哈顿距离等。
- 全文检索
:全文检索是一种比较经典的检索方式,在数据存入时,通过关键词构建倒排索引;在检索时,通过关键词进行全文检索,找到对应的记录。
检索策略(应用层面的技术选型)
首先是向量相似性检索,也是 RAG 和传统搜索最大的区别。它不再匹配关键词,而是匹配“意思”,让系统具备语义理解能力。工程上最容易踩的坑是距离算法,绝大多数 embedding 模型更适合用余弦相似度,如果不小心用了 L2 距离,效果可能会明显下降却不报错。另外要注意,向量检索对编号、型号、错误码这类精确信息并不友好,这是方法本身的边界。
第二种是全文检索,典型代表是 Elasticsearch / Lucene,基于倒排索引。它不懂语义,但在关键词、专有名词、规则类文本上的命中率非常高,而且结果可控。在很多真实业务里,这一层依然是兜底保障。
因此,实际工程中更推荐混合检索(Hybrid Search):
向量检索负责语义召回,保证方向不跑偏;
全文检索负责关键词命中,防止关键信息漏掉;
两路结果合并后再排序,整体稳定性明显提升。
2.2.2. 提示词工程
在 RAG 场景下,提示词工程的目标只有一个:强迫 LLM “忘记”它自带的训练知识,完全依赖你喂给它的“上下文”来回答问题(Grounding)。
标准 RAG 提示词架构:
一个优秀的 RAG Prompt 通常包含以下 4 个部分,顺序很重要:
角色设定 (Role)
:告诉 LLM 它是谁(专业的知识库助手)。
任务指令 (Instruction)
:核心规则(比如“只根据上下文回答”、“不要编造”)。
上下文数据 (Context)
:这是你检索到的那几段文字,通常用特殊符号包裹。
用户问题 (Query)
:用户真正问的内容。
📝标准模版代码 (可以直接拿去用)
MarkDown
Role
你是一个专业的企业知识库助手。你的任务是根据提供的【参考文档】回答用户的问题。
Rules (关键!防幻觉指令)
-
必须**仅依赖**下方的【参考文档】进行回答,不要使用你内部的训练知识。
-
如果【参考文档】中没有包含回答问题所需的信息,请直接回答:“知识库中未找到相关信息”,**严禁编造**。
-
回答需要逻辑清晰,分点表述。
-
如果可能,请在回答的末尾注明引用的文档名称。
Context (检索到的片段)
以下是参考文档片段:
{context_str}
User Question
用户的问题是:
{query_str}
Answer
请开始回答:
2.2.3. LLM生成
【任务描述】
假如你是一个专业的客服机器人,请参考【背景知识】,回
【背景知识】
{content} // 数据检索得到的相关文本
【问题】
石头扫地机器人P10的续航时间是多久?
Prompt作为大模型的直接输入,是影响模型输出准确率的关键因素之一。在RAG场景中,Prompt一般包括任务描述、背景知识(检索得到)、任务指令(一般是用户提问)等,根据任务场景和大模型性能,也可以在Prompt中适当加入其他指令优化大模型的输出。一个简单知识问答场景的Prompt如上所示。
总结:RAG 不是模型工程,而是系统工程
从整体流程来看,RAG 并不是“给大模型接个数据库”这么简单,而是一套完整的信息检索与生成协同系统。Embedding 模型决定你“能不能找对东西”,检索策略决定你“会不会漏掉关键事实”,Prompt 工程决定模型“敢不敢胡说”,而最终的生成效果,往往是这些环节共同作用的结果。
在真实业务中,RAG 的性能瓶颈很少出现在大模型本身,更多出现在数据准备是否合理、切片是否科学、检索是否稳定、Prompt 是否约束到位。一旦其中某一环失控,模型再强,也只能在错误上下文里一本正经地胡说八道。
因此,一个可靠的 RAG 系统,核心目标只有三个:
检索要准、上下文要真、模型要被约束。
只要这三点成立,模型规模反而不是最重要的变量。
后续如果继续展开,可以分别从 分块策略优化、召回与重排序、多路检索融合、幻觉评估与监控 等角度,进一步把 RAG 从“能跑”推进到“能上线、能长期用”。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐



所有评论(0)