基于嵌入的路由
本指南向您展示如何使用嵌入模型通过语义相似性来路由请求。嵌入路由根据含义而非精确的关键词将用户查询与预定义类别进行匹配,非常适合处理多样化的表述和快速变化的类别。
主要优势
- 可扩展性:无需重新训练模型即可处理无限的类别
- 高效:使用高效的嵌入模型(Qwen3, Gemma)推理时间仅需 10-50ms
- 灵活:通过更新关键词列表即可添加/删除类别,无需重新训练模型
- 语义化:捕捉超越精确关键词匹配的深层含义
它解决了什么问题?
当用户以不同的方式描述问题时,关键词匹配会失效。嵌入路由可以解决:
- 改写处理:“如何安装?”即使没有完全相同的词也能匹配到“安装指南”
- 意图检测:基于语义进行路由,而非表面模式
- 模糊匹配:处理拼写错误、缩写和非正式语言
- 动态类别:无需重新训练分类模型即可添加新类别
- 多语言支持:嵌入技术可以捕捉跨语言的语义
适用场景
- 拥有多样化查询表述的客户支持
- 用户以多种不同方式询问同一事物的产品咨询
- 需要对错误描述进行语义理解的技术支持
- 需要频繁添加/更新类别的快速演进的类别
- 中等延迟容忍度(为了更好的语义准确性,10-50ms 是可接受的)
配置
在您的 config.yaml 中添加嵌入规则
# Define embedding signals
signals:
embeddings:
- name: "technical_support"
threshold: 0.75
candidates:
- "how to configure the system"
- "installation guide"
- "troubleshooting steps"
- "error message explanation"
aggregation_method: "max"
- name: "product_inquiry"
threshold: 0.70
candidates:
- "product features and specifications"
- "pricing information"
- "availability and stock"
aggregation_method: "avg"
- name: "account_management"
threshold: 0.72
candidates:
- "password reset"
- "account settings"
- "subscription management"
aggregation_method: "max"
# Define decisions using embedding signals
decisions:
- name: technical_support
description: "Route technical support queries"
priority: 100
rules:
operator: "OR"
conditions:
- type: "embedding"
name: "technical_support"
modelRefs:
- model: "openai/gpt-oss-120b"
use_reasoning: true
plugins:
- type: "system_prompt"
configuration:
system_prompt: "You are a technical support specialist with deep knowledge of system configuration and troubleshooting."
- name: product_inquiry
description: "Route product inquiry queries"
priority: 100
rules:
operator: "OR"
conditions:
- type: "embedding"
name: "product_inquiry"
modelRefs:
- model: "openai/gpt-oss-120b"
use_reasoning: false
plugins:
- type: "system_prompt"
configuration:
system_prompt: "You are a product specialist with comprehensive knowledge of features, pricing, and availability."
- type: "semantic-cache"
configuration:
enabled: true
similarity_threshold: 0.85
- name: account_management
description: "Route account management queries"
priority: 100
rules:
operator: "OR"
conditions:
- type: "embedding"
name: "account_management"
modelRefs:
- model: "openai/gpt-oss-120b"
use_reasoning: false
plugins:
- type: "system_prompt"
configuration:
system_prompt: "You are an account management specialist. Handle user account queries with care and security."
嵌入模型
- qwen3:高质量,1024 维,32K 上下文
- gemma:均衡型,768 维,8K 上下文,支持 Matryoshka 缩放(128/256/512/768)
- auto:根据质量/延迟优先级自动选择
聚合方法
- max:使用最高的相似度得分
- avg:使用所有关键词的平均相似度
- any:只要有任何关键词超过阈值即匹配
示例请求
# Technical support query
curl -X POST https://:8801/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MoM",
"messages": [{"role": "user", "content": "How do I troubleshoot connection errors?"}]
}'
# Product inquiry
curl -X POST https://:8801/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MoM",
"messages": [{"role": "user", "content": "What are the pricing options?"}]
}'
真实世界用例
1. 客户支持(可扩展类别)
问题:需要每周添加新的支持类别而无需重新训练模型。解决方案:通过更新关键词列表添加新类别,由嵌入模型处理语义匹配。影响:部署新类别只需几分钟,而重新训练模型需要几周。
2. 电子商务支持(快速语义匹配)
问题:“我的订单在哪里?”、“追踪包裹”和“物流状态”意思都一样。解决方案:Gemma 嵌入(10-20ms)将所有变体路由到订单追踪类别。影响:95% 的准确率,10-20ms 的延迟,支持每秒 5000+ 次查询。
3. SaaS 产品咨询(灵活路由)
问题:用户以 100 多种不同的方式询问价格。解决方案:语义相似性将所有变体匹配到“定价信息”关键词。影响:单一类别即可处理所有定价查询,无需显式规则。
4. 创业公司迭代(快速类别更新)
问题:产品演进迅速,需要每天调整类别。解决方案:在配置中更新嵌入关键词,无需重新训练模型。影响:类别更新仅需几秒,而微调模型需要几天。
5. 多语言平台(语义理解)
问题:英语、西班牙语、中文的相同问题需要相同的路由。解决方案:嵌入模型自动捕捉跨语言语义。影响:单一类别定义即可跨语言工作。
模型选择策略
自动模式(推荐)
model: "auto"
quality_priority: 0.7 # Favor accuracy
latency_priority: 0.3 # Accept some latency
- 根据优先级自动选择 Qwen3(高质量)或 Gemma(快速)
- 平衡每个请求的准确性与速度
Qwen3(高质量)
model: "qwen3"
dimension: 1024
- 最适合:复杂查询、细微差别区分、高价值交互
- 延迟:每个查询约 30-50ms
- 用例:账户管理、金融查询
Gemma(快速)
model: "gemma"
dimension: 768 # or 512, 256, 128 for Matryoshka
- 最适合:高吞吐量、简单分类、成本敏感场景
- 延迟:每个查询约 10-20ms
- 用例:产品咨询、通用支持
性能特性
| 模型 | 维度 | 延迟 | 准确率 | 显存 |
|---|---|---|---|---|
| Qwen3 | 1024 | 30-50ms | 最高 | ~2.4GB |
| Gemma | 768 | 10-20ms | 高 | ~1.2GB |
| Gemma | 512 | 8-15ms | 中等 | ~1.2GB |
| Gemma | 256 | 5-10ms | 较低 | ~1.2GB |
参考资料
完整配置请参阅 embedding.yaml。