资讯动态

semantic-router 的 Elo 选择算法:基于反馈评分驱动的模型路由实践指南

发布时间:2026/10/13 2:35:44 来源:尧图企业网站定制
后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载导读本文围绕 semantic-router 提供的elo模型选择算法展开介绍如何利用类 Elo 反馈分数对候选模型进行排序在路由决策中复用历史成对对比反馈而非仅依赖当前请求的启发式判断。读完本文你将掌握elo的 Bradley-Terry 评分原理、routing.decisions[].algorithm下的完整配置参数、反馈提交 API 的字段契约以及评分持久化与可观测性的实现细节可直接用于为重复工作负载的路由配置越用越准的模型选择策略。概览什么是elo选择算法elo是一种基于反馈驱动的选择算法selection algorithm它以成对比较pairwise comparison为基础使用类 Elo 评分体系对候选模型排序。在 semantic-router 的模型选择model selection体系中它属于学习型learning-based选择器通过UpdateFeedback接口从路由级反馈中在线学习让候选模型的排名随对局comparison数量增加而持续改进。在文档体系中该算法对应选择算法片段config/fragments/algorithm/selection/elo.yaml该片段随版本发布实际使用时按下方配置章节在路由 decision 中直接声明。核心实现位于 elo.goEloSelector持久化能力由 storage.goFileEloStorage提供。主要优势复用历史反馈排序依据是历史上积累的成对比较结果而非仅当前请求的单次启发式判断少量参数即可调排序行为核心只需initial_rating与k_factor两个参数即可控制冷启动起点与收敛/波动速度类别感知加权支持按不同工作负载decision/category维护相互独立的评分空间在线学习无需重训评分随反馈到达逐步更新无需离线重训练模型可选时间衰减与成本感知可配置decay_factor逐渐遗忘过期比较也可通过cost_scaling_factor平衡质量与价格详见配置章节。解决什么问题模型质量会随时间变化固定的胜者静态优先级列表过于僵化。elo让路由偏好历史上在相似流量上表现稳定的候选将谁更好的判断从冻结的静态假设转换为由真实胜败统计驱动的动态评分。何时使用能够收集路由级反馈或质量对比成对偏好数据期望排名随更多对局到来而逐步改进在线学习场景单条路由存在重复工作负载评分体系能发挥累积价值需要不重训模型即可持续学习的路由策略。算法原理基于 Bradley-Terry 模型的 Elo 评分elo的数学基础是Bradley-Terry 模型实现注释中注明参考 RouteLLM 论文思路。它估计模型 A 优于模型 B的概率P(A ≻ B) 1 / (1 10^((R_B - R_A) / 400))每次成对比较后按以下规则更新评分R_A R_A K · (S_A - E_A)其中K为学习率k_factor默认 32S_A为实际结果胜 1负 0平 0.5E_A P(A ≻ B)为期望得分。对应源码实现在 elo.go 的applyPairwiseFeedbackLocked先用math.Pow(10, (loserRating.Rating-winnerRating.Rating)/400.0)计算期望胜率再按rating KFactor * (actual - expected)更新双方评分同时累计Comparisons、Wins、Losses、Ties统计。类别加权开启category_weighted后每个 decision 维护独立的按类别评分表categoryRatings键为 decision 名使模型在math场景的表现不会污染其coding评分选择时优先取类别评分缺省时回退到全局评分getRatingsForCandidates。三种反馈更新模式源码updateRatingLocked支持三种反馈模式标准成对对比WinnerModel与LoserModel均设置走 Bradley-Terry 完整更新tietrue时双方实际得分均为 0.5正向自反馈仅设置WinnerModel如隐式信号判定某模型表现良好评分增加KFactor * 0.1负向自反馈仅设置LoserModel评分减少KFactor * 0.1。后两种模式适合只有单模型表现好坏、没有成对比较的自动信号场景elo.go。配置指南在路由 decision 中启用elo在routing.decisions[].algorithm中声明algorithm: type: elo elo: initial_rating: 1200 k_factor: 32 category_weighted: true min_comparisons: 10其中initial_rating: 1200与min_comparisons: 10是教程文档示例采用的调参值源码默认值为initial_rating: 1500、min_comparisons: 5见DefaultEloConfigelo.go实际部署时可任选其一作为起点。参数总表参数类型默认值说明initial_ratingfloat1500新模型的起始 Elo 评分示例用1200k_factorfloat32评分波动幅度越高越激进建议范围 1–100category_weightedbooltrue是否启用按类别decision独立评分decay_factorfloat0.0旧比较的时间衰减0–10 表示不衰减min_comparisonsint5评分被视为稳定的最少比较次数示例用10cost_scaling_factorfloat0.0成本考量强度0 表示忽略成本storage_pathstring—评分持久化文件路径可选auto_save_intervalstring30s源码兜底值自动保存周期如1m、5m、30s参数解读与源码对照k_factor控制单局评分变化量。k_factor越高适应越快但波动越大Elk 默认常量EloKFactor 32.0min_comparisons不仅用于文档所述的稳定性判定还直接参与置信度计算——calculateConfidence以min_comparisons为阈值中心用 Sigmoid 函数1 / (1 e^(-0.2·(comparisons - threshold)))把比较次数映射为 0.5~1 区间的置信度elo.gocost_scaling_factor开启后选择阶段会按模型每百万 token 价格来自模型配置的Pricing.PromptPer1M对候选评分做归一化折扣——更便宜的模型获得加分applyCostAdjustmentelo.go同时请求级CostWeight参与加权decay_factor源码EloConfig中已预留该字段YAML 键decay_factor用于逐步遗忘过期比较auto_save_interval仅在设置storage_path时生效配置缺失或非法时回退到 30 秒默认值见 auto_save_interval.go。选择器装配elo选择器由 factory.go 的Factory.Create()依据method elo创建调用NewEloSelector(f.cfg.Elo)后用模型配置与类别列表执行InitializeFromConfig完成冷启动初始化。该选择器也注册进全局注册表CreateAll并作为hybrid选择器的组件之一复用。选择流程评分如何决定路由源码层面的选择实现Selectelo.go为每个候选模型获取评分类别优先、全局兜底、缺失则用initial_rating按标准 Elo 概率尺度10^(rating/400)计算各候选的归一化胜率分数等价于将评分转为选择概率若开启成本感知且请求携带CostWeight对分数做成本调整选出分数最高者依据其比较次数计算置信度并生成人类可读的Reasoning含评分与胜负统计类别加权时附带 decision 名将各候选当前评分写入 Prometheus 指标见可观测性章节。反馈流程提交成对对比并更新评分反馈更新链路为POST /api/v1/feedback→ 解析Feedback→ 判定是否平局平局双方S 0.5否则胜者 1.0、败者 0.0→ 用 Bradley-Terry 计算期望分 → 更新全局与类别评分 → 按需持久化到磁盘。Feedback API 示例提交成对反馈curl -X POST http://localhost:8000/api/v1/feedback \ -H Content-Type: application/json \ -d { query: Solve: 2x 5 15, winner_model: gpt-4, loser_model: llama-3.2-3b, decision_name: math_reasoning }反馈字段契约字段必填说明query是原始查询文本winner_model是更优的模型名loser_model否被否定的模型成对比较用可留空做单模型自反馈tie否两模型表现相当decision_name否类别上下文类别加权 Elo 使用user_id否用户标识用于按用户追踪confidence否反馈置信度0.0–1.0反馈校验UpdateFeedback首先调用NormalizeFeedback与ValidateFeedbackfeedback_test.go 覆盖了完整契约模型名等状态键会去除首尾空白后规范化拒绝空反馈、缺模型、自身对比winner loser、置信度越界负数、NaN、无穷大等非法输入校验失败的反馈在评分更新前即被拒绝不会产生任何评分变更测试TestEloSelectorRejectsInvalidFeedbackBeforeMutation验证了这一点。Feedback结构还预留了FeedbackTypesatisfied/need_clarification/wrong_answer/want_different等隐式信号字段供与自反馈模式配合使用selector.go。冷启动初始评分与静态分数种子新模型默认以initial_rating起步。除统一起点外InitializeFromConfigelo.go还支持两种种子方式全局评分初始化为所有模型配置中的模型建立初始评分已存在评分则保留类别静态分数转评分当category_weighted开启时把类别配置中的静态ModelScores0–1 区间线性映射为 Elo 评分rating 1000 score * 1000常量EloMinRatingFromScore 1000、EloRatingRange 1000即 0–1 分数映射到 1000–2000 区间。映射逻辑的一个重要行为是保留已学习评分测试 elo_category_seed_test.go 验证了已从存储恢复的评分如 1740不会被静态种子0.7 → 1700覆盖而缺失的模型才用静态分数补种——这保证重启初始化不会抹掉在线学习成果。评分持久化与多副本注意事项文件存储设置storage_path后评分以 JSON 文件持久化StoredRatingsversion、last_updated、global_ratings、category_ratings并在启动时加载、每次反馈更新后标记脏数据、由后台协程按auto_save_interval周期落盘关闭时执行最终保存。FileEloStorage的关键实现细节storage.go原子写入先写.tmp临时文件再rename避免写坏主文件损坏文件兜底解析失败时把原文件备份为*.corrupted再返回错误防止数据丢失数据净化加载时对评分做合理性钳制100–3000并修正负数胜负统计。多副本状态警告Elo 评分属于本地学习状态内存或本地storage_path文件。文档明确警告在 Helm 部署中当活动 decision 使用algorithm.type: elo时多副本multi-replica路由渲染默认被拒绝——因为各副本评分互不同步会造成路由行为分裂。生产多副本场景需保持单副本或将选择器状态外部化后再关闭该安全守卫。可观测性用 Prometheus 指标追踪评分演化elo选择器深度集成 Prometheus 指标见 metrics.go随每次选择与反馈更新实时更新llm_model_elo_ratinggauge按model, category维度的当前 Elo 评分可用于 Grafana 追踪评分演化llm_model_feedback_totalcounter按winner, loser, is_tie, category统计反馈事件llm_model_rating_changehistogram评分变化分布桶覆盖典型 K-factor 变化范围-32 ~ 32llm_model_comparisons_total与llm_model_win_rategauge各模型参与比较次数与胜率。此外GetLeaderboard(category)elo.go可按评分降序导出指定类别或全局的模型排行榜便于调试与监控。已知限制依赖比较数量评分稳定需要足够的成对比较由min_comparisons控制早期阶段置信度偏低冷启动偏差新模型一律从initial_rating起步与其真实能力无关可通过静态分数种子缓解无语义理解纯粹由反馈驱动不理解查询语义适合有反馈信号的路由场景状态本地化内存/本地文件存储意味着多副本部署需要额外处理见上文警告。小结elo是 semantic-router 面向反馈驱动、在线学习场景的选择算法以 Bradley-Terry 模型为数学内核用成对反馈持续修正候选模型的评分通过category_weighted隔离不同工作负载的偏好通过decay_factor与cost_scaling_factor平衡时效与成本配合文件持久化与 Prometheus 指标可构建越用越准、可观测、可复盘的模型路由策略。若你的路由具备稳定的反馈来源与重复负载elo是替换静态优先级排序的首选学习型方案。赞分享后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载相关推荐semantic-router 的 GMT Router 算法实战基于多轮用户反馈的个性化模型选择semantic router 的 GMT Router 算法实战基于多轮用户反馈的个性化模型选择 gmtrouter 是 semantic router 中后端API网关模型推理服务AI Agentsemantic-router 的 KNN 算法选择器基于历史相似查询的模型路由实战指南semantic router 的 KNN 算法选择器基于历史相似查询的模型路由实战指南 KNNK Nearest Neighbors是 semantic后端API网关模型推理服务AI AgentSemantic Router 的 Router DC 选择算法基于双对比学习的语义相似度模型路由实战指南Semantic Router 的 Router DC 选择算法基于双对比学习的语义相似度模型路由实战指南 导读 router_dc 是 Semantic R后端API网关模型推理服务AI Agent上一篇如何修复损坏的QR码QRazyBox完整使用指南下一篇Linux 内核 KCOV 深度解析面向 Fuzzing 的覆盖采集、比较操作数与远程覆盖创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价 →
↑