Skip to content

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 的路由
    用向量聚类判断问题类型

实际应用中,常常会混合使用。

路由检索的常见误区 ​

误区一:路由只做一次就完 ​

问题类型分布可能会变化,路由策略需要定期回看。

误区二:路由越复杂越好 ​

路由复杂度过高会带来:

  • 维护成本上升
  • 新问题类型覆盖不足

更稳的做法是:

  • 先用简单规则或轻量分类
  • 再逐步精细化

误区三:路由可以替代多路召回 ​

路由和多路召回是两种不同思路:

  • 路由是“选路”
  • 多路召回是“并行补盲”

两者可以结合,但不是互相替代。

一个更稳的组合方式 ​

很多生产系统最终会采用这样的模式:

  • 先路由决定主路径
  • 再对关键问题做多路补盲

这样可以在控制成本的同时提升稳定性。

一句话总结 ​

路由检索的价值在于“问题分流”:不同问题类型走不同路径,从而稳定检索效果。它不是万能,但在问题类型差异明显时非常有效。