评估数据集:从真实查询采样、分层、标注到版本化和防污染
评估集决定你能否相信模型/提示词/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 不公开、不与训练集重叠
合上页面,先回答,再展开对照。
小程序版
微信扫码,随时查命令