跳到主要内容
版本:v0.1(draft)

什么是语义路由?

语义路由 (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)

4. 插件链

在模型执行之前和之后,插件处理请求/响应:

plugins:
- type: "semantic-cache" # 首先检查缓存
- type: "jailbreak" # 检测对抗性提示词
- type: "pii" # 过滤敏感数据
- type: "system_prompt" # 添加上下文
- type: "hallucination" # 验证事实

关键概念

模型混合 (MoM)

与在单一模型内运行的混合专家 (MoE) 不同,模型混合在系统级别运行:

方面混合专家 (MoE)模型混合 (MoM)
范围在单一模型内跨多个模型
路由内部门控网络外部语义路由
模型共享架构独立模型
灵活性训练时固定运行时动态
用例模型效率系统智能

信号驱动决策

传统路由使用简单的规则:

# 传统:简单的关键词匹配
if "math" in query:
route_to_math_model()

信号驱动路由使用多种信号:

# 信号驱动:多种信号组合
if (has_math_keywords AND is_math_domain) OR has_high_math_embedding:
route_to_math_model()

优势

  • 更准确的路由
  • 更好地处理边缘情况
  • 适应上下文
  • 减少误报

真实世界示例

用户查询:"证明 2 的平方根是无理数"

信号提取

  • keyword: ["prove", "square root", "irrational"] ✓
  • embedding: 与数学查询的相似度 0.89 ✓
  • domain: "mathematics" (数学) ✓

决策:路由到 qwen-math (所有数学信号一致)

应用插件

  • semantic-cache: 缓存未命中,继续
  • jailbreak: 无对抗性模式
  • system_prompt: 添加了 "Provide rigorous mathematical proof" (提供严格的数学证明)
  • hallucination: 启用以进行验证

结果:来自专业模型的高质量数学证明

下一步