查询路由是什么
并非每个问题都需要向量检索:闲聊与常识可以直接作答,计算与实时数据要走工具,只有涉及内部知识的问题才进 RAG。查询路由先给问题分类,再分发到不同处理链,好处是省掉无效检索与无谓的模型调用,也减少“明明不该检索却召回一堆无关片段”带来的幻觉风险。代价是引入了一个新的错误来源——路由判断错误比不路由更糟,因此上线前必须用真实问题集测准分类准确率。
基本信息
| 分类方式 | 提示词分类、小分类模型、语义规则或关键词兜底 |
|---|---|
| 典型类别 | 闲聊、常识、知识库问答、计算或工具调用 |
| 关键指标 | 各类别的分类准确率与漏判率 |
| 代价 | 分类错误会把问题送进错误的链路 |
| 可选优化 | 把小模型分类与规则结合,模糊时默认走 RAG |
典型使用场景
- 混合意图助手:闲聊不走检索,降低延迟与成本
- 工具型问答:汇率、库存这类实时数据交给接口而不是知识库
- 敏感问题:识别后直接转人工或触发安全策略
- 多知识源:内部文档、产品手册、工单分别路由到不同集合
- 降本:把简单问题拦在检索之前,节省向量与生成调用
路由伪代码
路由伪代码
label = classify(question) # 小模型或提示词分类
if label == 'chitchat':
return chat_reply(question)
elif label == 'kb':
return rag_answer(question) # 走检索
elif label == 'tool':
return tool_answer(question) # 计算、接口
else:
return rag_answer(question) # 兜底:默认走检索更安全类别与处理链
| 类别 | 处理链 | 误判后果 |
|---|---|---|
| 闲聊 | 直接对话 | 被送进检索,浪费时间并可能答非所问 |
| 知识库 | 改写 → 检索 → 重排 → 生成 | 漏判会导致该检索的没检索 |
| 计算工具 | 调用接口 | 误判成知识问题,模型凭记忆算错 |
| 敏感 | 拒绝或转人工 | 漏判会造成越权或合规风险 |
分类不确定时默认走检索:多花一次检索成本可控,而漏掉检索直接生成错误答案的代价高得多,这个默认值应写进设计文档。