多数据源(向量库 / SQL / 图谱 / API)的检索路由怎么设计?

Q2-14检索路由常见路由多数据源NL2SQL意图分类成本控制

谁在问:二面·架构向;数据团队、平台组尤其关注

口语化问法

  • 你们的知识不只在文档里,还有数据库,怎么决定去哪查?
  • 用户问『我上个月订单多少钱』,你的 RAG 怎么办?
  • 路由是用大模型判断吗?成本受得了吗?

考察意图

三个观察点:① 有没有意识到很多问题的答案根本不在知识库里(这是 RAG demo 到生产的典型断层);② 路由的实现选型是否有成本意识——每个 query 都让大模型判一次,是成本悄悄失控的常见来源;③ 路由判错怎么兜底——这题能区分「设计过」和「想过」。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

路由是在检索前判断这个问题该去哪个数据源查:

原文示意
用户问题
   ├─ 事实性知识问答        → 向量库 / 混合检索
   ├─ 结构化数据(金额、订单)→ SQL 查询(NL2SQL)
   ├─ 关系推理(谁和谁有关)  → 图谱查询
   ├─ 实时信息(今天股价)    → Web 搜索 / 业务 API
   └─ 闲聊 / 无需检索        → 直接回答

实现方式有三种,成本递增:规则/关键词匹配、轻量分类器(小模型或 embedding 相似度)、LLM 直接判断。

90

90 分答案(有生产经验的回答)

补四层:

「无需检索」这一路常被忽略但很实用:「你好」「谢谢」「换个说法再讲一遍」这类输入根本不需要检索,直接放行既省钱又快。生产系统里这类流量占比往往不低。

成本纪律不要一上来就每个 query 都让大模型判一次。正确做法是分层——先用规则或轻量分类器覆盖高频意图(通常能吃掉 70–80% 的流量),尾部长尾再交给 LLM。这一句话能直接体现成本治理意识。

判错的兜底(关键):路由是有错误率的,设计时必须回答「判错了怎么办」。实用做法:① 分类置信度低于阈值时默认走全量检索(多路都查,用融合合并),而不是赌一条路;② 允许多路并发命中,让下游 rerank 去裁决;③ 记录路由决策日志,用于离线复盘和优化分类器。「不确定就全查」比「赌错一次答不出来」的用户体验好得多。

每条路的下游校验不一样:SQL 那一路要做执行结果校验(生成的 SQL 能不能跑通、结果是否为空、有没有全表扫描风险)和权限校验;Web 搜索那一路要做时效和来源可信度过滤;这些不是「路由完就结束」,而是每条支路都要有自己的兜底话术。

追问链

图 1 · 五层追问树:面试官会往哪儿挖
主线不是「怎么分路」,是「判错了、单路不够用了怎么办」

  1. 规则、轻量分类器、LLM 判断,你会怎么组合?

    期望分层漏斗:高频且模式明确的走规则(最省最稳)→ 意图种类多但相对固定用轻量分类器(小模型或 embedding 相似度,毫秒级)→ 长尾复杂意图才交 LLM;用流量占比反推,前两层吃掉越多越便宜
    信号只说「用 LLM 判断,它最准」→ 缺成本视角
  2. 路由判错的代价有多大?怎么降低?

    期望代价是直接答不出或答错(订单金额问题被路由去文档库,捞回一堆无关制度文件);降低靠置信度阈值 + 不确定走全量多路,金额、权限这类关键路径做双重确认,badcase 回流训练分类器
    信号主动提「不确定就全查」→ 是设计过的;只画得出一张路由图 → 只是想过
  3. NL2SQL 那一路准确率不高怎么办?

    期望喂完整表结构 + 字段注释 + few-shot → 生成后语法校验 + 执行前安全检查(禁写操作、限扫描范围)→ 执行结果回显给用户确认 → 仍不达标就降级为「给候选 SQL 让用户确认」而非直接返数字。数据类问题上,错答比不答更危险
    信号说得出「宁可不答也别给错数字」→ 有业务风险意识
  4. 路由和 Agentic RAG 是什么关系?

    期望路由是 Agentic RAG 里的 Router 组件,但两者不等同:路由一次性决定去哪查,Agentic 是查完看结果再决定要不要重查、换哪查,多了循环与自我修正;轻量路由 + 固定管线是 Agentic 的低成本替代
    信号说得清「路由是决策的静态版、Agentic 是动态版」→ 知识成体系
  5. 用户问「对比一下我们和竞品的售后政策」,这该路由到哪?

    期望这是陷阱,单一路由答不了:先识别为复合查询 → 子问题拆解(己方政策在知识库、竞品信息走 Web 搜索)→ 多源并行检索 → 结果综合对比。这已经进入 Agentic RAG 的领域,硬塞进单路由会答残
    信号张口「路由到知识库」→ 没有复合问题的概念;能认出「这题得先拆」→ 判断力到位
分水岭在第 2 层和第 5 层:前者考「路由是有错误率的,你兜了没有」,后者考「你认不认得出单路由答不了的复合查询」;只画得出一张路由图的,两层都空。

评分要点

  1. 能列出至少三类数据源及对应判断依据
  2. 包含「无需检索」这一路
  3. 给出三种实现方式并有成本递增的认识
  4. 有判错兜底策略(不确定走全量)
  5. 知道每条支路下游还需各自校验(SQL 执行校验、Web 时效过滤)
  6. 加分:能说清路由与 Agentic RAG 的关系与边界
  7. 加分:能识别出「复合查询」需要拆解而非单路由

常见错误

只画了一张路由图,没有任何错误处理和兜底。
无脑用 LLM 做每一次路由判断,不谈成本。
忘了「无需检索」这条路,闲聊也走一遍全量检索。
认为路由完就结束,不知道每条支路各有自己的校验需求。
面对复合问题仍坚持单路由。

关联学习