AI检索系列(3)| RAG的“三段接力”:查询重写、多路召回、重排序
引言
过去一年,越来越多企业在做企业AI化转型的过程中,把检索增强生成(RAG)作为知识助手与智能问答的标配底座。但同样一套架构在不同团队手里跑出来的效果差距极大:第一反应往往指向Embedding模型或向量数据库,而真正决定上限的,是一段很少被完整讲清的"三段接力"——查询重写、多路召回、重排序。
本文把这三段拆开讲清:各自解决什么问题、彼此如何衔接、有哪些常见变体、又有哪些在工程现场反复踩到的坑。
一、它是什么:RAG检索链路的解剖
RAG的核心是"先检索、再生成"。但"检索"内部其实是一段精密的三段接力。查询重写负责把用户随口问的问题改写成更适合检索的形式;多路召回让向量、关键词、结构化等检索方式并行跑一遍以扩大覆盖面;重排序用更精细的模型对召回结果重新打分,把真正命中的顶上去。

图1:检索链路图
二、三段的主流玩法
查询重写段:常见方法有查询改写(把口语改为书面检索句)、HyDE(先写假设答案再嵌入)、多查询分解(一个复杂问题拆成多个子查询并行)、后退提示(先问抽象背景再回到原问题)。
多路召回段:主流是稠密向量(语义强但对编号/错误码不敏感)+稀疏关键词(BM25/SPLADE,精确匹配强但抓不到同义改写)的双路组合,再叠一路结构化元数据筛选解决权限与范围问题;三路以上边际收益快速递减。融合首选RRF,简单且无需统一打分尺度。
重排序段:Cross-Encoder精度最高但开销巨大(每条候选都要做完整前向);ColBERT迟交互精度接近但索引体积大;LLM重排有自偏好(倾向把与自己风格相近的排得更高),需要在评测集上专门校准。

图2:方法地图
三、三条硬边界
第一,查询改写会失真。把"上次那笔退款到账了吗"改写成"查询退款到账状态",指代信息丢了,结果变成泛泛的退款政策文档。务实做法是同时索引原始与改写查询,用原始结果兜底。
第二,多路召回不是越多越好。每路都有自己特有的误召回,多路合并时噪声同步进入候选池;权重与去重需显式处理;超过四路后运维成本迅速超过收益。常见误区是堆到五六路,实际评测集收益常在2%以内。
第三,重排算力贵且有偏。Cross-Encoder的开销与候选数和模型规模同时线性放大,单条查询在几十到几百毫秒之间。LLM重排还带有自偏好——倾向把与自己风格相近的文本排得更高。务实做法是只对初排Top-50做重排,用尽可能小的模型。
四、交集与影响
检索三段的真正难度不在算法本身,而在与既有IT格局的连接处:语料采集(非结构化载体的抽取)、权限传递(每条向量携带原始ACL)、新鲜度(变更捕获+增量嵌入)、可观测性(每段日志与指标)。这四项原型阶段最易忽略,上线后是必检项。
五、全文总结
把上面的内容收敛成五个问题——效果瓶颈在哪一段、查询改写会不会让原意漂移、多路召回是否合理、重排代价是否在预算内、权限与新鲜度是否到位。回答完这五个问题,方案取舍就有了依据。
一句话版本:RAG的检索质量不是单点的,而是查询重写、多路召回、重排序三段接力的协同工程。砍任何一段效果会以非线性速度下滑;全段堆满也不一定划算。这是企业AI化转型里最容易被低估的规律:技术组件的复杂度,往往不在它自身,而在与既有系统的连接处。
六、未来展望
三个值得关注的演进方向。Query Understanding端到端化——查询改写、意图分类、指代消解被统一大模型一次性处理,简化第一段设计;Rerank与生成融合——"检索-排序-生成"流水线被生成式重排取代;Agentic RAG——模型自己决定每段怎么调,应对"每类问题最优链路不同",代价是延迟与成本更难预测,需更严格的预算上限控制与降级回退机制。
七、技术FAQ
1. 三段是不是必须全部上?
不一定。砍掉任何一段效果都会下降。具体砍哪段取决于业务优先级:对延迟极敏感的可省重排,内部低要求场景可只跑一路向量召回。判断方法是分别关闭后跑评测,看哪段下滑最显著。
2. 查询重写会不会让用户原意漂移?
会且无法完全避免。常见失败是把指代、省略、专业缩写改写成更通顺但脱离原意的句子。务实做法是同时索引原始查询与改写查询,用原始结果兜底,并在评测集里专门检查原意保持率。
3. 多路召回融合后顺序乱了怎么办?
通常是权重未调好或各路分数尺度未归一化。先确认融合算法是否需要归一化(加权打分需要,RRF不需要);再在评测集上扫各路权重;最后检查是否存在同一文档的多路重复未被合理处理。
4. Cross-Encoder重排为什么这么贵?
因为它把查询与每条候选拼起来一起送进模型做完整前向,开销与候选数和模型规模同时线性放大。常见做法是只对初排Top-50做重排,并选用几亿参数的小模型;千万级以上可考虑迟交互方案ColBERT。
5. 怎么判断三段接力的瓶颈在哪一段?
用典型问题做A/B消融:分别关闭查询重写、关闭一路召回、关闭重排序,看效果下滑最显著的那一段。每段都要有可观测指标:改写段的原意保持率、召回段的recall@K、重排段的nDCG@K。没有指标就只能凭感觉调。
——————————
本文仅代表作者个人行业观察,不构成任何商业建议。
更多推荐



所有评论(0)