系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

eval-dataset

评估数据集:从真实查询采样、分层、标注到版本化和防污染

补充说明

评估集决定你能否相信模型/提示词/RAG 的改进。好的评估集来自真实用户查询,覆盖不同意图、难度、语言和边界案例,并有明确的参考答案或评分 rubric。它要版本化、防训练污染、定期更新,不能只用几个手写样例或模型自己生成的题目。

构建流程:收集真实查询 → 脱敏/去重 → 分层采样 → 标注答案/ rubric → 划分 dev/holdout → 版本化 → 定期复审。高风险场景还要加入负样本(应该拒答/转人工)和安全用例。

常用示例

# 分层采样:按意图、难度、语言、场景分配配额
strata = {
    "billing": 100, "technical": 150, "account": 80,
    "zh": 200, "en": 130, "edge_case": 60,
}
# 从真实日志采样,脱敏后人工标注;保留 holdout 不参与调参
# 用 Label Studio 标注问题和参考答案
# 导出 JSONL:{"question": "...", "reference": "...", "intent": "...",
#              "difficulty": "easy|medium|hard", "should_refuse": false}
# 防污染检查:评估问题是否出现在训练数据/知识库中
def is_contaminated(question, train_texts, threshold=0.9):
    qv = embed(question)
    return any(cosine(qv, embed(t)) > threshold for t in train_texts)
评估集清单:
- 来源:真实日志/工单/客服对话,脱敏
- 规模:至少几百条,关键场景有足够样本
- 分层:意图、难度、语言、租户、边界/负样本
- 标注:参考答案或 rubric、标注者一致性
- 版本:DVC/对象存储,记录日期和变更
- 防污染:holdout 不公开、不与训练集重叠

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 为什么评估集要以真实用户查询为主,而不是模型生成题目?
  2. 什么是评估集污染?怎样检查?
  3. 评估集为什么要分层和保留 holdout?
答案
  1. 模型生成题目与模型能力同源,容易过于简单或风格单一;真实查询更能反映线上分布和失败模式。
  2. 评估问题出现在训练数据/知识库中,模型可能“见过答案”;用去重、embedding 相似度和私有 holdout 检查。
  3. 分层保证各意图/难度/语言都有样本;holdout 不参与调参,能给出更 unbiased 的泛化估计。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令