系统级智能路由器 · 信号驱动决策引擎 · 10+ 种模型选择算法
面向云、数据中心和边缘环境的 Mixture-of-Models 架构
Project Overview
vLLM Semantic Router 是一个基于 Go 语言开发的企业级智能路由系统,核心代码超过 21 万行。
智能模型选择 + 语义缓存,减少 token 浪费,最大化每 token 的价值输出。
TruthLens 幻觉检测、PII 泄露防护、Jailbreak 攻击检测,三层安全体系。
云-边-端协同,本地私有模型与前沿模型动态编排,跨域协调。
| 模块 | 路径 | 功能 | 关键实现 |
|---|---|---|---|
| 决策引擎 | pkg/decision/ |
布尔表达式树求值 | AND/OR/NOT 逻辑,15+ 信号类型 |
| 分类器 | pkg/classification/ |
意图/安全/复杂多分类 | 60+ Go 文件,多分类器协同 |
| 模型选择 | pkg/selection/ |
路由算法实现 | Elo/AutoMix/RouterDC/Hybrid 等 |
| 语义缓存 | pkg/cache/ |
响应缓存 + 命名空间隔离 | HMAC 用户隔离,CLS 优化 |
| 向量存储 | pkg/vectorstore/ |
Embedding 存储与检索 | Memory/Milvus/Valkey/LlamaStack |
| API 服务器 | pkg/apiserver/ |
REST/gRPC 接口 | OpenAI 兼容,/v1/chat/completions |
Technical Architecture
信号驱动决策流程,模块化插件架构,支持热更新和动态配置。
决策引擎基于布尔表达式树,支持 AND/OR/NOT 逻辑运算。核心数据结构是 RuleNode,支持递归求值。
// SignalMatches 包含所有匹配的信号
type SignalMatches struct {
KeywordRules []string
EmbeddingRules []string
DomainRules []string
FactCheckRules []string
JailbreakRules []string
PIIRules []string
// ... 15+ 信号类型
}
// 布尔表达式树节点
type RuleNode struct {
Type string // 信号类型
Name string // 规则名称
Operator string // AND/OR/NOT
Conditions []RuleNode // 子节点
}
// 递归求值入口
func (e *DecisionEngine) evalNode(
node RuleNode,
signals *SignalMatches,
) (matched bool, confidence float64) {
if node.IsLeaf() {
return e.evalLeaf(node.Type, node.Name, signals)
}
switch node.Operator {
case "AND": return e.evalAND(...)
case "OR": return e.evalOR(...)
case "NOT": return e.evalNOT(...)
}
}
系统使用 Registry 模式管理运行时依赖,支持配置热更新和组件动态替换。
// Registry 是运行时依赖共享的窄接口
type Registry struct {
mu sync.RWMutex
config *config.RouterConfig
classificationService *services.ClassificationService
memoryStore memory.Store
vectorStore *VectorStoreRuntime
}
// 线程安全的配置更新
func (r *Registry) UpdateConfig(
cfg *config.RouterConfig,
) {
r.mu.Lock()
defer r.mu.Unlock()
r.config = cfg
}
// 刷新运行时配置
func (r *Registry) RefreshRuntimeConfig(
newCfg *config.RouterConfig,
) {
r.UpdateConfig(newCfg)
if service := r.ClassificationService();
service != nil {
service.RefreshRuntimeConfig(newCfg)
}
}
轻量级内存存储,适用开发和测试。最多 100,000 条目。
backendType: memory
maxEntriesPerStore: 100000
分布式向量数据库,适合大规模生产部署。
backendType: milvus
connection:
host: "localhost"
port: 19530
内存数据库 + 向量索引,低延迟场景。
backendType: valkey
metricType: "COSINE"
indexM: 100
indexEf: 256
Signal Classification System
15+ 种信号类型支撑灵活路由决策,每种信号针对特定场景优化。
关键词精确匹配
语义向量相似度
MMLU 领域分类
事实核查信号
越狱攻击检测
个人身份信息
语言识别
Token 数量上下文
请求结构分析
复杂度评估
模态分类
用户级授权
用户反馈信号
外部 LLM 偏好
重问检测
// Classifier 统一分类器,整合多种分类能力
type Classifier struct {
// 内部分类器
categoryInitializer CategoryInitializer
jailbreakInitializer JailbreakInitializer
piiInitializer PIIInitializer
keywordClassifier *KeywordClassifier
embeddingClassifier *EmbeddingClassifier
// 安全相关
factCheckClassifier *FactCheckClassifier
hallucinationDetector *HallucinationDetector
feedbackDetector *FeedbackDetector
// 高级分类器
languageClassifier *LanguageClassifier
complexityClassifier *ComplexityClassifier
structureClassifier *StructureClassifier
authzClassifier *AuthzClassifier
// 配置映射
CategoryMapping *CategoryMapping
PIIMapping *PIIMapping
JailbreakMapping *JailbreakMapping
}
集成在推理网关层,提供三层缓解模式:
Decision Engine
基于布尔表达式树的规则引擎,支持复杂的信号组合逻辑。
从请求中提取 15+ 种信号,构建 SignalMatches 结构体
遍历配置的决策规则,对每个规则的布尔表达式树求值
根据匹配的信号计算决策置信度 (0.0-1.0)
根据配置策略 (priority/confidence/tiered) 选择最优决策
将决策结果传递给选择层,选择具体模型执行
| 策略 | 行为 | 适用场景 |
|---|---|---|
| priority | 按 priority 字段降序,然后 confidence 降序 | 确定性强的业务规则 |
| confidence | 按 confidence 降序,然后 priority 降序 | 需要参考置信度的场景 |
| tiered | 先按 tier 升序(1 < 2 < 3),同 tier 内按 confidence | 分层部署,按模型能力分级 |
Model Selection Algorithms
从生产级到实验级,10+ 种算法满足不同场景需求。
基于 Bradley-Terry 模型的 Elo 评分系统,通过成对比较学习模型性能。
双重对比学习路由,学习查询嵌入与特定模型能力的匹配。
POMDP 级联路由,先用小模型,置信度低时自动升级到大模型。
多算法混合,支持配置 Elo + embedding + cost 的权重组合。
K 近邻算法,找相似历史查询,质量加权投票。
K 均值聚类,按质量和延迟分数分配模型。
多层感知机分类器,使用 Candle GPU 加速推理。
强化学习路由,实现 Router-R1 奖励结构。
异构图学习,从多轮交互中学习用户偏好。
基于 TPOT/TTFT 百分位数据的延迟感知选择。
type AutoMixConfig struct {
// 置信度阈值,低于此值触发升级
VerificationThreshold float64 `yaml:"verification_threshold"`
// 最大升级次数
MaxEscalations int `yaml:"max_escalations"`
// POMDP 折扣因子
DiscountFactor float64 `yaml:"discount_factor"`
// 启用自验证
EnableSelfVerification bool `yaml:"enable_self_verification"`
// 信念粒子数
BeliefParticles int `yaml:"belief_particles"`
}
从最小/最便宜的模型开始生成答案
同一模型通过蕴含检查验证答案正确性
置信度低于阈值时自动升级到更大模型
API Specification
OpenAI 兼容 REST API,支持流式输出和路由元数据。
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/chat/completions |
POST | 聊天补全,model="MoM" 启用智能路由 |
/v1/models |
GET | 列出可用模型 |
/api/v1/classify/intent |
POST | 意图分类 |
/api/v1/classify/security |
POST | 安全检测 |
/api/v1/feedback |
POST | 提交反馈 |
/metrics/classification |
GET | 分类指标 |
/health |
GET | 健康检查 |
{
"model": "MoM",
"messages": [
{"role": "user", "content": "求导: y = x^2 + 3x - 7"}
],
"max_tokens": 150
}
{
"routing_metadata": {
"selected_model": "qwen-math",
"confidence": 0.96,
"processing_time_ms": 15,
"cache_hit": false,
"security_checks": {
"pii_detected": false,
"jailbreak_detected": false
}
}
}
Configuration Schema
YAML 格式配置,支持模型定义、信号配置、决策规则和向量存储。
// 用户级命名空间隔离,防止跨用户缓存污染
const scopeNamespaceRepeat = 3
func ScopeQueryToUser(query string, userID string) string {
if userID == "" || query == "" {
return query
}
// HMAC-SHA256 保护用户 ID 不被暴露
namespace := userScopeNamespace(userID)
tokens := make([]string, scopeNamespaceRepeat)
for i := range tokens {
tokens[i] = namespace
}
return fmt.Sprintf("cache-scope %s %s",
strings.Join(tokens, " "), query)
}
Development Timeline
从 2025 年 9 月到 2026 年 3 月,快速迭代中。
Key Findings
面向 AI 基础设施层,支持云-边-端混合部署,是目前定位最高的开源语义路由项目。
15+ 种信号类型支撑灵活决策,布尔表达式树支持复杂规则组合和动态更新。
10+ 种选择算法,从生产级 Elo/AutoMix 到实验级 RLDriven,覆盖各类场景。
TruthLens 幻觉检测、PII/Jailbreak 防护,三层安全体系满足企业合规需求。
"vLLM Semantic Router 是一个信号驱动的智能路由器,位于用户和模型之间,从请求、响应和上下文捕获信号,做出智能路由决策。"
— 官方项目描述