资讯动态

semantic-router 的 Complexity 信号:用嵌入相似度学习驱动推理升级路由

发布时间:2026/10/14 18:36:10 来源:尧图企业网站定制
后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载本文围绕 semantic-router 官方文档中的 Complexity 信号展开介绍这一「学习型」信号如何通过难/易候选示例的嵌入相似度估计请求需要更强推理还是更便宜的简易路径并给出完整配置、边界判定原理、多模态扩展与源码级实现佐证。读完本文你将掌握routing.signals.complexity的完整配置方法、threshold 与边界对的语义差异、决策规则中的引用方式以及本地原型评分与远程评分后端两条执行路径的取舍。一、为什么需要单独估计「复杂度」领域不等于难度在路由系统中最常见的分类维度是主题domain把「法律咨询」路由到法律模型、「数学证明」路由到推理模型。但仅凭主题无法判断是否需要强推理——同一个领域内两个问题的推理深度可能差异很大「什么是牛顿第二定律」与「推导并证明动量守恒在变质量系统下的成立条件」同属物理领域但前者一问即答后者需要多步推理「把这句话改得更简洁」与「分析这个 3000 行函数的根因」同属文本处理场景成本与延迟差异巨大。如果路由只依赖领域分类简单请求会被过度升级成本浪费复杂请求会被留在廉价模型质量受损。semantic-router 的complexity信号正是为解决这一问题而生它通过示例驱动的规则直接估计任务难度而不依赖主题推断。这条设计把「推理升级」与「领域分类」彻底解耦使同一套复杂度策略可以被多条决策复用难/易示例随时间调参也相对简单——这是该信号族最核心的优势。二、该信号的定位与适用场景complexity属于学习型learned信号族分类器用嵌入相似度将请求与难/易候选示例比较而不是靠正则或关键字硬编码。它映射到config/fragments/signal/complexity/在routing.signals.complexity中声明。在以下场景优先使用complexity部分提示需要更强推理或更长思维链但无法靠主题识别简单流量应留在更便宜模型复杂提示应升级到更强模型希望升级策略独立于领域同一策略在多条决策间复用多模态推理请求如带截图、带图像的 CUA 请求与简单提示需要不同处理。仓库中一个典型的复杂度片段位于 config/fragments/signal/complexity/escalation.yaml它定义了名为needs_reasoning的规则把「多步推理、综合权衡、根因分析」类请求标记为 hard把「简短回答、快速摘要、简单改写」类请求标记为 easy。三、完整配置规则结构逐字段拆解官方文档给出的最小配置如下它在routing.signals.complexity下声明一条规则routing: signals: complexity: - name: needs_reasoning threshold: 0.75 description: Escalate multi-step reasoning or synthesis-heavy prompts. hard: candidates: - solve this step by step - compare multiple tradeoffs - analyze the root cause easy: candidates: - answer briefly - quick summary - simple rewrite对照源码中 ComplexityRule 结构体 与ComplexityCandidates同文件 L479-L482各字段含义如下字段类型必填说明namestring是规则名最终以rule:verdict如needs_reasoning:hard的形式供决策条件引用thresholdfloat32二选一对称阈值简写。本地 margin 以 0 为中心的有符号值hard 边界为thresholdeasy 边界为-thresholdhard_above/easy_belowfloat64二选一显式边界对分数越高越难时使用见「边界判定」一节hard_below/easy_abovefloat64二选一显式边界对分数越低越难时使用descriptionstring否规则说明会注入决策任务路径的问题描述hard.candidates[]string是困难示例库启动时预计算嵌入easy.candidates[]string是简单示例库启动时预计算嵌入hard.image_candidates/easy.image_candidates[]string否多模态图片候选本地路径或>complexity_model: backend: protocol: http_classify contract: score.v1 # 或 label_distribution.v1 ...complexity信号支持两种远程契约classifier_backend_complexity.goscore.v1携带连续分数运行时用每条规则声明的边界将其转换为判定不报告置信度——决策引擎对依赖该规则的决策回退到结构化默认值并把池标记为 unscoredlabel_distribution.v1直接携带判定标签胜出标签即判定其概率即置信度。启动校验保证protocol必须是http_classifyhttp_chat返回散文无法解析分数或标签分布直接被拒绝score.v1下每条规则必须声明显式边界对而hard_below/easy_above低分更难仅在配置了 score 后端时合法因为本地 margin 按构造就是「hard 减 easy」更高即更难——本地需要反向时应当交换 hard/easy 候选列表classifier_backend_complexity.go。另外还有一条决策任务路径当 complexity 信号绑定到DecisionTaskContract时模型会以问答形式直接为请求打分decision_complexity.go规则的description被注入问题指令hard/easy 候选分别注入 levels 的示例。该路径下显式边界读取原生 [0,1] 分数legacy 对称阈值则映射为2*score - 1以匹配以 0 为中心的量纲同文件 L84-L91。八、在决策规则中引用 complexity完整实战示例仓库 config/recipes/balance/config.yaml 中complexity信号被广泛用于组合决策条件例如法律/合规场景升级legal_risk:medium、legal_risk:hard类型的 complexity 条件与domain: law、keyword 条件 OR 组合命中则路由到anthropic/claude-opus-4.6、openai/gpt5.4的高推理通道config/recipes/balance/config.yaml数学推理降级保护math_task:medium类型的 complexity 条件配合投影条件决定请求是否进入reasoning_deep决策同文件 L335-L347证据敏感的健康咨询升级evidence_synthesis:hard触发verified_health通道同文件 L676-L678简易解释保留在廉价模型evidence_synthesis:medium配合领域与投影条件将中等复杂度的解释类请求留在qwen/qwen3.5-rocm同文件 L877-L887。注意决策规则中引用复杂度判定时条件写法为conditions: - name: legal_risk:hard type: complexity其中name是规则名:判定type固定为complexity。这也是routing.signals.complexity中规则name必须唯一且稳定的原因——它直接成为跨决策复用的键。九、调参实践与注意事项用有代表性的难/易示例配置候选示例决定学习边界示例应贴近真实路由成本画像哪些请求该贵、哪些该便宜而非任意短语。从低 threshold 起步仓库自带片段 escalation.yaml 使用threshold: 0.10相比文档示例的0.75更为宽松——threshold是到 0 的距离值越大越保守只有 margin 足够极端才升级值越小越敏感。按流量观察 hard/easy 判定占比再逐步调整。medium 区间是缓冲带介于边界之间的请求不会触发任何判定避免接近边界的请求在两次路由间反复横跳。显式边界对用于远程分数一旦配置score.v1后端立即改用hard_above/easy_below显式对并确认量纲与阈值范围匹配。多模态候选需第二个嵌入 provider声明image_candidates前确认多模态嵌入模型已初始化图片候选会强制走多模态原型路径。校验在启动时完成重叠边界、半对边界只声明一个方向、threshold与显式对并存、非有限数值等错误都会在启动阶段被 ValidateComplexityRuleBoundaries 拦截先跑一遍配置校验再上线。十、源码路径速查信号片段与默认规则config/fragments/signal/complexity/escalation.yaml规则结构定义src/semantic-router/pkg/config/signal_config.go边界解析与校验src/semantic-router/pkg/config/complexity_boundaries.go后端契约与启动校验src/semantic-router/pkg/config/classifier_backend_complexity.go分类器核心实现src/semantic-router/pkg/classification/complexity_classifier.go候选嵌入预加载src/semantic-router/pkg/classification/complexity_candidate_embeddings.go信号评分与融合src/semantic-router/pkg/classification/complexity_rule_scoring.go查询嵌入加载src/semantic-router/pkg/classification/complexity_query_embeddings.go决策引擎引用示例config/recipes/balance/config.yaml赞分享后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载相关推荐semantic-router Reask 信号深度解析用语义相似度检测用户重复提问并驱动模型路由升级semantic router Reask 信号深度解析用语义相似度检测用户重复提问并驱动模型路由升级 本指南系统讲解 semantic router 的 r后端API网关模型推理服务AI AgentvLLM Semantic Router Prompt 分类路由关键字、Regex 与嵌入相似度三路信号融合体系vLLM Semantic Router Prompt 分类路由关键字、Regex 与嵌入相似度三路信号融合体系 vLLM Semantic Routers后端API网关模型推理服务AI Agentsemantic-router 知识库信号kb用嵌入式知识库驱动 LLM 路由决策semantic router 知识库信号kb用嵌入式知识库驱动 LLM 路由决策 本篇围绕 semantic router 的 kb 知识库路由信号后端API网关模型推理服务AI Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑