6.3 shortlist 与 tournament 两段式


6.3 shortlist 与 tournament 两段式

本节摘要:高基数场景的完整工程答案是一套两段式赛制。第一段 predict_shortlist(官方口径提供):不问「一百二十个候选里选谁」,先问「哪些候选值得进决赛」——用规则、召回分或预算截断把候选缩到约二十个以内(该界线与官方「约 20 个以上选项 Jev 更强」的口径对齐,官方口径);第二段 tournament(官方口径提供):决赛圈内两两配对比较,让模型做它最擅长的小选项集决策,聚合胜负关系得最终排序。本节给出两段式架构的完整 ASCII 图与代码骨架(写法示意)、配对方式的三种选择(循环赛、淘汰赛、top 种子赛)、胜负聚合的方法,以及一段清醒剂:两段式是对官方高基数边界的工程补偿,不是超越——它把「不可用」救成「可用」,不把「不如 Jev」变成「强过 Jev」。

学习目标

  • 画出两段式架构:候选池、shortlist 粗筛、决赛圈、tournament 决胜四层。
  • 说出 shortlist 与 budget 的本质区别:筛「谁该进」与裁「超额的」。
  • 为场景选择配对方式:循环赛、淘汰赛或 top 种子赛,并算清调用次数。
  • 用胜负关系聚合出最终名次,并处理平局与循环克制。
  • 复述两段式的定位:工程补偿,精度上限仍受官方高基数口径约束。

一、从预算到赛制

第 6.2 节的 budget 解决了「跑得动」,但它有个结构性弱点:裁剪依据是外部信号(召回分、规则),决策头只见到被放进来的候选——如果粗筛错了,决赛圈里就没有正确答案,后面再准也无力回天。两段式对此的改进不是「换一种裁法」,而是把「缩小候选集」本身变成一个明确的、可度量、可迭代的工程环节:shortlist 的召回率成为一等指标,可测、可调、可验收。这就是「闸门」与「赛制」的差别——闸门只要流量,赛制要对名次负责。

两段式架构:高基数候选的完整处理链 ┌─────────────────────────────────────────────────────┐ │ 候选池:120 个选项(示意规模) │ └───────────────────────┬─────────────────────────────┘ ▼ 第一段 predict_shortlist(粗筛) ┌─────────────────────────────────────────────────────┐ │ 粗筛信号:召回分 / 业务规则 / 分层配额(6.2 三裁法) │ │ 出口约束:决赛圈 ≤ 约 20 个(对齐官方高基数口径) │ └───────────────────────┬─────────────────────────────┘ ▼ 第二段 tournament(决胜) ┌─────────────────────────────────────────────────────┐ │ 决赛圈 16 个(示意):两两配对成 choice 题 │ │ A vs B → 模型选一方;C vs D → …… │ │ 胜负聚合:胜场数 / 加权胜分 → 最终名次 │ └───────────────────────┬─────────────────────────────┘ ▼ 最终决策(带名次与置信) ​

两个模块名都来自官方口径(predict_shortlist 与 tournament 为官方提供的能力),本章的写法示意只讲结构,接口以官方仓库 README 为准。

二、第一段:predict_shortlist

shortlist 的输入是全量候选加 context,输出是缩到预算内的决赛圈。官方接口的写法示意:

# shortlist_call.py —— 第一段粗筛(写法示意,接口以官方仓库 README 为准) from laya import Router router = Router() shortlist = router.predict_shortlist( context="工单:企业版采购咨询,需要报价单与实施周期。", question={ "id": "route", "type": "choice", "question": "这条工单应路由给哪个处理组?", "options": all_teams, # 全量 120 个(示意) }, k=16, # 决赛圈规模(示意值:≤ 约 20 的安全区) ) finalists = shortlist["shortlist"] # 决赛圈候选(字段名以官方文档为准) ​

shortlist 与 budget 的关键差异要分清:budget 是「硬截断,被裁者出局」;shortlist 是「排序收缩,收缩过程本身可度量」。工程上这意味着三件事。第一,召回率要验收:拿一批有人工答案的高基数样本,测正确答案进入决赛圈的比例(示意目标:九成以上再谈第二段,具体按业务定)——召回不达标就先改粗筛信号,别急着上 tournament。第二,k 的取值对齐官方边界:决赛圈控制在约 20 个以内(官方口径的适用区),k 越小越快、召回风险越大,k 顶到边界则延迟与精度双双承压。第三,决赛圈必须给兜底项留席位:与 6.2 同一条纪律,「其他」不占决赛名额也要能作为最终答案出现(示意设计:兜底项常驻候选,不入对局)。

三、第二段:tournament

决赛圈内的问题从「十六选一」变成一连串「二选一」或小组选择——模型始终在小选项集上作答,这是它被官方口径背书的能力区。配对方式三种:

赛制 配对方式 调用次数(n 个候选,示意) 特点
循环赛 任意两两都比 n(n-1)/2 次 名次最稳,代价最高
淘汰赛 输者出局,树状推进 n-1 次 最省,单场失误不可逆
top 种子赛 粗筛分前几名打循环,其余按种子排 介于两者 粗筛分强时性价比最高

调用次数乘单次延迟(官方口径 32.8 毫秒量级)就是第二段的延迟预算:十六个候选的循环赛约一百二十场、四秒量级(示意值),淘汰赛十五场、半秒量级(示意值)——高基数场景用 laya 做精细排序时,这个账要提前算,赛制就是延迟与稳健的交换。代码骨架(示意):

# tournament_run.py —— 第二段决胜的骨架(写法示意) from itertools import combinations def tournament(router, context, finalists): wins = {name: 0 for name in finalists} # 胜场计数 for a, b in combinations(finalists, 2): # 循环赛(示意) result = router.predict( context=context, questions=[{"id": "pair", "type": "choice", "question": "哪个候选更合适?", "options": [a, b]}], ) winner = result["results"][0]["answer"] wins[winner] += 1 return sorted(finalists, key=lambda x: -wins[x]) # 按胜场排名 # ranked = tournament(router, "工单:企业版采购咨询……", finalists) ​

聚合与平局:胜场相同时,用两两对局里的概率差距做小分(示意方法:累加胜局中 winner 的置信度作 tie-break);出现「A 胜 B、B 胜 C、C 胜 A」的循环克制是正常现象,说明候选实力接近——此时名次的参考价值本来就低,正确动作是把前三名一起送人工复核,而不是逼模型分出高下。另有一条与第 10.2 节相关的纪律:两两对局天然受选项顺序影响,配对时固定一种顺序会引入位置偏差——稳健做法是每对加赛一场交换顺序(调用量翻倍,按需启用,示意建议)。

四、位置与信号的复用

两段式里藏着一个容易被浪费的信号:shortlist 的粗筛分本身携带排序信息。top 种子赛制里它决定种子位;即使不打种子赛,也可以把它与 tournament 胜场做简单融合(示意:加权平均两个排名),通常比单一信号稳——两种信号来自不同视角(外部召回与模型判断),互补性强。融合权重不用精调,留出集上试两三组取稳者即可(示意建议)。

五、清醒剂:补偿不是超越

两段式的成绩单要按官方口径念:约 20 个以上选项的场景 Jev 更强(官方口径)——两段式没有改变这个事实,它做的是把「直接上百选项硬闯 laya」这个不可用方案,改造成「召回担过滤、模型担小集决策、赛制担聚合」的可用方案。它的精度上限由两块决定:粗筛召回率(你的工程)与决赛圈内的小集决策质量(微调后的检查点,第 5 章)。两者都可以做得很高,但当业务对高基数排序的精度要求苛刻、且调优两段式的工程成本超过换方案的成本时,第 9 章的三向选型就是该翻开的下一页——高基数且精度敏感,是 Jev 的主场(官方口径),混合架构(laya 前置过滤加 Jev 兜底)则两头的好处都占一部分。

本节要点回顾

  • 两段式四层:候选池、shortlist 粗筛、决赛圈(约 20 个以内,对齐官方口径)、tournament 决胜。
  • shortlist 与 budget 的本质差异:排序收缩可度量——召回率是第一验收指标,不达标先改粗筛。
  • 三种赛制的调用账:循环赛 n(n-1)/2 最稳、淘汰赛 n-1 最省、top 种子赛折中;延迟预算提前算。
  • 平局用小分,循环克制送人工;对局交换顺序可压位置偏差(第 10.2 节展开)。
  • 定位清醒:补偿不是超越——高基数精度上限仍受官方口径约束,追不上就到第 9 章分流。

输入与输出两侧的超规格问题都有了应对。但无论窗口聚合还是赛制排名,产出的概率要在业务里当数字用,还差一道工序:校准。下一章把概率变成可信的工程契约。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U