CONCEPT
RAG两阶段检索架构
定义
RAG两阶段检索架构是为解决单模型检索无法同时满足效率、精度要求的问题,提出的分层检索方案,是当前工业级RAG系统的标配检索模块架构。其核心思路是将检索过程拆分为「粗筛+精排」两个阶段,分别适配不同特性的模型,在百万级乃至更大规模的知识库场景下,既保证检索响应速度,又最大化相关文档的召回准确率。
核心组件特性
架构由两类不同编码逻辑的模型组成,分别承担不同阶段的任务:
Bi-Encoder(粗召回层)
Bi-Encoder即双塔编码器,是当前主流Embedding模型的标准架构,核心特点包括:
- 编码逻辑:用户Query与知识库文档完全独立编码为向量,仅通过余弦相似度计算匹配程度
- 优势:推理速度极快,支持所有文档向量离线预计算并存储到向量数据库,查询时仅需编码1次Query即可完成全库匹配
- 适用场景:适合从百万级以上的文档库中快速筛选出初步相关的候选集,通常召回Top100条结果
- 局限性:Query与文档无交互语义计算,无法捕捉细粒度的语义匹配关系,精度相对较低
Cross-Encoder(精排层)
Cross-Encoder即交叉编码器,是当前主流Rerank模型的标准架构,核心特点包括:
- 编码逻辑:将用户Query与单条候选文档拼接为整体输入模型,做联合语义编码
- 优势:可以捕捉Query与文档之间的交互语义与事实关联,匹配精度远高于Bi-Encoder,例如当Query为「世界上最高的山峰是哪个」时,Bi-Encoder可能将K2排在第一位,而Cross-Encoder可正确将珠穆朗玛峰排在首位
- 适用场景:仅对粗召回返回的少量候选集做二次排序,通常输出Top3-Top5条结果输入下游大模型
- 局限性:每一对Query-文档都需要做一次完整推理,速度较慢,无法直接支撑全库检索
标准工作流
两阶段检索的标准执行流程如下:
- 预计算阶段:将所有知识库文档切片后,通过Bi-Encoder架构的Embedding模型编码为向量,存储到向量数据库中
- 粗召回阶段:用户Query输入后,用同一个Embedding模型编码为向量,在向量库中做相似度检索,召回Top100条相关候选文档
- 精排阶段:将100条候选文档分别与Query拼接,输入Cross-Encoder架构的Rerank模型计算相关性分数,按分数从高到低排序后取Top5条结果
- 生成阶段:将Top5条文档作为上下文,和用户Query一起输入大模型生成最终回答
模型搭配原则
两阶段架构的效果高度依赖Embedding与Rerank模型的搭配,核心原则为:
优先选择同系列的Embedding与Rerank模型,二者训练数据分布与语义空间更一致,搭配效果更优
当前工业界的经典搭配方案包括:
- 通用中文场景:BGE系列模型 BGE-M3 Embedding + BGE-Reranker
- 多语言场景:GTE系列模型 GTE-multilingual-base Embedding + GTE-multilingual-reranker
- GPU资源紧张场景:E5-small Embedding + MiniLM-L6-cross-encoder
- 8K以上长文档场景:Jina Embeddings v2 + Jina-ColBERT-v2
模型选型需参考MTEB文本嵌入评测榜单的Retrieval子任务得分,中文场景优先参考C-MTEB中文榜单的结果。
适用边界
- 最优适用场景:知识库规模≥10万条,对检索准确率和响应速度都有要求的RAG系统
- 例外场景:当知识库规模≤1万条时,可跳过粗召回阶段,直接用Cross-Encoder做全量排序,无需使用两阶段架构
相关条目
- 阿里面试官怒了:Embedding模型都不会选,BGE和GTE 摘要
- RAG场景Embedding模型选型方法
- MTEB文本嵌入评测榜单
- BGE系列模型
- GTE系列模型