如果你已经在用多个模型(GPT-4 / 本地模型 / 专用模型),一定会遇到一个问题:
❓ 每个请求应该走哪个模型?
这就是语义路由要解决的问题。
‘一、传统路由 vs 语义路由
传统方式:
if keyword == "math" → model A if keyword == "code" → model B
问题:
- 不鲁棒
- 不可扩展
- 不理解语义
语义路由:
query → embedding → vector search → best route
本质是: 分类问题(classification),而不是规则匹配
二、语义路由的核心机制
流程如下:
- 为每个“路由”定义语义空间(embedding)
- 用户请求转 embedding
- 做 KNN 相似度搜索
- 命中最相似 route
- 转发到对应模型 / 服务
Redis 提供的能力是:用向量搜索实现 KNN 分类
三、一个典型场景:多模型调度
比如你有:
- 模型 A:擅长数学
- 模型 B:擅长写作
- 模型 C:便宜但弱
语义路由可以做到:
用户问题 → 自动分配最合适模型
而不是:所有请求 → GPT-4(更烧钱)
四、语义路由 ≠ 负载均衡,而是“能力匹配”
传统 LB:
- Round-robin
- 权重
- 最低延迟
语义路由: 按“语义能力”分配请求
例如:
- 音乐问题 → 音乐模型
- 数学问题 → 数学模型
这种能力在 AI Gateway 中已经成为核心能力
五、工程实现的关键设计点
1. Route 设计:不是分类标签,而是“语义覆盖”
错误做法:
route = ["math", "code", "chat"]
正确做法:
route = embedding examples
也就是说:用“样本”定义语义边界
2. 每个 route 必须有 threshold
distance\_threshold
作用:
- 防止误分类
- 控制路由精度
不同 route threshold 应该不同
3. fallback 机制必须存在
没有命中时:
→ default model
→ 或直接 LLM 判断
否则系统会出现黑洞请求
4. 动态路由(进阶)
可以基于:
- 成本
- 延迟
- 当前负载
做二次决策:
语义匹配 + 实时策略
六、语义路由 + 语义缓存 = AI 系统的基础设施
这两个能力应该组合使用:
Step 1: semantic cache
Step 2: semantic routing
Step 3: model inference
关系是:
| 层级 | 作用 |
|---|---|
| 缓存 | 减少调用 |
| 路由 | 选择调用谁 |
| 模型 | 执行推理 |
三者组合才是完整系统
七、一个更深层的理解:语义路由其实是“软调度器”
在传统系统中:
- 调度基于 CPU / 资源
在 AI 系统中:
- 调度基于“语义理解能力”
所以语义路由本质是: LLM 系统的 Scheduler
八、现实问题:语义路由不是银弹
必须正视几个问题:
1. embedding 的表达能力有限
- 否定句容易误判
- 上下文缺失问题严重
2. 长尾问题难覆盖
- 新 query → 无法匹配 route
3. 需要持续调优
- route 样本
- threshold
- 模型表现
否则效果会快速退化
九、Redis 在语义路由中的定位
Redis 的角色非常清晰:
- 存储 route embedding
- 提供 ANN 查询
- 毫秒级返回最佳匹配
同时具备:
- 高并发
- 低延迟
- 与缓存系统融合
直接成为 AI Gateway 的“决策层”
总结
语义路由解决的是一个关键问题:
不是“怎么调用模型”,而是“该调用哪个模型”
一句话总结: 语义路由,是多模型时代的流量分配中枢。