什么是 Modular RAG?
什么是 Modular RAG?
这道题考的是 RAG 系统架构的演进理解,从最初的朴素 RAG 到高级 RAG 再到 Modular RAG 的完整设计思路。面试官想看你能不能把"模块化"这个核心思想讲透,而不只是背概念。
我从四个方面来讲:Modular RAG 从哪来、六大核心模块是什么、五种流程模式怎么选、稀疏检索和密集检索有什么区别。
Modular RAG 的前世今生
先说个背景。RAG 最早就是"检索 + 生成"两步走,搜到啥就喂给大模型啥。这叫朴素 RAG,简单粗暴,但问题也明显——检索质量差,整个系统就废一半。
后来有了高级 RAG,在检索前后加了预处理和后处理,比如 query 改写、结果重排序。这比朴素版强,但模块之间还是紧耦合,改一个地方可能动全身。
Modular RAG 就是在高级 RAG 基础上更进一步。它把整个 RAG 流水线拆成六个独立模块:索引、预检索、检索、后检索、生成、编排。每个模块都是一块乐高积木,可以单独换、单独升级,不用动其他部分。
这样做的好处是啥?举两个场景你就明白了。
场景一:你发现检索效果不好,想换个更好的检索模型。在朴素 RAG 里,这可能需要重构整个系统。但在 Modular RAG 里,你只需要替换检索模块,其他模块照常跑。
场景二:你的业务变了,需要加个引用追踪功能。Modular RAG 里,加个新模块就行,不用动现有的检索和生成模块。
说白了,Modular RAG 的本质就是解耦——让 RAG 系统从"一坨代码"变成"可组装的组件"。
六大核心模块架构
六个模块串起来,就构成了完整的 Modular RAG 流水线。
索引模块负责把文档切分、向量化、存入向量数据库。这是最上游的环节,索引质量直接决定检索天花板。
预检索模块在真正检索之前做准备工作。常见的操作包括 query 改写、query 扩张、同义词替换。举个例子,用户搜"苹果",预检索模块要判断用户指的是水果还是公司,然后调整检索策略。
检索模块根据向量相似度找到最相关的文档块。这是 RAG 的核心环节,决定了"喂给大模型的内容对不对"。
后检索模块对检索结果做二次处理。典型操作包括去重、压缩、重排序。这一步很关键,因为检索回来 20 个 chunks,大模型塞不下,必须筛选出最关键的几个。
生成模块就是大模型本身,负责根据上下文生成回答。Modular RAG 里这个模块通常也是可替换的——你可以换 GPT-4,也可以换开源模型。
编排模块是整个系统的"大脑"。它决定查询走哪条路、触发哪些模块、循环多少次。好的编排模块能让系统"聪明"地选择策略,而不是死板地跑完整个流水线。
用餐厅点餐来类比一下:
- 索引模块是备菜区,把原材料处理好
- 预检索模块是服务员,理解你想吃什么
- 检索模块是厨房,根据需求备料
- 后检索模块是摆盘,把菜整理好看
- 生成模块是出餐,直接端给你
- 编排模块是店长,决定整个流程怎么跑
五种流程模式与循环模式细分
模块有了,怎么把它们串起来跑?这就涉及到流程模式。Modular RAG 支持五种模式:
线性模式最好理解。查询从入口进来,依次经过每个模块,输出最终结果。简单场景用这种模式就够了。
条件模式更灵活。根据查询的类型或者中间结果,决定走哪条分支。比如"今天天气怎么样"这种简单问题,可能跳过某些复杂模块;"帮我分析这份财报的风险点"这种复杂问题,可能触发更多的分析模块。
分支模式是同时跑多个路径,然后合并结果。适合需要多角度分析的场景。
循环模式是今天要重点讲的。查询在模块之间反复流转,直到满足某个终止条件。
调优模式是让模型自己决定下一步怎么走,适合需要高度自适应的场景。
循环模式又分三种类型:
迭代是固定轮次。比如跑 3 轮,每轮都根据上一轮的输出调整检索策略。这种模式简单可控,适合对精度有要求但不需要动态判断的场景。
递归更激进。用当前轮次的输出作为下一轮的查询,不断深入挖掘信息。适合多跳推理场景——比如"张三和李四是什么关系"这种问题,第一轮可能只找到他们同一家公司,第二轮继续查这家公司的背景,第三轮挖出更多关联。
自适应是基于置信度动态决定是否继续。让模型判断当前回答的质量,如果置信度低于阈值,就继续检索;如果够了,就停止。这种模式最"聪明",但实现也最复杂。
循环模式的核心思想就是"考完试、批改、再考"——直到答对为止。
稀疏检索 vs 密集检索
最后聊一个技术细节,检索模块里用的检索方式。分两种:稀疏检索和密集检索。
稀疏检索的代表是 BM25。这是一种基于关键词匹配的算法。简单说就是你搜"苹果",它就找文档里包含"苹果"的片段。优点是速度快、结果可解释;缺点是只能做字面匹配,你搜"fruit"就找不到"苹果"。
密集检索的代表是 BERT 编码。它把 query 和文档都转成向量,然后在向量空间里找最相似的。优点是语义理解能力强,"我想吃点酸的东西"能匹配到"柠檬";缺点是计算成本高、可解释性差。
实际工程里,大多数系统是混合使用。先用稀疏检索快速召回一批候选,再用密集检索精排。这个组合既能保证速度,又能保证效果。
打个比方:稀疏检索像字典查字,一个字一个字对;密集检索像理解语义,你能读懂"今天有点上火"想吃清淡的。
面试怎么答
基础版:
Modular RAG 是 RAG 架构演进的高级阶段。它把传统 RAG 系统拆成六个独立模块:索引、预检索、检索、后检索、生成、编排。每个模块职责单一、可独立替换。相比朴素 RAG,它的灵活性更高,方便针对特定环节做优化;相比高级 RAG,它的模块耦合度更低,维护成本更小。编排模块是核心,负责路由决策,决定查询走哪条路径、触发哪些模块。
这个回答 150 字左右,能覆盖核心概念和关键模块,基础分稳了。
加分版:
Modular RAG 本质是解耦 + 可编排。六个模块各司其职:索引负责向量化,预检索做 query 改写,检索做向量匹配,后检索做重排序,生成模型出答案,编排模块做路由决策。
它支持五种流程模式:线性、条件、分支、循环、调优。其中循环模式分为迭代、递归、自适应三种。迭代是固定轮次,递归是用输出做新输入深入挖掘,自适应是根据置信度动态决定是否继续。
实际选型要看场景:简单问答用线性模式就够了,复杂多跳推理用循环模式。检索层面,大多数系统是稀疏 + 密集混合用,稀疏做初筛、密集做精排。
还要提一句代价:模块化带来灵活性的同时,系统复杂度和管理成本也上去了。简单场景用朴素 RAG 反而更省事,不要为了用而用。
这个版本加上了流程模式对比、循环模式细分、选型建议,面试官能看出你对这块有实战理解。
一句话总结
Modular RAG 的核心就是把 RAG 拆成独立可组装的模块,通过编排模块灵活控制流程,兼顾灵活性与效果。
