Appearance
12.1.2 什么是路由检索(Router Retrieval)?
先给结论:路由检索的核心是“先判断问题类型,再选择最合适的检索路径”。它解决的不是“召回不够多”,而是“不同问题走同一条检索链路导致不稳定”。
很多系统一开始会用一条固定检索链路处理所有问题。但真实场景里,不同问题类型对检索的需求差异很大:
- 术语型问题更依赖关键词
- 语义改写问题更依赖向量
- 结构化查询更依赖字段过滤
如果强行走同一条链路,必然有一类问题会表现很差。
路由检索解决的核心问题
路由检索更擅长解决:
- 不同问题类型在同一检索策略下稳定性波动
- 一些问题类型长期偏差,难以通过调参解决
它的目标是:
- 让每一类问题走最适合的检索路径
一个最小路由流程示意
python
def route_retrieval(query):
intent = classify_query(query)
if intent == "exact_terms":
return keyword_retriever(query)
if intent == "semantic":
return vector_retriever(query)
if intent == "structured":
return structured_retriever(query)
return hybrid_retriever(query)这个示意强调的是:
- 路由先于检索
- 路径按问题类型选择
什么时候值得做路由检索
如果你的系统出现这些现象,路由检索通常是有效方案:
- 某些问题类型长期表现很差
- 单一路径调参已经无法兼顾所有问题类型
- 不同业务域对检索信号依赖明显不同
路由的常见方式
路由通常有几种常见做法:
基于规则的路由
例如关键词/正则命中基于轻量分类模型的路由
训练一个意图分类器基于向量或 embedding 的路由
用向量聚类判断问题类型
实际应用中,常常会混合使用。
路由检索的常见误区
误区一:路由只做一次就完
问题类型分布可能会变化,路由策略需要定期回看。
误区二:路由越复杂越好
路由复杂度过高会带来:
- 维护成本上升
- 新问题类型覆盖不足
更稳的做法是:
- 先用简单规则或轻量分类
- 再逐步精细化
误区三:路由可以替代多路召回
路由和多路召回是两种不同思路:
- 路由是“选路”
- 多路召回是“并行补盲”
两者可以结合,但不是互相替代。
一个更稳的组合方式
很多生产系统最终会采用这样的模式:
- 先路由决定主路径
- 再对关键问题做多路补盲
这样可以在控制成本的同时提升稳定性。
一句话总结
路由检索的价值在于“问题分流”:不同问题类型走不同路径,从而稳定检索效果。它不是万能,但在问题类型差异明显时非常有效。