跳到主要内容

RAG三代进化史与架构选型

还记得诺基亚那个年代吗?手机只能打电话发短信,拍照是奢侈功能,像素还低得可怜。后来有了智能机,拍照能力一代比一代强——从单摄到双摄,从双摄到三摄,从普通拍照到AI算法加持。

RAG技术的演进也是类似的路子。

从最初的"能用就行",到后来的"用得更好",再到现在的"灵活可扩展",RAG经历了三代演进。搞懂这三代的区别,你才能在实际项目中做出正确的架构选型。

第一代:Naive RAG——能跑就行

这是什么

Naive RAG,也叫基础RAG,是最原始、最标准的实现方式。

流程非常直接:

  1. 把文档切块
  2. 转成向量存起来
  3. 用户问问题时,检索最相似的几块
  4. 把检索结果和问题一起发给大模型

没有花里胡哨的优化,就是最朴素的"检索+生成"。

适合什么场景

  • 快速验证想法:老板说下周要看demo,你没时间搞复杂架构
  • 数据量不大:几百篇文档,用户量也不多
  • 对效果要求不高:能回答个大概就行,不追求极致准确

有什么问题

用过之后你会发现,问题还挺多:

检索不准

用户问"服务器宕机怎么处理",检索出来的可能是"服务器配置说明"——沾点边,但不是用户真正想要的。

噪音太多

检索返回5条结果,可能只有2条真正有用,其他3条是凑数的。大模型看了这些"噪音",回答质量也会下降。

问题理解差

用户说"上次那个问题怎么解决的",系统根本不知道"那个问题"指的是啥。

无法处理复杂问题

用户问"对比一下A产品和B产品的优缺点",这需要同时检索两个产品的信息并做对比分析,Naive RAG搞不定。

小结

Naive RAG就像功能机时代的手机——能打电话,能发短信,基本功能都有。但想拍出好照片?想上网冲浪?那肯定得升级换代了。

常见误区

很多团队在验证阶段就直接搭建复杂的Advanced RAG,结果投入大量时间,却发现需求本身还没想清楚。建议先用Naive RAG跑通业务流程,再针对暴露出的具体问题逐步优化。

第二代:Advanced RAG——把每个环节都优化一遍

这是什么

Advanced RAG是在Naive RAG基础上的增强版本。核心思路是:既然基础版本有这么多问题,那就把每个环节都优化一遍。

这也是目前大部分企业生产环境用得最多的RAG范式。

都优化了哪些环节

检索前:问题重写

用户的输入往往不够精确,需要在检索前做一番处理:

  • 扩充问题:"服务器挂了"→"服务器宕机故障排查方法是什么"
  • 消除指代:"上次那个问题"→ 结合对话历史,补全具体是什么问题
  • 拆分问题:"A和B的区别"→ 拆成"A的特点"+"B的特点"两个子问题分别检索

检索中:混合检索

单纯的向量检索有时候不够用。比如用户问"BUG-2024-0312的处理进度",这种精确的编号,向量检索可能找不到。

混合检索的思路是:向量检索 + 关键词检索,两条腿走路。

  • 向量检索:理解语义,"服务器挂了"能匹配到"服务器故障"
  • 关键词检索:精确匹配,"BUG-2024-0312"一个字都不能差

两边的结果融合起来,覆盖面就大了。

检索后:重排序

检索返回10条结果,可能前5条里有3条是真正相关的,后5条里也有2条是相关的。

重排序的作用是:用更精细的模型,把检索结果重新打分排序,让最相关的排在最前面。

常用的方法有:

  • RRF算法:简单高效,根据排名计算得分
  • ReRank模型:用专门的语义匹配模型重新打分

生成时:上下文优化

检索结果塞给大模型之前,还可以做一些处理:

  • 压缩上下文:文档块太长的话,提取关键信息,减少干扰
  • 去除重复:多个文档块内容重复的部分去掉
  • 排序优化:最相关的放在最前面,大模型会更关注前面的内容

典型的Advanced RAG流程

Advanced RAG 的核心处理链路
Advanced RAG 的核心处理链路

比Naive RAG多了好几步,但每一步都在提升最终效果。

效果提升有多大

以我的实际经验来说,从Naive RAG升级到Advanced RAG,回答准确率能提升20%-40%,具体看你的数据和场景。

特别是问题重写和重排序这两个环节,投入产出比很高。

优先优化这两个环节

在Advanced RAG的所有优化中,问题重写重排序是投入产出比最高的两项。即使其他环节还没做完善,优先实现这两个往往能带来最明显的效果提升。

小结

Advanced RAG就像智能手机时代的进化——单摄变双摄,加上HDR、夜景模式、AI优化。硬件基础没变,但通过各种软件优化,拍照效果上了一个台阶。

第三代:Modular RAG——乐高积木式架构

这是什么

Modular RAG是目前较新的工程化形态。

核心思想是:把RAG的各个环节拆成独立的模块,像乐高积木一样自由组合。

为什么需要模块化

Advanced RAG虽然效果好,但有个问题——流程是固定的。

实际业务场景千差万别:

  • 有的场景需要重排序,有的不需要
  • 有的场景需要问题重写,有的用户输入已经很规范
  • 有的场景需要多知识库路由,有的只有一个知识库
  • 有的场景需要结合知识图谱,有的纯文本就够了

如果每个场景都要改一遍代码,维护成本太高了。

模块化的好处是:每个功能都是独立的模块,需要什么就插什么,不需要就拔掉。

模块化架构长什么样

一个典型的Modular RAG会把系统拆分成这些模块:

模块职责是否必需
查询转换模块问题改写、扩展、分解可选
路由模块根据问题类型分发到不同处理流程可选
检索模块从知识库检索相关内容必需
重排序模块对检索结果重新排序可选
上下文构建模块筛选、拼接、压缩检索结果必需
生成模块大模型生成回答必需
后处理模块格式化输出、添加引用来源可选

模块化带来的灵活性

场景一:简单问答

用户输入很规范,知识库也只有一个,不需要花里胡哨的优化。

启用模块:检索 → 上下文构建 → 生成

场景二:企业复杂场景

用户输入可能很口语化,有多个知识库,需要高准确率。

启用模块:查询转换 → 路由 → 检索 → 重排序 → 上下文构建 → 生成 → 后处理

场景三:实时性要求高

要求极低延迟,可以牺牲一点准确率。

启用模块:检索 → 生成(跳过所有优化环节)

模块化的其他好处

独立升级

重排序效果不好?换一个重排序模型,其他模块不用动。

灵活扩展

想加一个"敏感词过滤"模块?直接插到生成模块后面就行。

团队协作

不同的人负责不同的模块,职责清晰,互不干扰。

小结

Modular RAG就像模块化手机的概念——主板是固定的,但摄像头、电池、屏幕都可以换。虽然模块化手机最终没流行起来,但模块化架构在软件领域是真香。

三代对比:到底是选哪个?

维度Naive RAGAdvanced RAGModular RAG
复杂度
效果一般良好优秀(取决于配置)
开发成本1-2天1-2周2-4周
维护成本初期高,长期低
灵活性一般优秀
适用阶段POC验证生产环境大规模/多场景
如何决策

选型的核心考量是当前阶段的主要矛盾:是要快速验证,还是要稳定上线,还是要长期维护多个场景?对应选择Naive、Advanced、Modular。不要超前投入——还在验证期就搭Modular RAG,大概率会浪费资源。

决策流程

RAG 选型决策树:什么时候选 Naive / Advanced / Modular
RAG 选型决策树:什么时候选 Naive / Advanced / Modular

我的建议

如果你是个人开发者或小团队

从Naive RAG开始,遇到具体问题再针对性优化。比如检索不准,就加重排序;问题理解差,就加问题重写。逐步演进到Advanced RAG。

如果你在中大型公司

直接上Advanced RAG。大部分公司的需求用Advanced RAG都能满足,而且有成熟的方案可以参考。

如果你要做RAG平台

考虑Modular RAG。一次投入,长期受益。平台化之后,不同业务线可以根据自己的需求灵活配置。

Spring AI对RAG的支持情况

接下来,该看看Java生态下的技术选型了。

Spring AI的RAG能力

Spring AI目前对RAG的支持还处于能用但不够完善的阶段:

已经支持的

  • 多种DocumentReader(PDF、Word、Markdown等)
  • 多种向量数据库(PGVector、Milvus、Chroma等)
  • 基础的相似度检索
  • QuestionAnswerAdvisor(简化版RAG流程)

还不够完善的

  • 混合检索需要自己实现
  • 重排序需要自己实现
  • 问题重写需要自己实现
  • 模块化编排能力弱

实际项目中怎么办

两条路:

路线一:Spring AI + 自研补充

用Spring AI做基础的文档处理和向量存储,检索优化部分自己写。后面的文章会详细讲怎么实现混合检索、重排序这些。

路线二:LangChain4J / LlamaIndex

如果团队对Python也熟悉,可以考虑混合架构。用LangChain或LlamaIndex做RAG核心逻辑,Java做业务层。

一个务实的建议

别纠结于框架,核心逻辑自己掌握最重要

框架会变,版本会升级,API会改。但RAG的核心原理是稳定的:检索、重排、生成,这些概念不会变。

把原理搞透,换任何框架都能快速上手。

务实建议

Spring AI目前对混合检索、重排序、问题改写的支持还不完善,需要自己补充实现。但这并不影响使用——把原理搞清楚,缺少的能力自己实现就行。核心逻辑掌握了,换哪个框架都不怕。

小结

这篇文章讲了三件事:

  1. RAG的三代演进:从Naive到Advanced到Modular,越来越强大也越来越复杂
  2. 各代的适用场景:验证想法用Naive,生产环境用Advanced,平台化用Modular
  3. 技术选型建议:Spring AI能用但不够完善,核心逻辑要自己掌握

下一篇开始进入实战环节,讲文档预处理——RAG的第一步,也是很多人踩坑最多的一步。

🎁优惠