黄金数据集建设

黄金数据集不是把历史问题随便导出一批,也不是找几个“看起来难”的样例。它是团队对业务质量标准的可执行表达。

一个好的黄金集应该回答:用户会问什么,系统应该做什么,哪些证据能支撑答案,哪些工具可以调用,哪些动作必须拒绝,哪些结果必须人工确认。

提出问题:为什么没有黄金集就无法稳定迭代

假设一个客服 AI 系统已经覆盖三条链路:知识库问答、工单回复草稿和自动创建跟进任务。

产品希望更换模型以降低成本,算法希望调整 RAG chunk 和 rerank,工程希望把部分低风险工单自动转成任务。每个改动在演示样例上都不错,但一线客服担心老问题又回来:引用不准、该拒答时没拒答、工具参数拿错、重复创建任务。

如果没有固定黄金集,团队只能问几个人“感觉怎么样”。这会导致三个问题:

  • 改动之间不可比较。
  • 线上事故无法沉淀成回归样本。
  • 质量门禁没有客观依据。

黄金集要让团队在上线前就能复现关键业务样本,并判断一次改动是否值得进入灰度。

分析问题:黄金集要覆盖任务、风险和失败代价

黄金集不是只存用户问题和标准答案。不同 LLM 能力需要不同字段。

评估对象必备样本字段质量标准失败代价
RAG Eval问题、权限、黄金证据、标准答案要点、应拒答标记找到证据、忠于证据、引用准确误答、误引用、越权引用
Tool Eval用户请求、可用工具、期望工具、期望参数、禁止动作工具选对、参数正确、权限通过、确认完整调错工具、重复写入、越权操作
Agent Eval目标、初始状态、允许工具、预算、预期轨迹、成功条件目标不漂移、步骤有效、能恢复、能停止计划跑偏、循环、恢复失败
输出质量 Eval输入、期望结构、rubric、不可接受输出字段完整、口径正确、格式稳定数据污染、人工返工

人工标注的位置很关键。领域专家定义业务标准,标注人员按规范产出标签,工程把标签变成可运行评估。LLM 可以辅助生成候选标签、归类失败原因和检查一致性,但不能替代标注规范本身。

黄金集的收益是可比较、可回归、可追责;成本是标注、维护和版本管理。样本越贴近线上,价值越高;样本越缺少结构,越难用于门禁。

列举方案:从样本收集到版本化数据集

建设黄金集可以按四步推进。

第一步,定义样本来源。

来源适合收集什么注意点
高频线上请求主要业务流量和常见问法避免只覆盖简单问题
人工处理记录专家真实判断和回复口径需要脱敏和权限过滤
事故复盘高风险失败、越权、误执行必须进入回归集
用户差评和纠错线上不满意样本要区分模型问题和产品预期问题
合成样本边界条件、拒答、工具异常不能替代真实流量

第二步,设计样本结构。

RAG 样本至少包含:

{
  "id": "rag-billing-refund-001",
  "question": "年付客户中途降级可以退差价吗?",
  "userRole": "support_internal",
  "expectedAnswerPoints": ["按合同条款判断", "需要财务审批", "不能直接承诺退款"],
  "goldEvidenceIds": ["policy-refund-annual", "sop-finance-approval"],
  "shouldAbstain": false,
  "riskLevel": "high"
}

Tool 样本要补充工具和参数:

{
  "id": "tool-resend-invoice-001",
  "userRequest": "把 INV-1024 这张发票重发给客户财务邮箱",
  "allowedTools": ["get_invoice", "preview_invoice_email", "send_invoice_email"],
  "expectedToolCalls": [
    {"name": "get_invoice", "args": {"invoiceId": "INV-1024"}},
    {"name": "preview_invoice_email", "requiresHumanConfirmation": true}
  ],
  "forbiddenToolCalls": ["send_invoice_email_without_confirmation"]
}

Agent 样本要保存轨迹要求:

{
  "id": "agent-renewal-risk-001",
  "goal": "找出本周到期且活跃下降的 20 个客户并生成跟进建议",
  "allowedTools": ["query_crm", "query_usage", "query_tickets", "draft_followup_task"],
  "budget": {"maxSteps": 12, "maxWriteActions": 0},
  "successCriteria": ["只分析本周到期客户", "每个建议引用 CRM 或工单证据"],
  "failureCriteria": ["创建真实任务", "扩大到所有低活跃客户", "重复查询同一条件超过 2 次"]
}

第三步,制定标注规范。

标注规范至少要说明:

  • 什么算相关证据,什么只是主题相似。
  • 标准答案是必须逐字一致,还是只要覆盖要点。
  • 工具参数来自用户输入、上下文还是工具返回。
  • 哪些动作必须人工确认。
  • 哪些样本属于应拒答、应追问或应转人工。
  • 两个标注人不一致时由谁仲裁。

第四步,版本化和分层。

黄金集应该分成几个集合:

集合用途变更频率
Smoke Set快速检查核心链路是否可用每次发布运行
Regression Set防止历史问题回归事故后持续增加
Challenge Set覆盖难样本、越权、拒答、工具异常定期扩充
Shadow Online Set从线上反馈抽样生成每周或每月更新

样本要有 owner、版本、来源、风险等级和最后复核时间。否则黄金集会慢慢变成一堆没人敢删、没人敢信的旧样本。

决策判断:黄金集做到多大才够

场景条件推荐方案不推荐方案判断理由额外成本
原型验证20 到 50 条人工挑选样本先建完整平台目标是发现主要失败类型少量专家时间
内部试点100 到 300 条分层样本只保留演示样例需要比较 prompt 和模型改动标注规范和抽检
生产 RAG高频 + 长尾 + 黄金证据 + 拒答样本只存标准答案检索和引用必须可定位证据标注成本
生产 Tool Calling工具选择 + 参数 + 禁止动作样本只看调用成功率成功执行可能仍然是错误动作工具轨迹标注
生产 Agent任务目标 + 轨迹 + 预算 + 失败标准只看最终文本Agent 风险发生在过程里trace 回放和人工审查

明确判断是:黄金集大小不按数量决定,而按风险覆盖决定。一个覆盖高风险失败模式的 200 条样本,通常比 2000 条未标注来源、没有证据和权限上下文的历史问题更有价值。

常见反模式包括:

  • 只收成功样本,导致系统学会通过简单题,却挡不住事故。
  • 把用户点赞当黄金标签,忽略用户可能没有能力判断事实正确性。
  • 合成大量样本但不校验,导致评估集偏离真实流量。
  • 样本没有权限上下文,RAG 和 Tool Eval 无法判断越权。
  • 标注规范不稳定,每次评估其实在比较不同标准。

结论收束:黄金集是质量门禁的地基

黄金数据集的最低可上线版本,不是最大样本量,而是能覆盖当前业务中最重要的失败代价。它必须同时包含正样本、负样本、高频样本、长尾样本、拒答样本和事故样本。

上线前检查清单:

  • 场景边界:每条样本是否标明用户、权限、输入来源和期望输出。
  • 质量标准:是否定义好结果、可接受结果和必须拦截的坏结果。
  • RAG 字段:是否有黄金证据、干扰证据、引用要求和拒答标记。
  • Tool 字段:是否有期望工具、参数来源、禁止动作和确认要求。
  • Agent 字段:是否有目标、预算、允许工具、成功条件和失败条件。
  • 人工标注:是否有标注规范、双人抽检、仲裁和一致性记录。
  • 版本管理:样本是否有来源、风险等级、owner 和变更记录。
  • 反馈闭环:线上差评、人工修改和事故样本是否能进入回归集。

当系统还在探索需求时,可以先用小型人工样本。只要系统进入生产评估、发布门禁或 Agent 工程,黄金集就必须成为版本化资产。