首页/AI/RAG 与向量库速查/Multi-Query 多路召回合并

Multi-Query 多路召回合并

让模型把一个问题改写成多个不同视角的子查询,各自检索后合并去重,降低单一表述漏召回的概率;适合问题表述与文档差异大的场景。

RAG 与向量库速查AI更新于 2026-10-13

多路召回合并是什么

多路召回让模型把一个问题改写成多个不同视角的子查询,各自检索后合并去重,用增加候选多样性的方式降低「一种说法漏召回」的概率。它适合用户表述与文档措辞差异较大的场景,代价是多几次检索与一次额外的模型调用,路数过多会推高在线延迟。

基本信息

做法一个问题改写成多条子查询,各自检索后合并
路数常见 3 到 5 条,过多会拖慢在线延迟
合并方式按片段标识或内容哈希去重,再按融合策略排序
额外成本一次改写调用加多路检索耗时

LangChain 示例

LangChain 示例
from langchain.retrievers.multi_query import MultiQueryRetriever

retriever = MultiQueryRetriever.from_llm(
    retriever=base_retriever, llm=llm)
docs = retriever.invoke("如何给向量库做容量规划?")

使用要点

  • 先抽查看改写质量:多条改写高度雷同时几乎没有增益
  • 限制路数:三到五条是常见区间,超过后收益递减而延迟明显上升
  • 合并必须去重:同一片段被多份改写重复召回会占满上下文
  • 与融合策略配合:多路结果按排名融合比直接拼接更稳
  • 记录每路各自的命中贡献,便于判断哪条改写真正有用

路数与收益

路数收益代价
1 条无额外开销表述不匹配时直接漏召回
3 到 5 条覆盖面明显提升一次改写加多路检索耗时
过多收益递减噪声候选增多,延迟与成本上升

常见问题

  • 子查询互相重叠:改写提示词要求从不同角度出发可缓解
  • 合并后条数暴涨:缺少去重与截断,上下文直接被塞满
  • 延迟超标:改写与多路检索串行执行,改为并行可显著改善
  • 效果不稳定:改写模型输出随机性大,需要固定参数并做多次对照
多路结果合并后要按片段标识或内容哈希去重;路数控制在三到五条较为常见,过多会拖慢在线延迟。

效果验证方法

  • 固定一批问题,分别测单查询与多路召回的命中率差异
  • 把每路子查询与它带回的新增片段记录下来,判断哪条改写真正有效
  • 观察候选池里新增片段的占比,占比过低说明改写同质化
  • 与改写前的基础查询做对照,避免把检索本身的改进算到多路召回头上

易错点

  • 多条改写高度雷同时没有增益,先抽样看改写质量再定路数
  • 合并结果不去重,上下文被同一内容的多份改写占满
  • 多路检索串行执行,延迟成倍上升
  • 把多路召回的候选全部送进上下文,缺少截断与重排

数据来源与参考

  • LangChain 官方文档(MultiQueryRetriever)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌