RAG(检索增强生成)系统一直是企业里使用大语言模型(LLMs)最有用的应用之一。我记得大约之前我写过第一篇关于 RAG 的文章,那时候这个词还没被大家广泛使用。

当时,我描述的 RAG 系统是最简单的实现方式。从那时起,行业已经发展了很多,引入了很多先进的技术。
在本文中,我们会探讨 RAG 的演变过程,从最初的简单版本(Naive RAG)到现在更智能的版本(Agentic RAG)。读完之后,你就会明白每一步的演变都解决了哪些问题。
一、Naive RAG 架构剖析
2022年底,ChatGPT 的出现让大语言模型(LLMs)变得非常流行。差不多同一时间,一种叫做“检索增强生成”(RAG)的技术也出现了。这个技术主要是为了解决一些大语言模型本身存在的问题,比如:
- 有时会“胡说八道”,也就是生成一些不准确或不真实的信息。
- 能处理的信息量有限,就像一个人一次只能记住这么多东西。
- 无法访问一些非公开的数据,比如公司内部的资料。
- 无法自动获取模型训练之后的新信息,如果要更新知识,就需要重新训练模型,这既耗时又耗力。
RAG 的最简单架构设计的实现方式是这样的:

1、 预处理阶段:
- 把整个知识库的文本资料分割成一个个小块,每个小块都是一段可以查询的文本。这些资料可能来自不同的地方,比如:公司内部的文档、PDF 报告等。
- 用一个特殊的模型(嵌入模型)把这些文本块转换成一种特殊的代码(向量嵌入)。
- 把这些代码存到一个特殊的数据库(向量数据库)里,同时保存每个向量对应的原始文本和指向向量的链接。
2、检索阶段:
- 在向量数据库里,用同一个嵌入模型处理知识库中的文档内容和用户的问题,确保查询和知识库中的信息能够准确匹配。
- 在向量数据库的索引上运行查询,选择要检索的向量数量,这决定了你将用多少上下文信息来回答查询。
- 向量数据库会执行一个搜索,找到最相似的向量,然后把这些向量映射回它们对应的原始文本块。
- 把问题和检索到的上下文文本块一起通过一个提示词传递给大语言模型,告诉模型只用这些上下文来回答这个问题。这并不意味着不需要设计好的提示词–你还需要确保模型返回的答案符合预期,比如:如果检索到的上下文中没有相关信息,就不要编造答案。
二、Naive RAG 架构的模块组成
在搭建一个能用在实际工作(生产级)的 RAG 系统时,即使不使用什么高级技术,也要考虑很多会变化的部分(动态模块)。

1、检索部分:
分块策略:决定怎么把用来提供额外信息的数据切成一块一块的。
- 可以选择切小一点或大一点的块。
- 可以用滑动窗口或固定窗口的方法来切。
- 检索时,可以选择是否带上块的“亲戚”信息(父块/链接块),或者只用原始检索到的数据。
嵌入模型:选择一个模型,把额外信息转换成一种特殊的向量(嵌入到 latent space),或者用这个模型从这种向量中检索信息。这里需要考虑上下文嵌入。
向量数据库:
- 选择用哪种数据库。
- 决定数据库放在哪里。
- 考虑除了向量嵌入,还要存哪些额外信息(元数据),这些信息可以用来在检索前筛选和检索后过滤结果。
- 确定如何构建数据库的索引。
向量搜索:
- 选择用什么标准来衡量相似度。
- 决定查询时是先看元数据还是先做近似最近邻(ANN)搜索。
- 可以考虑混合搜索方案。
启发式规则:在检索流程中应用一些基于经验的规则。
- 根据文档的时间来调整重要性。
- 对检索到的上下文进行去重,按多样性排序。
- 检索时带上内容的原始来源信息。
- 根据不同条件(比如:用户的查询意图、文档类型)对原始文本进行特别处理。
2、生成部分:
- 大语言模型:为你的应用选择合适的大语言模型(LLM)。
- 提示词工程:即使可以在提示词中加入上下文信息,也需要精心设计提示词,调整系统,以生成符合预期的输出,并防止被“越狱”(即防止模型生成不适当的内容)。
完成所有这些步骤后,我们才能搭建起一个能运行的 RAG 系统。
但不幸的是,这类系统往往难以真正解决实际问题。由于各种原因,这种系统的准确性可能并不高。
三、Naive RAG 架构设计的高级技术
为了提升 Naive RAG 系统的精确度,我们尝试了一些有效的方法:
查询调整 - 这里有几个技巧:
- 查询重写:让大语言模型(LLM)改写原始问题,让它更适合用来检索信息。这可能包括修正语法错误,或者把问题简化成更直接的表述。
- 查询扩展:让 LLM 对原始问题进行多次改写,生成多个不同的版本。然后,对每个版本都进行检索,以找到更多可能相关的信息。
重新排序 - 对初次检索出来的文档,使用比普通搜索更复杂的方法来重新排序。这通常需要用到更大型的模型,并且在检索阶段故意获取比实际需要更多的文档。重新排序和前面提到的查询扩展一起用效果最好,因为查询扩展通常能返回更多的数据。这个过程有点像我们在推荐系统中的做法。
微调嵌入模型 - 在某些领域(比如:医疗),如果用基础的嵌入模型来检索信息效果不好,你可能需要对嵌入模型进行定制化的微调。
接下来,我们再看看其他一些高级的 RAG 技术和架构。
四、上下文检索
上下文检索这个想法是 Anthropic 团队去年提出来的,主要是为了让用检索来加强生成的 AI 系统更精确、更靠谱。
我觉得上下文检索既简单又直接,而且效果确实不错。
下面是上下文检索怎么操作的:

1、预处理阶段:
- 用你选好的方法把文档切成一块一块的文本。
- 把每个文本块和整个文档一起放到一个提示词里。
- 在提示词里加上指示,让大语言模型(LLM)找出文本块在文档里的位置,并给它写个简短的介绍。然后把这个提示词放到 LLM 里。
- 把上一步做出来的介绍和原始文本块合在一起。
- 把这些合并好的数据放到一个 TF-IDF 嵌入器里。
- 再把数据放到一个基于 LLM 的嵌入模型里。
- 把步骤5和步骤6做出来的东西存到一个能快速搜索的数据库里。
2、检索阶段:
- 用用户的提问去找相关的介绍。用一种叫近似最近邻(ANN)的方法来做语义匹配,同时用 TF-IDF 索引来做精确搜索。
- 用排序融合技术把检索出来的结果合并、去重,然后选出前 N 个选项。
- 对上一步的结果重新排序,缩小到前 K 个选项。
- 把步骤3的结果和用户提问一起放到 LLM 里,生成最终的答案。
五、缓存增强生成(Cache Augmented Generation)
2024年底,社交媒体上出现了一份引起轰动的白皮书,介绍了一种可能彻底改变 RAG(检索增强生成)的技术–CAG(缓存增强生成)。我们先了解一下 RAG,再简单看看 CAG:

- CAG 会把所有的外部预先信息计算好,存到大语言模型(LLM)的缓存里,并存到内存中。这个计算只需要做一次,之后就可以重复使用这个缓存,不需要重新计算。
- 把用户的提问和一些系统提示词和怎么使用缓存信息的提示词一起输入 LLM。
- 把 LLM 生成的答案返回给用户。完成后,清除缓存里的临时内容,只保留最初缓存的信息,这样 LLM 就可以准备生成下一个答案了。
CAG 承诺,通过把全部信息存在缓存里(而不是每次生成时只检索一部分),可以实现更精确的检索。但实际情况如何呢?
- CAG 并不能解决因为信息太长而导致的不准确问题。
- 在数据安全方面,CAG 有很多限制。
- 对于大公司来说,把整个内部知识库都加载到缓存里几乎不可能。
- 缓存不能动态更新,添加新数据非常困难。
实际上,自从很多 LLM 供应商引入了提示词缓存技术后,我们实际上已经在用 CAG 的一种变体了。我们的方法可以说是 CAG 和 RAG 的结合,具体操作如下:

1、数据预处理:
- 在 CAG 中,我们只使用变化不大的数据源。除了要求数据更新不频繁,我们还会考虑哪些数据源最常被查询用到。确定了这些信息后,我们才会把所有选定的数据预先计算好,存到 LLM 的缓存里,并缓存在内存中。这个计算只需要做一次,之后就可以多次使用,不需要重新计算。
- 对于 RAG,如果需要,我们可以把向量嵌入预先计算好,存到兼容的数据库里,供之后检索用。有时候对于RAG来说,只需要更简单的数据类型,常规数据库就足够了。
2、查询路径:
- 构建一个包含用户提问和系统提示词的提示词,明确指导大语言模型怎么利用缓存的信息和外部检索到的信息。
- 把用户提问转换成向量嵌入,用来在向量数据库里进行语义搜索,并从存储中检索相关数据。如果不需要语义搜索,就查询其他来源,比如实时数据库或互联网。
- 把步骤4中获取的外部信息整合到最终的提示词中,以提高回答的质量。
- 把最终生成的答案返回给用户。
接下来,我们将探讨最新的技术发展方向–Agentic RAG。
六、Agentic RAG 架构设计
Agentic RAG 引入了两个新的关键部分,目的是在处理复杂的用户问题时,让结果更加稳定可靠。
这两个部分是:
- 数据源选择(Data Source Routing)。
- 答案检查和调整(Reflection)。
下面我们看看这两个部分是怎么工作的。

Agentic RAG 的工作流程:
- 分析用户的问题:把用户的问题交给一个基于大语言模型的智能助手来分析。在这个阶段:
- 原始问题可能会被改写,有时候需要改写好几次,最后变成一个或几个新的问题,送到下一步处理。
- 智能助手会判断是否需要额外的数据来回答这个问题。这是它展现自主决策能力的第一步。
- 如果需要其他数据,就会开始检索步骤,这时会进行数据源选择。系统里可以预先设置一个或多个数据集,智能助手可以自己选择哪个数据源最适合当前的问题。比如:
- 实时的用户数据(比如:用户现在的位置)。
- 用户可能感兴趣的内部文件。
- 网络上的公开数据。
-
一旦从多个数据源中检索到数据,我们就会像在普通的 RAG 中一样对这些数据进行重新排序。这也是一个关键步骤,因为不同存储技术的数据源都可以整合到这个 RAG 系统中。检索过程的复杂性都被智能助手用的工具所隐藏。
-
尝试直接用大语言模型生成答案(可能是一个答案,也可能是多个答案,或者是一组操作指令)。这个过程可以在第一轮就完成,或者在答案检查和调整之后进行。
-
对生成的答案进行检查,总结并评估它们的正确性和相关性:
- 如果智能助手认为答案已经很好,就直接返回给用户。
- 如果智能助手觉得答案还需要改进,就会尝试重新改写用户的问题,并重复这个生成循环。这是 Agentic RAG 和 Naive RAG 的第二个主要区别。
最近,Anthropic 的开源项目 MCP,将会大大推动 Agentic RAG 的开发。
七、总结
我们已经回顾了检索增强生成(RAG)技术的发展过程。RAG 技术不仅没有过时,而且我认为它在未来还会继续发展。掌握这些技术架构,并知道什么时候该用哪种方案,会是一笔很值得的投资。
通常来说,方案越简单越好,因为系统的复杂性增加会带来新的挑战。一些新出现的挑战包括:
- 评估整个系统从开始到结束的性能变得困难。
- 多次调用大语言模型导致整个过程的延迟变长。
- 运营成本也随之增加。
总之,虽然 RAG 技术在不断进步,但我们在选择和应用时,还是需要考虑到这些新挑战。
八、如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】


第一阶段(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 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

6万+

被折叠的 条评论
为什么被折叠?



