如何用自己的标注样本校准AIHOT的精选标准?SelectBench评测实战指南
【免费下载链接】AIHOT一个自己找热点、自己写日报的网站框架。把信源和精选标准换成你的,它就是你的行业热点站。项目地址: https://gitcode.com/gh_mirrors/ai/AIHOT
AIHOT 是一个「自己找热点、自己写日报」的网站框架,把信源和精选标准换成你的行业,它就是你的热点站。但换行业后 AI 的精选判断是否合你的口味?本文讲清 SelectBench 评测全流程:自己标注 100–200 条样本、一键跑评测脚本、在后台逐条对比错例,用标注样本把 AIHOT 的精选标准校准到位。
为什么精选标准需要校准
精选管线是固定的:预筛通过后,评分模型对每条资料独立打两次 0–100 分,两次之和 ≥ 2 × 门槛才入选。门槛按信源分级区分(T1 官方一手 60 分、T1_5 准官方 65 分、T2 媒体与个人 76 分)。
这组门槛是 AIHOT 在 AI 领域用的偏严标准——换了行业就不一定合适。好消息是不用凭感觉调:AIHOT 内置了 SelectBench 闭环——标样本 → 跑评测 → 看错例 → 改标准 → 留出集验收,每一步都有据可依。
📍 精选标准写在哪里
- 门槛数值:industry/selection.ts —— 只有
thresholds(分级门槛)和understandFloor两组数; - 评分标准:industry/prompts/selection-score.md —— 分「必须正常评价的价值」与「必须压住的噪声」两大块;
- 预筛:industry/prompts/prefilter.md —— 宽召回,只拦明显无关的资料。
提示词版本就是它内容的哈希:改了提示词,之后的新资料按新版判断,已判过的不会重算。
第一步:准备标注样本集(gold.jsonl)
从自己的信源里挑100–200 条,逐条标注「该选 / 不该选」,存成.data/gold.jsonl(.data/不进 Git)。每行一条 JSON,格式可对照 industry/gold.example.jsonl 里的两条示例:
{"caseId":"law-001","material":{"title":"原文标题","originalTitle":null,"publishedAt":"2026-10-01T09:00:00+08:00","sourceName":"信源名称","bodyZh":null,"bodyOriginal":"正文……"},"sourceFacts":{"sourceKind":"rss","sourceTier":"T1","firstParty":true,"language":"zh"},"samplingContext":{"benchmarkSplit":"development","samplingStratum":"regulation"},"gold":{"decision":"select"}}| 字段 | 填什么 |
|---|---|
caseId | 唯一编号 |
material | 标题、发布时间、信源名、正文(bodyZh或bodyOriginal有一个就行) |
sourceFacts | 信源类型、分级(sourceTier决定用哪个门槛)、是否一手、语言 |
samplingContext | 可选。benchmarkSplit分开发集/留出集;samplingStratum按自己分类(如「新规」「判决」「营销」)看错在哪一类 |
gold.decision | select该选 /reject不该选 /either两可(不计入准确率) |
🎯 标注三建议:
- 多放难例:「差一点该选、差一点不该选」的。一眼判断的放太多,准确率会虚高;
- 留出留出集(
benchmarkSplit: "holdout"):调提示词只看开发集,最后用留出集验收,免得把提示词调成只会做这几道题; - 标注人就是以后读这个站的人,或口味一致的人——精选标准校准的终点是读者体验。
第二步:一条命令跑 SelectBench 评测
node --env-file=.env scripts/eval-selection.ts --gold .data/gold.jsonl --split development --label "第一版评分标准"脚本对每条样本跑一遍与线上一致的流程(预筛 + 两次评分,见 scripts/eval-selection.ts),再与你的标注对比,输出三样东西:
- 核心指标:准确率、精确率(选出来的有多少是对的)、召回率(该选的有多少选上了)、F1、入选比例;
- 门槛扫描:门槛从 40 到 90 每隔 2 分各会选出什么结果,直接回答「应该松一点还是紧一点」;
- 错例明细:完整报告写入
.data/eval/,并自动导入后台 SelectBench。
常用参数:--models default,deepseek-flash同批比较多个模型、--n 200限制条数、--split holdout只跑留出集。有回执复用机制:同样的输入和提示词再跑不会重复调用模型,迭代成本很低。
第三步:在后台 SelectBench 看错例、改标准
后台「SelectBench」页每次运行一张卡片,列出各模型的准确率、精确率、召回率、F1、耗时与 token 用量,并自动给 F1 最高的模型打标。点进单条运行页(页面实现:apps/web/app/routes/admin/selectbench.tsx、apps/web/app/routes/admin/selectbench-run.tsx)可以:
- 按误选 / 漏选 / 两可 / 模型之间有分歧筛选;
- 按自己标的
samplingStratum分组,定位「错在哪一类」; - 展开单条,查看模型给这条资料的完整理由和回执编号。
对症下药(策略原文见 docs/selection.md):
| 错例类型 | 表现 | 改哪里 |
|---|---|---|
| 漏选(FN) | 该选没选上 | 把「这类东西为什么重要」写进 selection-score.md 的「必须正常评价的价值」,给出例子 |
| 误选(FP) | 不该选却选上了 | 写进「必须压住的噪声」部分 |
| 整体偏松/偏紧 | 判错条目分数都贴着门槛 | 再调 industry/selection.ts 的门槛 |
⚠️ 记住顺序:先改标准,再动门槛。门槛只能整体平移,解决不了「哪一类判错了」的问题。每改一次跑一遍,SelectBench 保留全部历史,各版本可并排对比。
进阶:换模型对比与留出集验收
- 换评分模型前先比一比:
--models 模型A,模型B在同一批样本上各跑一遍,用 F1 对比和「只看模型之间有分歧的」筛选决定谁上; - 开发集满意后,跑一次留出集:
--split holdout,留出集指标与开发集相当,才说明标准真正泛化,可以放心上线。
速查清单
| 事项 | 位置 |
|---|---|
| 分级门槛 T1 / T1_5 / T2 | industry/selection.ts |
| 评分标准提示词 | industry/prompts/selection-score.md |
| 预筛提示词 | industry/prompts/prefilter.md |
| 标注样本格式示例 | industry/gold.example.jsonl |
| 评测脚本 | scripts/eval-selection.ts |
| SelectBench 导入与查询逻辑 | packages/backend/src/admin/selectbench.ts |
| 完整校准文档 | docs/selection.md |
整个流程就六个字:标注、跑、改。标 100–200 条样本,跑一次eval-selection.ts,在后台 SelectBench 里看完错例再改一版标准,循环几轮,精选区就会长成读者真正想看的样子。
【免费下载链接】AIHOT一个自己找热点、自己写日报的网站框架。把信源和精选标准换成你的,它就是你的行业热点站。项目地址: https://gitcode.com/gh_mirrors/ai/AIHOT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考