本文属于 RAG 工程框架中的「2 索引与召回」环节,聚焦「Retrieval Router(检索路由)」方法。可先阅读 RAG-00.方法概述 再进入本篇。
原理
先识别查询意图与类型,再将查询路由到 dense、sparse、boolean、graph 或 multimodal 召回器。
关键技术/实现路径
- 查询分类(事实型、规则型、多跳型)。
- 路由策略(规则或轻量模型)。
- 失败回退(fallback)与融合。
优缺点
- 优点:在相同成本下提升平均质量。
- 缺点:路由错误会带来质量抖动。
性能与资源
- 路由开销低,收益取决于分类准确率。
应用场景
- 多类型查询混合的企业知识问答。
统一合成数据示例
输入数据片段
1 | {"query":"上海2026差旅报销政策","query_type":"规则过滤型"} |
中间结果(路由决策)
1 | {"selected_retriever":"boolean+sparse","fallback":"dense"} |
最终生成示例(含引用)
1 | {"answer":"上海地区2026年执行机票上限2000元。","citations":[{"doc_id":"D10","evidence_span":"机票上限2000元"}]} |
原始发表与工程实现
- 代表性原始发表:Retriever Routing 工程实践。
- 核心解决问题:解决不同查询类型的检索器选择。
- 成熟实现工具:RouterChain, RouterRetriever。
详细原理拆解
- 路由器按查询类型选检索器,近似 r*=argmax P(r|q),保留 fallback 兜底。
- 典型实现可拆为:输入预处理 -> 方法核心计算 -> 候选/证据构建 -> 生成与引用。
- 工程调优重点:质量(准确率/引用率)与成本(时延/token)的联合优化。
1 | flowchart LR |
工程落地扩展示例
伪代码
1 | def routed_retrieve(query, router, retrievers): |
参数示例
1 | router: small_classifier_or_llm |
常见失败案例
- 失败模式 1:路由类别漂移(新问法未覆盖),总进错通道。
- 失败模式 2:高置信走重型检索器,尾部查询成本失控。
- 失败模式 3:fallback 与主通道结果分布不一致,下游重排假设失效。
Demo 数据带入计算示例
1 | P(boolean|q)=0.62 → 选 DSL 预筛(快);若走 dense 需全库向量 780ms,布尔子集检索 510ms。 |