什么是语义路由?
语义路由 (Semantic Router) 是一个智能路由层,它根据从请求中提取的多种信号,动态地为每个查询选择最合适的语言模型。
问题
传统的 LLM 部署对所有任务使用单一模型:
用户查询 → 单一 LLM → 响应
问题:
- 简单查询的成本高
- 专业任务的性能不佳
- 没有安全或合规控制
- 资源利用率低
解决方案
语义路由使用信号驱动的决策来智能地路由查询:
用户查询 → 信号提取 → 决策引擎 → 最佳模型 → 响应
优势:
- 具有成本效益的路由(简单任务使用较小的模型)
- 更好的质量(利用专业模型的优势)
- 内置安全性(越狱检测、PII 过滤)
- 灵活且可扩展(插件架构)
工作原理
1. 信号提取
路由从每个请求中提取多种类型的信号:
| 信号类型 | 检测内容 | 示例 |
|---|---|---|
| keyword | 特定术语和模式 | "calculate", "prove", "debug" |
| embedding | 语义含义 | 数学意图、代码意图、创意意图 |
| domain | 知识领域 | 数学、计算机科学、历史 |
| fact_check | 验证需求 | 事实主张、医疗建议 |
| user_feedback | 用户满意度 | "That's wrong", "try again" |
| preference | 路由偏好 | 复杂意图匹配 |
2. 决策制定
使用逻辑规则组合信号以做出路由决策:
decisions:
- name: math_routing
rules:
operator: "AND"
conditions:
- type: "keyword"
name: "math_keywords"
- type: "domain"
name: "mathematics"
modelRefs:
- model: qwen-math
weight: 1.0
工作原理:如果查询包含数学关键词 AND (并且) 被归类为数学领域,则路由到数学模型。
3. 模型选择
根据决策,路由选择最佳模型:
- 数学查询 → 数学专用模型 (例如 Qwen-Math)
- 代码查询 → 代码专用模型 (例如 DeepSeek-Coder)
- 创意查询 → 创意模型 (例如 Claude)
- 简单查询 → 轻量级模型 (例如 Llama-3-8B)