一个工单分类系统先用大模型跑全部 10 万条/天,成本太高。于是先用小模型做二段:小模型判断"是否需要大模型",只有 20% 交给大模型。上线后成本降到三分之一,但准确率从 92% 掉到 84%——因为小模型把 8% 的难样本判成了"简单",而那 8% 恰好是错误代价最高的。
"小模型初筛"是最常见的成本优化手段,但它的收益公式里有一个容易被忽略的项:漏判的代价。这句话是整套设计的支点:小模型的"低置信"能被门槛拦住,而"高置信的错"拦不住。所以初筛的安全性不取决于门槛高低,而取决于"高风险样本是否走了别的通道"。
而漏判发生在"小模型自信地判错"时,而不是"它说不知道"时。
1. 收益公式的三个项
| 项 | 说明 |
|---|---|
| 省下的成本 | 被拦截的比例 × 单次差价 |
| 增加的损失 | 被错误拦截的比例 × 错误代价 |
| 额外开销 | 小模型本身的调用成本 + 延迟 |
第二项最难估:错误代价不是均匀的,而它往往集中在"少数难例"上——而难例正是小模型最容易判错的那部分。
第三项常被算漏:小模型也要花钱与时间,若它只拦掉 20%,总成本可能没降多少。第三项在"自建小模型"时更明显:显存占用、部署、维护都不在"每次调用多少钱"里,但它们是真实成本。所以"用大模型 API + 初筛"与"自建小模型"要分开算账。
// 一次真实的账(10 万条/天,大模型 0.01 元/条,小模型 0.001 元/条)
原成本:100,000 × 0.01 = 1000 元
方案:全部走小模型 + 20% 走大模型
成本:100,000 × 0.001 + 20,000 × 0.01 = 100 + 200 = 300 元
-- 省 70%
-- 但若漏判率 3%(3000 条),且每条平均损失 0.5 元 → +1500 元
-- 净亏
2. 小模型该判什么
| 判断目标 | 适合度 |
|---|---|
| 是否需要大模型(难度二分类) | 中(需要校准) |
| 是否可以不用模型(规则能解决) | 高 |
| 具体类别(直接出结果) | 视任务 |
| 是否需要人工 | 高 |
第二项的另一个优势是"可解释":规则命中能说清"为什么走这条",而模型置信度说不出。所以在合规场景里,规则段的价值高于它的覆盖率。
第二项最划算:"这条能不能用规则处理"是更容易的判断(如关键词命中、模板匹配),而它的错误代价也低——因为规则命中通常意味着"明确"。
第一项最难:"这题难不难"是元判断,而模型的置信度往往不准(尤其在小模型上)。第一项(是否需要大模型)还有个"训练目标"问题:小模型没被训练成"判断难度",而是被训练成"做这个任务"。所以用它做元判断,等于用一个错位的信号。
// 三段式流水(推荐顺序)
1 规则:能命中规则的不需要模型(覆盖 40–60%)
2 小模型:处理规则外的中等难度(覆盖 30%)
3 大模型:剩下的疑难(10–20%)
// 关键:规则在前,因为"规则命中"比"模型自信"可靠
3. 门槛怎么定
| 依据 | 说明 |
|---|---|
| 小模型的置信度 | 需校准,不能直接用 |
| 历史数据的分布 | 看"被拦掉的样本"质量 |
| 错误代价的不对称 | 宁可多送大模型 |
| 容量(大模型配额) | 硬约束 |
第三项最关键:如果"漏判"的代价远高于"多跑一次大模型",那门槛应当偏向"多送"。这与"拒答阈值"的取舍是同一个逻辑。
第三项(代价不对称)可以量化成一个规则:"漏判代价 / 多跑一次的代价 = 门槛的偏向倍数"。若漏判代价是 50 倍,那门槛就应当设到"只拦最确定的那部分"。
第一项要小心:小模型的置信度往往过度自信,尤其在它没见过的分布上。所以"直接用 0.9 做门槛"通常是错的——需要先做校准。
// 分层门槛(按业务代价不对称设定)
route:
rule_first: true # 先跑规则
small_model_threshold: 0.75 # 高于此值直接采信小模型
escalate_below: 0.75 # 低于此值交大模型
always_escalate: # 命中即升级(不管置信度)
- category: "退款/投诉"
- amount_gt: 1000
// 关键:always_escalate 处理"错误代价高"的样本
4. 校准:置信度为什么不可直接信
| 现象 | 原因 |
|---|---|
| 高置信但错 | 分布偏移、训练数据偏差 |
| 低置信但对 | 样本罕见但简单 |
| 置信度集中在 0.9+ | 校准不良 |
第三项是小模型的常见病:它的输出概率分布很尖,于是"0.95"实际可能对应"70% 正确"。第二项(低置信但对)会带来"不必要的升级":它不伤质量,只伤成本。所以校准的收益主要在成本侧,而不是质量侧。
校准的做法是"分桶统计":把预测概率分成 10 档,看每档的实际正确率。如果 0.9 档只有 0.7 正确率,那门槛就必须上调。
// 校准表(小模型,1000 样本)
预测区间 样本数 实际正确率
0.90–1.00 620 0.71 ← 过度自信
0.70–0.90 210 0.68
0.50–0.70 90 0.52
< 0.50 80 0.31
// 结论:任何门槛都拦不住"高置信错";必须靠 always_escalate 兜住高风险类别
还有一个"路由方式"的选择会影响效果:串行(先小后大) vs 并行(都跑,取更可信的)。串行省钱但慢,并行快但成本等于"全跑大模型 + 一堆小模型"——所以并行只在"延迟比成本重要"时用。
// 两种路由的账(10 万条/天)
串行:小模型全量 + 20% 大模型 = 100 + 200 = 300 元,延迟 +
并行:小模型全量 + 大模型全量 = 100 + 1000 = 1100 元,延迟不变
// 结论:串行省 73%,代价是每请求多一次调用延迟
5. 什么时候不划算
| 情形 | 为什么 |
|---|---|
| 高中风险样本占比 > 20% | 省不下来 |
| 小模型成本 ≈ 大模型的 30% | 差价不够 |
| 任务本身不难 | 直接大模型更简单 |
| 延迟敏感(要求 < 100ms) | 多一跳更慢 |
第四项(延迟敏感)有个"批处理"解法:把初筛做成异步的(先入库,后台路由),于是多一跳的延迟不影响用户。代价是"结果不是实时的"。
第一项是最直接的判据:如果 30% 的样本都必须升级,那小模型只处理了 70%,而它自己的成本 + 复杂度可能超过省下的钱。
第四项在"实时交互"场景里很重要:多一次模型调用就是多 200–500ms,而这个代价往往比成本更影响体验。
评估初筛效果时,最容易犯的错是"只看平均值":整体准确率 84%(原 92%)看起来"可接受",而如果那 8 个点是"退款与投诉"类别,它可能是灾难。所以评估必须按类别看。
// 按类别的评估表(上线前后对比)
类别 上线前 上线后 变化
咨询 95% 94% -1
退款 93% 71% -22 ← 灾难
投诉 90% 68% -22 ← 灾难
其它 88% 87% -1
// 结论:整体 -8 由两个类别的 -22 拉低;这两个必须 always_escalate
6. 排错:五种"初筛上线后变差"
| 现象 | 成因 | 处理方向 |
|---|---|---|
| 准确率明显下降 | 漏判集中在难例 | 加 always_escalate |
| 成本没降多少 | 拦截比例太低 | 先上规则,再看模型 |
| 延迟变高 | 两段串行 | 并行或降门槛 |
| 某些类别质量骤降 | 分布偏移 | 按类别监控 |
| 无法解释某条为什么被拦 | 无路由日志 | 记录路由决策 |
第五项是必备:每条样本都要记录"走了哪条路、为什么"。第四项(按类别监控)是发现"分布偏移"的唯一方式:整体准确率可能只降 1%,而某个类别降了 20%——只有分类别看才看得见。
否则"质量下降"只能整体归因,无法定位到"哪类样本被错拦"。
最后一条"回退"设计:初筛必须是"可一键关掉"的。上线后发现问题时,"关掉初筛回退到大模型全量"应当是一条配置,而不是一次发版——否则回退成本会阻止人们回退,而问题会持续。
// 回退开关(默认开启,异常可关)
prefilter:
enabled: true
disable_on_quality_drop: # 自动降级条件
per_category_accuracy_below: 0.85
window: 1h
// 关掉后:全量走大模型(成本上升,质量恢复)
7. 边界:什么情况不必做初筛
| 场景 | 为什么 | 做法 |
|---|---|---|
| 调用量小(每天几千) | 省的钱不够工程成本 | 直接用大模型 |
| 任务高度同质 | 大模型也便宜(短输入) | 直接大模型 |
| 已用批处理(离线) | 成本已被摊薄 | 不初筛 |
| 质量要求极高 | 漏判不可接受 | 不初筛 |
最后一条与"演进"有关的边界:初筛的分界线会随业务漂移(新工单类型、新话术)。所以门槛不能"设一次用一年",要有"每月看一次分档正确率"的惯例,否则它会悄悄退化。
判断口径一句话:"被拦掉的样本"与"必须升级的样本"之间,是否有清晰的界线。有,初筛能省;没有(界线模糊),初筛只是把错误从"贵的地方"搬到"便宜的地方"。
8. 自测
- 收益公式的三个项里,哪一项最难估?为什么它集中在"少数难例"上?
- 为什么"规则在前、小模型在后"比反过来更好?
- 门槛设定为什么应当偏向"多送大模型"?这与拒答阈值有什么共同逻辑?
- 小模型的置信度为什么不能直接用?"校准表"该怎么看?
- 什么情况下"初筛不划算"?为什么"高中风险样本占比"是最直接的判据?
- 判断"是否值得做初筛"的那个问题是什么?