垂直领域落地常见的卡点是:直接用大模型,领域术语答不准、单次成本压不下来、响应还慢;自己训一个小模型,又怕通用能力和长尾问题兜不住。这篇不讲概念,给的是分工思路、可执行的拆分步骤、验证顺序和退出条件,帮你判断什么时候该拆、拆完怎么对照。
垂直领域落地最常撞上的矛盾是:直接用大模型,术语答不准、单位成本压不下来、延迟还慢;自己训一个小模型,又怕通用能力和长尾问题兜不住。于是「大模型加小模型」成了很多团队的默认答案,但真正上线后跑得顺的并不多,问题几乎都出在分工没切干净、兜底路径没跑通。
这一节不讲概念,只讲判断顺序:先看该不该拆,拆了之后各自接什么活,怎么粘起来,怎么验证收益,最后说清什么情况下这套组合根本不划算。每一步都给可执行动作,不给绝对结论。
先判断到底该不该拆
别一上来就想训练小模型。先拿当前单模型方案当基准,把两类信号分清楚:属于「该拆」的,通常是领域术语密集、输出格式固定、单次调用成本高、延迟敏感、数据不能出内网;属于「不该拆」的,是任务本身高度开放、领域数据量很少、团队没有维护第二个模型的运维能力。信号混在一起时,优先看后两类。
拆之前把当前单模型方案的两个数记下来:一次典型请求的响应时间和单位成本。这两个数是后面判断拆得值不值的基准,别靠感觉,到 /tools/speed-test 和 /tools/model-cost-calculator 量出你自己场景下的口径,数字会随模型和时间变化,以当时页面为准。
| 信号 | 倾向 | 下一步动作 |
|---|---|---|
| 术语密集且标准答案唯一 | 该拆 | 统计高频术语清单,先定抽取字段 |
| 输出格式固定、可结构化校验 | 该拆 | 写死字段与校验规则,再用小模型填 |
| 调用频次很高、延迟敏感 | 该拆 | 先测延迟瓶颈在小模型还是网络 |
| 任务高度开放、没有标准答案 | 不该拆 | 先补检索和提示词,别动模型 |
| 领域样本凑不齐一轮训练 | 不该拆 | 先积累回流数据,暂缓 |
还有一层是「输错代价」。答错会被用户立刻发现的,比如单号、金额、条款编号,属于高风险字段,是小模型的主战场,必须配校验;答错影响不大的,比如寒暄、摘要润色,交给谁差别不大,不必为它单独加一套机制。把这两类混在一起评估,很容易得出「拆分没用」的错误结论。
大模型和小模型各自该干什么
分工的核心原则是:小模型接输出空间有限、有明确对错的活;大模型接输出空间大、硬约束难写的活。中间那条线不是按任务难度分的,是按「能不能写出校验规则」分的。
- 小模型适合:意图分类与路由、领域实体抽取与槽位填充、固定模板的生成或校验、检索结果的相关性过滤。共同点是判定标准可以写死,错了一眼能看出来。
- 大模型适合:多轮澄清与对话、跨文档归纳、把结构化结果组织成自然语言。这些任务的答案空间大,小模型容易在长尾上翻车。
- 不要两者做同一件事。常见失败模式是让大模型也抽取一遍再比对,看似保险,实际把成本和延迟叠了一倍,还多出一套冲突消解逻辑。
- 真要做交叉校验,只在校验字段上做:小模型出结果,大模型只判「这条是否自洽」,不重新抽取。
| 环节 | 谁来做 | 判定标准 |
|---|---|---|
| 意图识别 / 路由 | 小模型 | 分类准确率是否达标、能否覆盖长尾意图 |
| 字段抽取 | 小模型 | 字段级准确率、格式是否可解析 |
| 自洽性校验 | 大模型 | 只回对错,不重写内容 |
| 多轮澄清 | 大模型 | 追问轮次是否收敛 |
| 最终组装输出 | 大模型 | 术语一致性、语气是否符合业务 |
如果团队人手紧,第一步只拆一个环节就够了,通常选字段抽取,因为它最容易量化,也最容易看出收益。全量拆完再上线,往往还没验证就先背上运维负担。
拼起来:路由、兜底与数据回流
主链路建议走「小模型先跑 → 置信度达标直接返回 → 不达标升级给大模型」。关键在升级条件要写死,比如解析失败、必填字段缺失、置信度低于你设定的阈值,而不是让模型自己说「我不确定」——那句话本身就是个不可靠信号。
- 第一步 定路由规则把升级触发项列成清单,逐条对应到代码里的判断分支,能自动化判断的不要依赖模型自述。
- 第二步 跑兜底通道保留一条纯大模型的降级链路,小模型服务挂掉时直接切过去,先保可用性。定期演练切换,确认切换后输出格式仍然合法。
- 第三步 采集回流样本只留两类:小模型判错且大模型改对的、升级后被大模型拒答的。前者补训练集,后者多半是规则问题。
- 第四步 查字段定义升级率异常高时先别急着加数据,去核对字段定义和校验规则,很多时候是规则写错了。
兜底路径必须能独立跑通,别让大模型成为唯一出口,也别让小模型成为唯一入口。两条路都要有监控,升级率和降级率分开看,混在一起看不出是哪一段出问题。
怎么验证这套组合真的省了
准备一条固定的基准问题集,同一条问题集分别跑纯大模型方案和组合方案,只比三件事:整体准确率有没有掉、单位成本降了多少、响应时间变化。任何一项明显变差,都要先定位是哪一段拖的,再决定要不要保留拆分。
注意平均值的陷阱:成本降了但长尾变慢很常见——大部分请求走小模型很快,少数升级请求把整体高分位延迟拉高。要按分位数看,不能只看均值。具体分位口径和测试方法可以参考 /tools/speed-test 里的说明,实测数值以当时页面为准。
- 验证集里专门放一批边界样本,看升级机制有没有把它们正确送上去。
- 垂直领域里「答错但看起来合理」比「答不出来」更危险,这类样本要单独统计。
- 升级率、降级率、小模型直返率三个指标分开记录,别合并成一个。
- 成本对比按同一问题集算单位成本,不要用不同问题集的数字对比。
- 准确率对比要按字段或按意图分别看,整体准确率会掩盖局部退化。
什么情况下这套组合不划算
拆分不是默认正确,它是一笔运维投资。下面几种情况先别拆,省下来的收益覆盖不了多维护一套服务的成本。
- 领域样本还凑不齐一轮训练的时候,小模型的准确率很可能还不如给大模型加几条好提示词。
- 任务量本身很小、调用频次很低时,便宜下来的钱覆盖不了额外的迭代和监控成本,用大模型加检索就够了。
- 领域规则还在高频变动时不适合拆,规则一变就要重训,迭代速度会被拖死,先把规则外置到提示词和检索层。
- 团队里没有能独立维护小模型全流程的人时慎拆,上线只是开始,后面还有版本、监控、回滚一堆活。
- 数据合规要求可以外发、延迟又完全不敏感时,拆分的动机通常不成立。
判断的落点还是那两个基准数:拆分后单位成本和响应时间的改善,能不能覆盖多养一套服务的长期成本。心里没底就先做一个小环节的灰度,用 /rankings 看同类方案的稳定性和口碑,再决定要不要扩大范围。
拆分是为了把确定的部分变便宜,不是为了把不确定的部分藏起来。下一步先量出当前单模型方案的成本和延迟基准,再对着站内工具和方法论确认口径,别在没基准的情况下开工。→
常见问题
大模型加小模型,是不是就等于微调一个小模型接在前面?
不完全是。微调只是让小模型学会某类任务,组合方案里还有路由、升级条件和兜底通道这三块工程量,往往比训练本身更影响效果。只训模型不管升级逻辑,出问题时用户会拿到一个自信的错误答案,比直接报错更糟。
小模型的准确率不够高,是不是就没法用?
看你把小模型放在链路哪一段。如果它只负责筛选和抽取、不负责最终对用户说的话,那它的任务不是「全对」而是「把大部分请求低成本处理掉」。判断标准是省下来的成本和漏过去的比例能不能接受,而不是单看准确率这个数。
这套组合和纯 RAG 方案相比,什么情况更值得上?
任务里如果有大量固定格式的抽取、分类、字段校验,RAG 帮不上太多,因为检索解决的是「找得到」,不解决「输出结构对不对」。反过来,如果瓶颈主要在知识更新和引用准确性上,优先把 RAG 做扎实,别急着训小模型。