写点什么

AI 评测入门(一):先搞懂你的数据集

作者:非晓为骁
  • 2025-09-08
    福建
  • 本文字数:2647 字

    阅读完需:约 9 分钟

“不理解输入,如何控制输出?”

——这是我做第一个 AI 评测项目时,最深刻的体会。


我最近用 AI 实现了一个功能:基于标准标签体系,对某垂类产品评价内容自动打标签


这是我第一次接触 AI 评测、第一次做标签分类、甚至第一次系统分析用户评价。


但正因“零经验”,反而让我更聚焦于最本质的问题:如何让 AI 输出符合预期?


我计划用三篇文章,完整复盘这个“从零上手 AI 评测”的过程(全程使用 Langfuse Cloud):


  1. AI 评测入门(一):评价打标签 —— Data Set ← 本文

  2. AI 评测入门(二):评价打标签 —— Prompt 设计

  3. AI 评测入门(三):评价打标签 —— Evaluation 与迭代


有趣的是,虽然我最初是从 Prompt 入手的,但在测试过程中,我意识到:数据集的质量和结构,比 Prompt 本身更重要


你不了解你的“输入”,就不可能稳定控制“输出”


所以,第一篇,我们先聊最基础、也最容易被忽视的部分 —— Data Set

数据集的三大组成部分

在这个项目中,我将数据集拆分为三类:


  1. 知识库(标签体系) —— 模型打标的“标准答案库”

  2. 自测数据集(范例集) —— 用于探索 Prompt 设计边界

  3. 评测数据集(Test Set) —— 用于量化模型表现,发现 Bad Case

一、知识库(标签体系)

为什么标签体系是“数据集”?

因为它是模型推理时的关键输入依据。它可能来自外部采购、历史积累、跨部门协作 —— 不一定由你生成,但必须由你负责。


它决定了模型“能输出什么”、“不能输出什么”,是 Prompt 的“知识锚点”。


我的标签体系共 128 个标签,结构为三级分类(一级 > 二级 > 三级)。规模不大,正好适合人工全量审查。


⚠️ 如果你的标签体系更大(比如上千标签),建议按模块抽样审查,至少明确:


  • 有几个大维度?

  • 各维度之间是否互斥?

  • 是否存在模糊、冗余、交叉的标签?

为什么要“人工过一遍”?

  1. 避免“脏标签”污染输出


测试中我们发现,模型输出中频繁出现 “其他”、“等等”、“未分类” 等模糊标签。需提前清洗,能极大提升输出质量。


  1. 建立“标签直觉”,识别模型幻觉


熟悉标签体系后,你能在测试时快速判断:


  • “这个标签是我们体系里的吗?”

  • “这三个标签能同时出现吗?”

  • “它们是否属于同一逻辑维度?”


📌 真实踩坑案例:


模型输出了三个“三级标签”,描述得头头是道,但细看发现——它们分别来自三个互不关联的一级分类。大模型的“流畅包装”极具迷惑性,只有你熟悉标签结构,才能一眼识破。


  1. 知识库不一定用 RAG —— Prompt 内嵌也很香


很多人一提“知识库”就想到 RAG(检索增强生成),但对结构化、小规模的知识(如 128 个标签),直接写入 Prompt 效果更稳定、调试更简单


我会在下一篇详细分享如何迭代 Prompt,这里先埋个钩子 👇


✍️ 下期预告:《AI 评测入门(二):Prompt 迭代实战从“能跑通”到“能落地” 》

什么时候做这件事?

写 Prompt 之前!


这是地基。地基不稳,Prompt 写得再漂亮,输出也会跑偏。

二、自测数据集(范例集)

自测数据集不是随便找几个例子,而是有目的地构建 Prompt 的“需求说明书”

构建方法

从真实用户评价中抽取样本,持续观察,直到“新东西不再出现”。

什么是“新东西”?

  • 从“单标签” → 出现“多标签”需求

  • 从“单一情绪” → 出现“同一标签 + 不同情绪”组合

  • 从“简单句式” → 出现“长文本、复合语义、反讽表达”


这些“新东西”,就是你 Prompt 需要覆盖的边界条件。

关键洞察

不要在 Prompt 里要求“输出多标签”,除非真实数据里存在多标签场景。


否则,你就是在让模型“无中生有”,徒增幻觉风险。


当然,一个人视野有限。建议设定一个“收敛阈值”——比如连续 10 条评价未发现新特征,即可暂停收集,进入 Prompt 设计阶段。

三、评测数据集

评测数据集的核心目的:发现模型失败的场景,而非证明它有多强。

构建原则

  1. 与自测集无交集 —— 避免“见过的数据”影响评估公正性

  2. 多维度、有代表性 —— 覆盖不同情绪、长度、语义复杂度、标签组合

  3. 动态扩展 —— 在测试和生产中持续补充新 Bad Case,不要追求“大而全”

重要提醒:保留“基准数据”

即使模型准确率达到 80%+,也不要移除那些“简单、稳定”的样本


为什么?


因为它们是“基准数据”——用来确保模型不犯低级错误。当前大模型最大的问题不是“不会难的”,而是不定时地“会错简单的”。


基准数据 = 安全网 = 防止模型“突然变傻”

警惕“无效评测样本”

评测数据集可能是别人准备的。强烈建议在测试前,亲自过一遍每一条数据。


不同角色(产品、技术、运营)对“好结果”的定义不同,可能导致评测维度偏差。


📌 真实踩坑案例:


评测集中有一条样本,内容是“客服处理太慢”——这根本不是产品评价,而是服务反馈。用它测试“产品标签体系”,毫无意义。

四、Langfuse Dataset

整理好评测数据集后,下一步是将其结构化导入 Langfuse,便于后续自动化评测(Evaluation)。

导入方式

  • 通过 CSV 文件上传

  • 通过 Langfuse API 编程写入(推荐,更灵活)


这个项目先在 Excel 中整理数据,包含以下字段:


  • input

  • expectedOutput

  • ID

  • MultiDimension

  • OveallSentiment

  • RobotType

  • BelongFile


关键建议:所有写入 Langfuse Dataset 的数据,务必使用 key-value 结构。这样在跑 Evaluation 时,可通过 key 精准绑定参数,实现自动化评分。


上图是我 excel 表格的数据,下图是我写入 langfuse dataset 的数据,都是以 key -value 的形式。



如何用代码写入 Langfuse?

你可以使用任何 Python 环境(如 Jupyter、Google Colab、Cursor),让 AI 帮你生成代码。


这是我的提示词模板:


我有一个 excel 表格存储的是某个数据集的数据,表头有:Input 是 stringExpectedOutput 是一个 jsonID 是 string 表示评论 id,放在 metadataMultiDimension 是 int,1 是多维,0 是单维,放在 metadataOverallSentiment 是 string,表示评论的情绪,放在 metadataRobotType 是 string, 产品型号,放在 metadataBelongFile 是 string,所属哪个标注文件,放在 metadata 需要你实现 langfuse 的 create dataset item 的代码,来遍历 excel 数据,然后创建新的 item


我会在下第三篇分享一个 data set run 的坑,把 data set run 跑起来浪费了我 1 天的时间,这里先埋个钩子 👇


✍️ 《AI 评测入门(三):Evaluation 跑起来》

总结:数据集是 AI 评测的“第一性原理”

- 知识库(标签体系):是模型的“知识源”,必须干净、结构清晰、人工审查


- 自测集:是 Prompt 的“需求说明书”,从真实数据中萃取边界条件


- 评测集:是模型的“体检报告”,目标是发现失败,而非证明成功


不了解输入,就别谈控制输出。


🔖 关键词:#AI 评测 #大模型应用 #Prompt 工程 #标签体系 #Langfuse #AI 产品经理 #AI 落地实践


用户头像

非晓为骁

关注

no pain no gain 2019-04-10 加入

用我的勤奋,一点一点地努力,提升自己的能力,拓展自己的视野,提高自己的认知。 我的知乎:https://www.zhihu.com/people/zhengfke

评论

发布
暂无评论
AI评测入门(一):先搞懂你的数据集_AI评测_非晓为骁_InfoQ写作社区