评测集不是“一堆问题”,是“测试资产”——30 条结构化评测集(E02)

评测集不是"一堆问题",是"测试资产"------30 条结构化评测集(E02)

系列《AI 应用生产化手册》第 2 篇(共 30 篇)|配套开源项目:github.com/ChenYingbo/...

一、先看三个问题

E01 我们手工问了 10 个问题,很快发现三个问题:

  1. 这 10 个问题是"随手想"的------凭什么代表真实用户会问的东西?改天线上用户问的,评测集里根本没有。
  2. 没法回答"覆盖了哪些能力"------领导问"评测覆盖全面吗",你只能答"还行吧"。
  3. 评分是即兴的------同一个答案,昨天打 4 分今天打 3 分,标准漂移。

解法只有一个:把"随手问"升级为"结构化评测集"------有字段、有分类、有难度分层、有边界 case、有标注规范。

核心认知:评测集不是"一堆问题",而是"一份经过设计的测试资产"。它决定了你的评测体系能测出什么、漏掉什么。

二、原理:四个设计维度

评测集设计四原则

原则 含义 反面教材
多样性 覆盖不同问题类型(定义/对比/代码/流程...) 全是"什么是 X"
难度分层 简单/中等/困难按比例分布 全是简单题,测不出退化
边界 case 刻意放"会翻车"的问题 全是"标准答案题"
可标注 每题有预期/评分依据 只有问题没有标准

四大来源(按真实度排序)

复制代码
真实日志采样(最真实,最贵)
   ↓ 脱敏 + 挑选
人工标注(专业标注员/领域专家)
   ↓ 标注规范
LLM 辅助扩写(快速量产,需人工校验)
   ↓ 防重复
合成数据(覆盖边角,质量最低,需严格校验)

原则:能采真实就采真实,合成数据只用来补边角,且必须人工过一遍。

黄金集 vs 演进集

黄金集(Golden Set) 演进集(Evolving Set)
用途 回归门禁的稳定基线(E04) 随线上反馈持续扩充(P30 数据飞轮)
特点 数量少、质量高、几乎不变 持续追加、标注随业务演进
变更 只在重大里程碑评审后更新 每轮迭代都可增删

常见误解:评测集是"建一次用永远"。错------黄金集保底防退化,演进集跟进业务,两者缺一不可。

结构化字段(为什么评测集要带字段)

不带字段的评测集 = 问题列表;带字段的评测集 = 可分析的资产:

字段 作用
id 追踪、关联评测报告
category 按能力域统计覆盖(factual/procedural/coding/...)
difficulty 难度分布、回归时分层看退化
boundary 标记边界 case,单独统计"翻车率"
expectation 标注/判分依据,保证评分一致性
notes 设计意图,防后人(自己)看不懂

有了字段,评测报告才能回答"哪类问题在退化"------这是评测驱动改进的前提。

三、动手:30 条结构化评测集

配套项目已交付 30 条评测集初稿(可直接用,也可按你的业务调整):

bash 复制代码
git clone https://github.com/ChenYingbo/ai-prod-demo.git && cd ai-prod-demo

# 查看评测集
cat eval/e02_eval_set.json | python3 -m json.tool | head -20

# 统计覆盖情况(类别/难度/边界)
python3 - <<'EOF'
import json, collections
data = json.load(open('eval/e02_eval_set.json', encoding='utf-8'))
print('总数:', len(data))
print('类别:', dict(collections.Counter(d['category'] for d in data)))
print('难度:', dict(collections.Counter(d['difficulty'] for d in data)))
print('边界:', sum(1 for d in data if d['boundary']))
EOF

本评测集的设计(30 条构成)

类别 数量 说明
factual(事实/概念) 8 定义类、对比类、流程类、安全概念
procedural(流程步骤) 4 构建 RAG、上线检查、评测方法、重试机制
coding(代码) 4 调用接口、sqlite、日期、HTTP 客户端
comparative(对比判断) 4 RAG vs 微调、缓存对比、离线 vs 在线、单体 vs 多 Agent
boundary(边界 case) 8 全系列安全底线:拒绝编造/拒答/防注入/缺上下文澄清/无记忆说明
hard(深度长尾) 2 技术深问、架构理解

难度分布:简单 6 / 中等 15 / 困难 9------故意让"困难 + 边界"占 57%,因为评测的使命是抓退化,不是晒正确率。

基于 E01 结果的自检(关键一步)

拿 E01 的 10 问打分结果对照本评测集,回答:

  1. E01 里答得差的问题,在本评测集的哪一类?------如果集中在 boundary,说明系统缺"拒答/澄清"能力(这是评测集设计要暴露的)
  2. 哪几类完全没有覆盖到?------比如 E01 没有代码题、没有注入题,本评测集补上了
  3. 有没有重复/无效问题?------删掉,评测集宁缺毋滥

四、真实踩坑(含配套项目实测)

  1. 幸存者偏差:只收集"模型答得好"的问题当评测集------评测集是找问题的,不是证明它能干的
  2. 边界 case 太少:90% 是标准题,翻车场景一个没测------边界 case 占比建议 ≥20%
  3. 评测集泄漏:评测问题出现在系统提示词/知识库里 = 开卷考试(合成数据环节最易发生)
  4. 标注规范缺失:没有 expectation/rubric,两个评分的人标准不一样,报告没法比较
  5. 数量崇拜:追求 1000 条而每条粗制滥造------30 条高质量 > 1000 条噪音
  6. 黄金集随便改:每次心情好就加几题,回归基线漂移------黄金集要"锁死"
  7. (实测)边界 case 的判分要单独设计:本套评测集真实跑分时发现,naive 判分器会把"安全拒答"判成"没回答问题"------注入题明明被正确拦截了却判 FAIL,需要给边界 case 加规则判分
  8. (实测)评测集要能暴露定位缺口 :无知识库时模型会编造报销流程(幻觉)------评测集把它暴露出来,正是 RAG 要解决的方向

这套 30 条评测集在配套项目上用真实模型(DeepSeek)跑出了 29/30(97%),门禁 0.8 通过------评测集本身也经过了两轮校准(详见 E03)。

五、小结

  • 四原则:多样性 / 难度分层 / 边界 case / 可标注
  • 黄金集锁死防退化,演进集持续扩------标尺不能动
  • 带字段的评测集才是资产:能回答"哪类问题在退化"

明天(E03):《评测执行框架》------用 DeepEval 跑评测集,对比 LLM-as-judge 与规则判分(含真实的"安全拒答被判错"校准实录)。 收藏 + 关注,每天一篇,30 天把 AI 应用送上生产。

相关推荐
尘中远20 分钟前
7大开源Agent源码对比解读——会话管理
ai·开源·agent·codex·harness
OpenBayes21 分钟前
Qwen3.8-27B-FP8 降低大模型部署门槛,开启高效多模态智能体验;MiniMax H3-1K 发布千段视频测试数据集,全面评估 AI 视频生成能力
人工智能·深度学习·计算机视觉·自然语言处理·语音识别·多模态大模型
小小测试开发23 分钟前
RAG评测指标实战:忠实度、上下文精确率/召回率从原理到CI落地
android·人工智能·spring boot·ci/cd
Easy_API23 分钟前
OpenAI三周内第二次降价,GPT-5.6 Sol砍了20%到33
大数据·前端·人工智能·gpt·深度学习
小K讲AI营销25 分钟前
智谱配售314亿港元:融资通道切换
大数据·人工智能
陕西企来客30 分钟前
2026年8月木铝门窗适合哪些住宅?材质性能与维护解析
人工智能·材质·木铝门窗
深小乐31 分钟前
读李开复《AI 未来已来》,我三月份写的那些判断,被补全了
人工智能
Csvn34 分钟前
第 9 章 记忆系统
人工智能·aigc·agent
李洱37 分钟前
Reranker(重排器)
人工智能