首页 知识分组 G05 评测与自动优化 PE-E-02
测试集构造
Test Set Construction
PE-E-02 内容已写满 G05 评测与自动优化 第 11 层
评测 测试集 分层
一句话结论
测试集按失败模式分层、含负例与边界例,并保留一份不参与优化的留出集。
本页结构(可跳转)
A1
① 采样
从真实流量与故障记录
保证分布真实
S
每层设定负例与边界例;每个样本记录来源
(真实流量 / 构造 / 对抗生成)与稳定性
A2
② 分层
按失败模式组织
保证覆盖
A2->S
A3
③ 负例与边界例
保证区分度
能发现误拒与过度保守
A3->S
A4
④ 判据与容差
保证可判定
A4->S
H
留出集
一份不参与优化的
固定留出集
用于判断是否过拟合
S->H
单列
X
对照:只收典型样本
⇒ 系统性漏掉边界与对抗场景
而线上故障恰恰集中在这些地方
H->X
构造动作图:测试集的四个构造动作(真实采样 / 失败模式分层 / 负例与边界例 / 判据与容差)、留出集,及「只收典型样本」的对照。 (本站自制)
01 为什么需要它
测试集的构造方式决定了它能发现什么问题:只收典型样本的集合会系统性地漏掉边界与对抗场景,而线上故障恰恰集中在这些地方。
掌握构造方法是为了让评测结果有区分度,而不是只提供心理安慰:样本从哪里来、按什么分层、哪一层放了负例,都直接决定这次改动被证实还是被放过。
适用边界
样本条数不是测试集的质量指标,覆盖到哪些失败模式才是;用理想化样本、或干脆用正在被调参的那批样本充当验收标准,得到的数字只会放大改动效果。这条量化优势也只在按上述方式构造的集合上成立,且随模型换代需要重新核验:缺少来源与稳定性记录时,陈旧的边界例与对抗例会被当成现行分布,漏检的失败模式则长期无人承接。
02 机制说明
构造方法可以拆成四个动作。
一,样本来源:从真实流量与故障记录采样,保证分布与线上一致,避免只测理想化场景;缺少线上流量时,至少用日志中出现过的输入形态与对抗构造补齐。 二,分层组织:按失败模式而不是随机抽样来组织,每层对应一类已知问题,层内样本量服从该问题的实际发生率。 三,负例与边界例:为每层设定负例与边界例以保证区分度,只收正例的集合无法发现误拒与过度保守。 四,判据与容差:为每条样本写清可复跑的判据,并把容差写进结论,使“通过”有明确口径。 工程上还要给每个样本记录来源(真实流量、构造、对抗生成)与稳定性(是否长期有效),因为部分样本会随模型换代失效;同时保持一份固定的留出集不参与任何优化,用于判断调参是否过拟合。
03 何时该用 / 何时不该用
04 实验台
shell bash
查看代码 # 按失败模式分层清点测试集:先看每层样本数够不够,再看判据齐不齐
mkdir -p testset
printf 'format:1\nformat:2\nrefusal:1\n' > testset/index.txt
printf '%s\n' '# 分层测试集台账(每层最少 5 条,含至少 1 条负例)' \
'| 样本 id | 分层(失败模式) | 判据 | 来源(真实流量/构造/对抗) | 稳定性 | 留出集 |' \
'| fmt-001 | format | is-json + required 字段 | 真实流量 | 高 | 否 |' \
'| fmt-002 | format | contains 指定字段名 | 构造 | 高 | 是 |' \
'| ref-001 | refusal | not-contains 拒绝话术(负例) | 对抗生成 | 中 | 否 |' > testset/ledger.md
awk -F: '{c[$1]++} END {for (k in c) printf "%-10s %d\n", k, c[k]}' testset/index.txt | sort
echo '--- 台账中每条样本须同时具备判据、来源、留出集标记、稳定性四项 ---'
awk -F'|' '/^\|/ && $2 !~ /样本 id|---/ {print $2, $5, $7}' testset/ledger.md预期观察:第一段输出给出各失败模式的样本条数,条数低于该模式真实发生率的一层就是当前最薄弱的一层;第二段列出每条样本的来源与留出集标记,任何一列为空即该样本不能进入验收口径。若各层样本数都远高于门槛却仍全部通过,说明分层颗粒度太粗,应新增失败模式层而不是继续加样本。
file markdown
查看代码 维护 testset/ledger.md 四列,缺一列该样本不得进入验收口径:
1. 分层:该样本对应的失败模式名;一个样本只归一层,跨层问题拆成两条样本。
2. 判据:确定性断言优先(is-json / contains / regex / javascript),其次才是模型裁判;判据文本随样本一起版本化。
3. 来源与稳定性:真实流量、构造、对抗生成三类必标其来源,并注明是否会随模型换代失效。
4. 留出集:标为「是」的样本不参与任何调参,只在读完结论时使用;被拿去调参后必须重新划一批留出样本。预期观察:读者能凭台账回答三件事:某个失败模式当前有几条样本、每条样本用什么判据判定、以及手上还有多少条从未参与优化的留出样本。
05 证据
主张 测试集的判据可以做成声明式断言清单:确定性指标覆盖相等、包含、正则、结构合法性等可机械判定的维度,且任意断言可用 not- 取反,使负例与边界例能写成机器可判的形式,而不依赖人工通读。
分级 official
来源 S-0077 https://www.promptfoo.dev/docs/configuration/expected-outputs/
原文 展开原文关键句 Deterministic eval metrics: equals / contains / icontains / regex / is-json / javascript / python / webhook … Every test type can be negated by prepending `not-`
主张 自建测试集可以承担架构取舍的裁决:官方以内部评测集上的通过率对照作为多 Agent 架构相对单 Agent 的依据,而不是依赖公开基准。
分级 official
来源 S-0006 https://www.anthropic.com/engineering/multi-agent-research-system
原文 展开原文关键句 a multi-agent system with Claude Opus 4 as the lead agent and Claude Sonnet 4 subagents outperformed single-agent Claude Opus 4 by 90.2% on our internal research eval.
主张 测试集若不按真实分布构造,读出的效应量会被样本形态扭曲:小规模主题集可能掩盖也可能放大排序效应,理想化设定下的结论不迁移到真实系统。
分级 paper
来源 S-0065 https://arxiv.org/abs/2605.27105
原文 展开原文关键句 topic sampling is a major source of variance: small topic sets can mask or exaggerate ordering effects … conclusions drawn from idealised setups do not always transfer to real-world RAG pipelines.
06 术语
术语 评测集 Eval Set
界定 带判据的一组代表性输入输出样本,是判断提示词改动是否真的变好的唯一依据;先建评测集再做优化。
相关节点 —
术语 模型即裁判 LLM-as-a-Judge
界定 用模型按评分准则对输出打分或排序的评测手段;存在位置偏差、冗长偏好与自我偏好等系统性偏差,须与确定性断言并用。
相关节点 —
07 失效模式
按数量凑样本 只关心总条数而不关心覆盖了哪些失败模式,覆盖缺口在数字上完全看不见。 只收典型正例 误拒与过度保守这两类失败永远不会被这批样本暴露,上线后才发现拒答率异常。 留出集失守 把留出样本也拿去调参,调完再在它上面读结论,得到的提升是拟合出来的。 样本来源不明 从真实流量与由模型改写的样本混在一起且不加标注,后续无法判断通过率变化是真实分布变化还是自造分布变化。 分层颗粒度过粗 一层塞进多种失败模式,层内通过率掩盖了其中某一类持续失败。 样本无稳定性标注 随模型换代失效的边界例与对抗例继续留在口径里,评估结果被陈旧样本拉偏。
08 在本站知识结构中的位置
所属分组 G05 评测与自动优化 依赖深度 第 11 层(同层节点彼此无先后约束)
在 交互全景图 中定位本节点。