Easy Dataset 基础教程
AI 辅助构建高质量大模型微调数据集——从文献处理到数据集导出的全链路指南。
一、Easy Dataset 是什么
1. 定义与定位
一句话定义
Easy Dataset 是一个开源的大模型微调数据集创建工具——帮你把领域文档转化为高质量的 QA 训练数据,让大模型微调的"数据准备"环节从手工作坊走向工业化。
大模型微调的核心链路
═══════════════════════════════════════
原始文档 → 数据集构建 → 模型微调 → 效果评估
↑
Easy Dataset 解决的问题
(最难、最耗时、最影响效果的环节)GitHub 仓库:github.com/ConardLi/easy-dataset
项目制管理
Easy Dataset 以项目为核心单元,每个项目对应一个独立的数据集构建任务。一个项目贯穿「文献处理 → 问题生成 → 答案构建 → 标签管理 → 数据导出」全链路。
2. 为什么需要它
各行各业都在微调自己的大模型,但微调本身不难,难的是数据集准备。以下是构建数据集时的普遍痛点:
| 痛点 | 现状 | Easy Dataset 的解决方案 |
|---|---|---|
| 效率低下 | 纯人工编写 QA 对,一天写不了几条 | AI 辅助批量生成,人工只做审核 |
| AI 直接生成效果差 | 把大文档直接丢给 AI,生成的 QA 质量参差不齐 | 先智能分块,再基于每个块精准生成 |
| 上下文截断 | AI 有 Token 限制,长文档被截断丢失信息 | 章节感知分块算法,确保每块语义完整 |
| 重复问题 | 分批生成时 AI 不记得前面生成了什么,大量重复 | 领域标签 + 去重机制,系统性避免重复 |
| 缺乏管理平台 | 数据集散落在各处,标注和校验全靠手工 | 统一的管理界面,支持标注、审核、编辑 |
| 不会构建 COT | 想微调推理模型,不知道思维链数据怎么造 | 内置 COT 生成能力(支持 DeepSeek-R1 等) |
| 格式转换困难 | 不同微调框架要求不同格式(Alpaca / ShareGPT) | 一键导出多种标准格式 |
核心矛盾
数据集质量 ── 直接决定 ──▶ 微调效果
垃圾数据集 → 模型学到错误知识 → 效果更差
高质量数据集 → 模型精准学习 → 效果显著提升
Easy Dataset 的目标:
把"构建高质量数据集"这件事的门槛降到最低3. 核心能力全景图
Easy Dataset 的能力覆盖数据集构建的完整生命周期:
┌────────────────────────────────────────────────────────────┐
│ Easy Dataset 全链路 │
├────────────────────────────────────────────────────────────┤
│ │
│ ① 文献处理 ② 领域标签 ③ 问题生成 │
│ ───────── ───────── ───────── │
│ PDF/Word/MD AI 自动生成 基于文本块 │
│ → 智能分块 二级领域树 语义生成问题 │
│ → 大纲提取 支持手动修正 字符密度动态控制 │
│ │
│ ④ 答案构建 ⑤ 质量校验 ⑥ 格式导出 │
│ ───────── ───────── ───────── │
│ 关联原文生成 批量编辑/删除 Alpaca 格式 │
│ 支持 COT 思维链 AI 自动润色 ShareGPT 格式 │
│ 推理模型适配 人工审核标注 自定义字段映射 │
│ │
└────────────────────────────────────────────────────────────┘四大核心模块
| 模块 | 说明 |
|---|---|
| 模型配置中心 | 支持 OpenAI 格式 API(OpenAI、DeepSeek 等)及本地 Ollama,内置 Playground 测试 |
| 智能文献处理 | 章节感知递归分块,基于 Markdown 结构语义分割,保证每块完整性 |
| 领域标签体系 | AI 自动生成二级领域树(如 体育 → 足球),为 QA 对绑定精准标签 |
| 智能数据生成 | 问题批量生成 + 答案智能构建 + COT 思维链 + 多格式导出 |
数据引擎
| 能力 | 说明 |
|---|---|
| 问题批量生成 | 按字符密度动态生成,支持中断恢复 |
| 答案智能构建 | 关联原始文本块,支持 DeepSeek-R1 生成 COT |
| 质量校验机制 | 批量删除/编辑 + AI 润色 + 人工审核 |
格式生态
| 能力 | 说明 |
|---|---|
| 多格式导出 | Alpaca / ShareGPT 标准格式,支持自定义字段映射 |
| 数据集广场 | 聚合 HuggingFace / Kaggle 等平台,关键字检索现有数据集 |
💡 一句话总结:Easy Dataset = 文献处理引擎 + AI 数据生成器 + 数据集管理平台 + 格式转换工具,四位一体解决大模型微调数据集从 0 到 1 的全部问题。
二、安装与启动
1. 客户端启动(推荐新手)
最简单的方式——下载安装包,双击运行,无需任何环境配置。
下载地址
| 平台 | 支持 |
|---|---|
| Windows | ✅ .exe 安装包 |
| macOS | ✅ .dmg 安装包 |
| Linux | ✅ .AppImage |
下载地址:
GitHub: https://github.com/ConardLi/easy-dataset/releases
网盘: https://pan.quark.cn/s/ef8d0ef3785a(GitHub 下载慢时备用)启动步骤
① 下载对应系统的安装包
② 双击安装 / 运行
③ 打开浏览器访问界面
④ 开始使用 ✅💡 客户端方式是零门槛方案,适合不熟悉命令行的用户。
2. NPM 启动(适合开发者)
项目基于 Next.js 构建,本地只需 Node.js 环境即可运行。
环境要求
- Node.js(建议 18+)
- npm 或 yarn
启动步骤
# 1. 克隆仓库
git clone https://github.com/ConardLi/easy-dataset.git
cd easy-dataset
# 2. 安装依赖
npm install
# 3. 构建项目
npm run build
# 4. 启动服务
npm run start更新到新版本
# 拉取最新代码
git pull
# 重新安装依赖 + 构建 + 启动
npm install
npm run build
npm run start⚠️ 每次系统发布新版本后,需要重新执行以上 4 步。
3. Docker 启动(适合私有部署)
方式一:使用官方 Docker 镜像
# 1. 克隆仓库
git clone https://github.com/ConardLi/easy-dataset.git
cd easy-dataset
# 2. 修改 docker-compose.yml
# 将 {YOUR_LOCAL_DB_PATH} 替换为数据库存储路径
# 将 {LOCAL_PRISMA_PATH} 替换为 Prisma 路径
# 建议使用仓库目录下的 local-db 和 prisma 文件夹
# 3. 初始化数据库(首次需要)
npm run db:push
# 4. 使用 docker-compose 启动
docker-compose up -d
# 5. 访问
# 打开浏览器访问 http://localhost:1717三种方式对比
| 方式 | 适合人群 | 难度 | 优势 |
|---|---|---|---|
| 客户端 | 新手用户 | ⭐ | 零配置,开箱即用 |
| NPM | 开发者 | ⭐⭐ | 可调试源码,灵活定制 |
| Docker | 运维/团队 | ⭐⭐⭐ | 隔离环境,适合服务器部署 |
三、模型配置
1. 支持的模型类型
Easy Dataset 需要接入大语言模型来生成问题和答案。支持以下类型:
| 类型 | 示例 | 说明 |
|---|---|---|
| OpenAI 格式 API | OpenAI、DeepSeek、通义千问、智谱 | 最常用,兼容 OpenAI 接口格式的服务商都行 |
| 本地模型 | Ollama | 完全本地运行,无需 API Key,适合隐私敏感场景 |
| 自定义端点 | 任何兼容 OpenAI 格式的服务 | 填入 Base URL 和 API Key 即可 |
2. 配置步骤
① 进入项目 → 模型配置页面
② 选择模型提供商(或自定义)
③ 填入 API Key 和 Base URL
④ 选择具体模型(如 gpt-4、deepseek-chat)
⑤ 调整参数(温度、最大 Token 等)
⑥ 点击测试 → 验证连接 ✅💡 推荐配置:DeepSeek 性价比最高,生成中文数据集效果好且成本低。需要 COT 思维链时用 DeepSeek-R1。
3. 模型测试 Playground
配置完成后,可以在内置的 Playground 中直接测试模型效果:
- 发送测试消息,验证模型是否正常响应
- 多模型对比,选出最适合你数据集领域的模型
- 调整参数(温度越低答案越确定,越高越有创造性)
四、创建项目
1. 项目制管理
Easy Dataset 以项目为核心组织单元:
项目 A:金融领域数据集
├── 上传的文献(10 篇金融论文)
├── 生成的文本块(200 个)
├── 领域标签(金融 → 风控、投资、保险…)
├── 生成的问题(500 条)
├── 构建的答案(500 条)
└── 导出的数据集(Alpaca 格式)
项目 B:医疗领域数据集
├── 上传的文献(5 篇医学指南)
├── ...
└── 导出的数据集(ShareGPT 格式)每个项目的数据完全独立,互不干扰。
2. 创建步骤
① 点击「创建项目」
② 输入项目名称和描述
③ 选择要使用的模型
④ 配置分块参数(最小/最大块长度)
⑤ 创建完成 → 进入项目工作台五、文献处理
1. 上传文献
文献处理是数据集构建的第一步——把你的领域文档交给 Easy Dataset。
支持的格式
| 格式 | 说明 |
|---|---|
| Markdown | ✅ 最佳格式,分块效果最好(保留结构信息) |
| ✅ 自动提取文本,适合论文、报告 | |
| Word (.docx) | ✅ 自动解析 |
| TXT | ✅ 纯文本 |
上传流程
═══════════════════════════════════════
① 进入项目工作台 → 文献管理页面
② 点击「上传文献」
③ 选择文件(支持多文件批量上传)
④ 系统自动解析文献 → 转换为内部格式
⑤ 上传完成 ✅💡 最佳实践:如果你的原始文档是 PDF,建议先用其他工具(如 Marker、MinerU)转换为 Markdown 再上传,分块质量会更高。
2. 智能分块
上传文献后,Easy Dataset 会自动将文档拆分为多个文本块(Chunk)。这是整个流程中最关键的一步——分块质量直接决定后续生成的问题和答案质量。
章节感知递归分块算法
Easy Dataset 不是简单地按字数切分,而是采用章节感知递归分块算法:
传统分块:按固定字数硬切
═══════════════════════════════════════
"第一章 引言...........|..........第二章 方法论......"
↑
这里被切断了!一个块包含两章内容
─────────────────────────────────────
Easy Dataset 分块:按语义结构切分
═══════════════════════════════════════
[块 1] 第一章 引言(完整)
[块 2] 第二章 方法论(完整)
[块 3] 第三章 实验(完整)
→ 每个块都是语义完整的独立单元工作原理
原始文档
↓
识别 Markdown 标题层级(#, ##, ###)
↓
按章节边界递归拆分
↓
检查每块长度是否在 [最小长度, 最大长度] 范围内
↓
太长 → 继续拆分子章节
太短 → 与相邻块合并
↓
输出语义完整的文本块分块参数配置
| 参数 | 说明 | 建议值 |
|---|---|---|
| 最小块长度 | 低于此长度的块会被合并 | 200-500 字符 |
| 最大块长度 | 超过此长度的块会被继续拆分 | 2000-5000 字符 |
⚠️ 块太大:生成的问题可能不够具体,答案可能偏离重点 块太小:上下文不足,生成的答案缺乏深度
3. 大纲提取与摘要
分块完成后,Easy Dataset 还会自动:
大纲提取
从文献中提取层级结构,生成文档目录树:
📄 《深度学习在医疗影像中的应用》
├── 第一章 引言
│ ├── 1.1 背景
│ └── 1.2 研究现状
├── 第二章 方法
│ ├── 2.1 数据预处理
│ ├── 2.2 模型架构
│ └── 2.3 训练策略
├── 第三章 实验
└── 第四章 结论摘要生成
AI 为每个文本块生成一段简短的摘要,方便你快速浏览和定位内容,不需要逐块阅读原文。
文本块 #3:第二章 方法 - 2.1 数据预处理
─────────────────────────────────
摘要:本节介绍了医疗影像的标准预处理流程,
包括图像归一化、数据增强和标注清洗三个步骤。
→ 一目了然,快速判断这个块是否适合生成 QA 对💡 大纲和摘要不仅方便人工审核,也帮助 AI 在后续生成问题时更好地理解文档整体结构。
六、领域标签体系
1. 自动生成标签
领域标签是 Easy Dataset 控制数据集覆盖面和去重的关键机制。
什么是领域标签?
❌ 没有标签的数据集
═══════════════════════════════════════
Q1: 什么是足球越位?
Q2: 越位规则是怎样的? ← 和 Q1 重复了!
Q3: 足球比赛中何时判越位? ← 又重复了!
Q4: 什么是篮球三分球?
(财务、法律领域的问题?→ 一条都没有)
─────────────────────────────────────
✅ 有标签的数据集
═══════════════════════════════════════
[体育-足球] Q1: 什么是足球越位?
[体育-足球] Q2: 足球中的角球规则? ← 同领域不同问题 ✅
[体育-篮球] Q3: 什么是篮球三分球?
[财务-税务] Q4: 增值税怎么计算?
[法律-合同] Q5: 合同违约如何赔偿?
→ 每个领域都有覆盖,同领域内不重复AI 自动生成二级领域树
上传文献并分块后,AI 会自动分析文本内容,生成二级领域标签树:
领域标签树(自动生成)
═══════════════════════════════════════
📂 体育
├── ⚽ 足球
├── 🏀 篮球
└── 🏊 游泳
📂 医疗
├── 💊 药理学
├── 🔬 影像诊断
└── 🏥 临床治疗
📂 金融
├── 📈 投资理财
├── 🏦 银行业务
└── 🛡️ 风险控制一级标签 = 大领域,二级标签 = 细分方向。
2. 手动管理
AI 自动生成的标签不一定完全准确,你可以手动调整:
| 操作 | 说明 |
|---|---|
| 新增标签 | 添加 AI 遗漏的领域分类 |
| 修改标签 | 重命名不准确的标签名称 |
| 删除标签 | 移除不需要的标签 |
| 合并标签 | 将含义相近的标签合二为一 |
| 移动标签 | 调整标签的父子层级关系 |
示例:手动修正
AI 生成:
📂 科技
├── 人工智能
├── AI ← 和"人工智能"重复
└── 机器学习 ← 应该是"人工智能"的子类
手动修正后:
📂 科技
└── 人工智能
├── 机器学习
├── 深度学习
└── 自然语言处理3. 标签绑定
标签创建完成后,每个生成的 QA 对都会被绑定到对应的领域标签上。
绑定的作用
标签绑定带来的三大好处
═══════════════════════════════════════
① 去重控制
→ 同一个标签下已有类似问题时,AI 不再重复生成
→ 大幅降低数据集的重复率
② 覆盖度检查
→ 一目了然看到哪些领域问题多、哪些领域问题少
→ 针对薄弱领域补充数据
③ 导出筛选
→ 只导出特定领域的数据集
→ 按领域分批微调模型标签分布示例
| 领域 | 问题数 | 覆盖状态 |
|---|---|---|
| 体育-足球 | 45 | ✅ 充足 |
| 体育-篮球 | 32 | ✅ 充足 |
| 体育-游泳 | 8 | ⚠️ 偏少,建议补充 |
| 医疗-药理学 | 51 | ✅ 充足 |
| 医疗-影像诊断 | 3 | ❌ 严重不足 |
💡 最佳实践:先生成标签 → 再生成问题。这样 AI 在生成问题时就知道每个领域已经有哪些问题了,从而有效避免重复。
七、问题生成
1. 批量生成问题
文本块和领域标签准备好后,就可以让 AI 批量生成问题了。
生成原理
文本块 #5 生成的问题
───────────── ─────────────
"足球越位规则规定,在进攻方 → Q1: 足球越位规则的核心判定条件是什么?
传球的瞬间,如果接球球员比 → Q2: 越位判定中"传球瞬间"具体指什么时刻?
倒数第二名防守球员更靠近球 → Q3: 在越位规则中,为什么是倒数第二名防守
门线,则判定为越位……" 球员而不是最后一名?AI 从每个文本块的语义内容出发生成问题,而不是简单的关键词提取。
字符密度动态控制
问题数量不是固定的,而是按文本块的字符密度动态决定:
| 文本块长度 | 生成问题数 | 逻辑 |
|---|---|---|
| 200-500 字符 | 1-2 个 | 内容少,问题别太多 |
| 500-2000 字符 | 3-5 个 | 中等长度,适中 |
| 2000-5000 字符 | 5-10 个 | 内容丰富,多角度提问 |
具体数量可在项目配置中自定义。
批量创建与中断恢复
批量生成流程
═══════════════════════════════════════
文本块 #1 → 生成 3 个问题 ✅
文本块 #2 → 生成 5 个问题 ✅
文本块 #3 → 生成 4 个问题 ✅
文本块 #4 → ❌ 网络中断!
─────────────────────────────
重新启动后:
文本块 #4 → 从断点恢复,继续生成 ✅
文本块 #5 → 生成 2 个问题 ✅
...
→ 支持中断恢复,不怕意外断网或 API 超时2. 问题质量管理
生成的问题不一定都是好的,Easy Dataset 提供多种手段进行质量把控:
去重机制
AI 生成问题时会检查:
① 同一文本块下是否已有相似问题 → 跳过
② 同一领域标签下是否已有相似问题 → 跳过
③ 全局是否已有高度重复的问题 → 跳过人工管理
| 操作 | 说明 |
|---|---|
| 编辑 | 直接修改问题文本,调整措辞或补充细节 |
| 删除 | 移除质量差、重复或不相关的问题 |
| 批量删除 | 勾选多个问题一次性删除 |
AI 辅助优化
对已有问题进行智能润色——输入一条优化指令,AI 自动改写:
原始问题:什么是越位?
优化指令:"让问题更具体,包含场景描述"
优化后: 在足球比赛中,当进攻球员接到队友传球时,
裁判如何判定该球员是否处于越位位置?
→ 从模糊的泛问变成了有深度的好问题💡 质量把控三板斧:AI 自动去重 + 人工审核删除 + AI 辅助润色。三管齐下保证问题质量。
八、答案构建
1. 智能生成答案
问题生成完成后,下一步是为每个问题构建高质量的答案。
关联原始文本块
Easy Dataset 不是让 AI 凭空编答案,而是关联原始文本块来生成——确保答案有据可依:
答案生成流程
═══════════════════════════════════════
问题:足球越位规则的核心判定条件是什么?
↓
定位到原始文本块 #5(包含越位规则的完整描述)
↓
AI 基于文本块内容 + 问题语义 → 生成准确答案
↓
答案:越位规则的核心判定条件有两个:
1. 时间条件——在队友传球的瞬间;
2. 位置条件——接球球员比倒数第二名防守球员
更靠近对方球门线。
两个条件同时满足才判定为越位。💡 答案始终锚定在原始文献内容上,而不是 AI 的通用知识——这是保证数据集准确性的关键。
2. COT(思维链)生成
如果你要微调的是推理模型(如 DeepSeek-R1、o1),就需要带有思维链的答案。
什么是 COT?
普通答案 COT 答案
═══════════ ═══════════
Q: 5 + 3 × 2 = ? Q: 5 + 3 × 2 = ?
A: 11 A: <think>
让我分析这道数学题。
根据运算优先级,先乘后加:
第一步:3 × 2 = 6
第二步:5 + 6 = 11
</think>
答案是 11。
→ 直接给结果 → 展示完整的推理过程如何生成 COT 答案
Easy Dataset 支持使用推理模型(如 DeepSeek-R1)来生成带思维链的答案:
配置推理模型(如 DeepSeek-R1)
↓
选择需要生成 COT 的问题
↓
AI 自动生成带 <think>...</think> 标签的答案
↓
思维链 + 最终答案 一起存储
↓
导出时自动包含 COT 字段适用场景
| 场景 | 是否需要 COT |
|---|---|
| 微调通用对话模型 | ❌ 不需要,普通答案即可 |
| 微调推理模型 | ✅ 必须,思维链是关键 |
| 微调数学/逻辑模型 | ✅ 必须,步骤推理很重要 |
| 微调知识问答模型 | ⚠️ 可选,复杂问题建议加 |
3. 答案质量校验
生成的答案需要经过质量检查,确保可用于模型训练。
校验手段
| 手段 | 说明 |
|---|---|
| 人工审核 | 逐条查看答案,检查准确性和完整性 |
| 手动编辑 | 直接修改不满意的答案内容 |
| 批量删除 | 移除质量差的 QA 对 |
| AI 优化 | 输入润色指令,AI 自动改写答案 |
AI 优化示例
原始答案:越位就是球员站的位置不对。
优化指令:"让答案更专业、更详细,引用规则条文"
优化后: 根据 FIFA 足球竞赛规则第 11 条,越位是指在
进攻方球员传球的瞬间,接球球员满足以下条件:
(1) 处于对方半场;
(2) 比倒数第二名防守方球员更靠近对方球门线;
(3) 比球更靠近对方球门线。
裁判将通过 VAR 辅助判定争议越位。质量检查清单
答案质量自查表
═══════════════════════════════════════
☐ 答案是否基于原始文献内容(而非 AI 编造)
☐ 答案是否完整回答了问题(没有答非所问)
☐ 答案长度是否合适(不过长也不过短)
☐ 答案中是否有事实错误
☐ COT 的推理过程是否合理(如果有的话)
☐ 答案的语言风格是否与目标模型一致💡 黄金法则:你给模型看什么样的答案,模型就学会输出什么样的答案。在答案质量上花的时间,一定会在微调效果上得到回报。
九、数据集导出
1. 导出格式
数据集构建完成后,最后一步是导出为微调框架能识别的格式。Easy Dataset 支持两种主流格式:
Alpaca 格式
最常用的 SFT 微调格式,结构简单直接:
[
{
"instruction": "足球越位规则的核心判定条件是什么?",
"input": "",
"output": "越位规则的核心判定条件有两个:1. 时间条件——在队友传球的瞬间;2. 位置条件——接球球员比倒数第二名防守球员更靠近对方球门线。"
},
{
"instruction": "什么是篮球三分球?",
"input": "",
"output": "三分球是指球员在三分线外投中的进球,计3分……"
}
]| 字段 | 说明 |
|---|---|
instruction | 问题 / 指令 |
input | 补充输入(通常为空) |
output | 期望的回答 |
ShareGPT 格式
多轮对话格式,适合训练对话模型:
[
{
"conversations": [
{ "from": "human", "value": "足球越位规则的核心判定条件是什么?" },
{ "from": "gpt", "value": "越位规则的核心判定条件有两个……" }
]
},
{
"conversations": [
{ "from": "human", "value": "什么是篮球三分球?" },
{ "from": "gpt", "value": "三分球是指球员在三分线外投中的进球……" }
]
}
]两种格式怎么选?
| 格式 | 适用场景 | 兼容的微调框架 |
|---|---|---|
| Alpaca | 单轮问答、指令微调 | LLaMA-Factory、Firefly、Swift 等 |
| ShareGPT | 多轮对话、对话模型 | LLaMA-Factory、Axolotl 等 |
💡 不确定选哪个?选 Alpaca。它是最通用的格式,几乎所有微调框架都支持。
2. 导出内容
自定义字段映射
Easy Dataset 支持对导出字段进行自定义映射,适配不同框架的字段命名要求:
Easy Dataset 内部字段 导出字段(可自定义)
═══════════════════ ═══════════════════
问题 → instruction / query / prompt
答案 → output / response / answer
领域标签 → category / domain / tag
COT 思维链 → cot / reasoning / think导出时可选内容
| 选项 | 说明 |
|---|---|
| 包含领域标签 | 在导出的 JSON 中附带 category 字段 |
| 包含 COT | 在答案中保留 <think>...</think> 思维链 |
| 包含 System Prompt | 为每条数据添加系统提示词 |
| 筛选导出 | 只导出特定标签/特定状态的数据 |
导出流程
① 进入项目 → 数据集管理页面
② 选择导出格式(Alpaca / ShareGPT)
③ 配置字段映射(可选)
④ 选择是否包含标签、COT 等附加信息
⑤ 点击导出 → 下载 JSON 文件 ✅
⑥ 将文件放入微调框架的数据目录即可💡 导出的 JSON 文件可以直接用于 LLaMA-Factory 等主流微调框架,无需额外转换。
十、数据集广场
1. 多平台数据源
数据集广场是 Easy Dataset 内置的数据集检索平台,帮你解决「数据从哪来」的问题。
聚合的数据源
| 平台 | 说明 |
|---|---|
| HuggingFace Datasets | 全球最大的开源数据集平台,涵盖 NLP、CV、音频等领域 |
| Kaggle | 数据科学竞赛平台,大量真实场景数据集 |
使用方式
① 进入「数据集广场」页面
② 输入关键字(如 "中文医疗问答"、"金融 NLP")
③ 一键检索 → 展示匹配的数据集列表
④ 查看数据集详情:大小、语言、许可证、下载量
⑤ 找到合适的 → 前往平台下载 搜索示例
═══════════════════════════════════════
🔍 "chinese medical"
→ HuggingFace: Chinese-Medical-QA (2.3k ⬇️)
→ HuggingFace: CMB-Exam (15k ⬇️)
→ Kaggle: chinese-medical-dialogue
🔍 "finance sentiment"
→ HuggingFace: financial_phrasebank (8.7k ⬇️)
→ Kaggle: financial-news-sentiment2. 使用场景
| 场景 | 怎么用 |
|---|---|
| 从零开始 | 不知道数据集长什么样?搜一个参考数据集看看格式和内容 |
| 补充数据 | 自己生成的数据不够多?找现成的公开数据集合并进去 |
| 对比质量 | 想知道自己生成的数据集质量如何?下载同领域公开数据集对比 |
| 寻找灵感 | 不知道应该问什么类型的问题?看看别人的数据集是怎么设计的 |
典型工作流
═══════════════════════════════════════
① 数据集广场搜索同领域的公开数据集
② 下载参考 → 了解数据格式和问题风格
③ 上传自己的领域文献 → 用 Easy Dataset 生成数据集
④ 将自己生成的数据集与公开数据集合并
⑤ 得到更大、更多样的训练数据集 ✅💡 技巧:公开数据集通常覆盖通用知识,你的领域文献生成的数据集覆盖专业知识。两者合并往往能得到最好的微调效果——模型既不丢失通用能力,又具备领域专精。
十一、知识科普
1. 微调数据集的分类
不同的微调目标需要不同类型的数据集:
| 类型 | 全称 | 目的 | 数据格式 |
|---|---|---|---|
| SFT | Supervised Fine-Tuning | 让模型学会按指令回答问题 | 指令 + 回答 |
| RLHF | Reinforcement Learning from Human Feedback | 让模型输出更符合人类偏好 | 同一问题的多个回答 + 人类排序 |
| DPO | Direct Preference Optimization | RLHF 的简化版 | 问题 + 好回答 + 差回答 |
| COT | Chain of Thought | 让模型学会推理过程 | 问题 + 思维链 + 最终答案 |
Easy Dataset 主要生成的数据集类型
═══════════════════════════════════════
✅ SFT 数据集 → 最常用,Alpaca/ShareGPT 格式
✅ COT 数据集 → 支持推理模型生成思维链
❌ RLHF/DPO → 需要人工对比排序,暂不支持SFT 数据集示例
问:什么是机器学习中的过拟合?
答:过拟合是指模型在训练集上表现很好,但在新数据上
表现差的现象。原因是模型记住了训练数据的噪声,
而不是学到了真正的规律。常见解决方法包括增加训
练数据、使用正则化、Dropout 等。COT 数据集示例
问:一个水池有两个进水管和一个出水管,进水管A每小时
注入3吨水,进水管B每小时注入2吨水,出水管每小时
排出1吨水。水池初始有10吨水,问5小时后水池有多少水?
答:<think>
让我来分析这个问题。
进水速率:A管 3吨/时 + B管 2吨/时 = 5吨/时
出水速率:1吨/时
净进水速率:5 - 1 = 4吨/时
5小时净进水量:4 × 5 = 20吨
初始水量:10吨
最终水量:10 + 20 = 30吨
</think>
5小时后水池有30吨水。2. 常用数据格式
Alpaca 格式
最广泛使用的 SFT 格式,源自斯坦福 Alpaca 项目:
{
"instruction": "用户的问题或指令",
"input": "可选的补充输入(大多数情况为空)",
"output": "期望的模型回答"
}| 字段 | 必填 | 说明 |
|---|---|---|
instruction | ✅ | 核心指令/问题 |
input | ⚠️ 可选 | 当指令需要处理具体内容时使用,如"翻译以下文本" |
output | ✅ | 标准答案 |
ShareGPT 格式
模拟 ChatGPT 对话风格,支持多轮:
{
"conversations": [
{ "from": "system", "value": "你是一个医疗助手" },
{ "from": "human", "value": "头疼怎么办?" },
{ "from": "gpt", "value": "头疼的原因很多……" },
{ "from": "human", "value": "需要去医院吗?" },
{ "from": "gpt", "value": "如果持续超过3天……" }
]
}格式对比
| 对比 | Alpaca | ShareGPT |
|---|---|---|
| 对话轮数 | 单轮 | 多轮 |
| System Prompt | 不支持 | 支持 |
| 结构复杂度 | 简单 | 较复杂 |
| 适用场景 | 知识问答、指令遵循 | 多轮对话、角色扮演 |
| 框架兼容性 | 几乎所有框架 | 大部分框架 |
3. 数据集质量标准
数据集的质量比数量更重要。以下是衡量数据集质量的核心维度:
| 维度 | 说明 | 检查方法 |
|---|---|---|
| 准确性 | 答案内容是否正确、无事实错误 | 人工抽样审核 |
| 多样性 | 问题类型是否丰富、不单一 | 检查领域标签覆盖度 |
| 一致性 | 回答风格是否统一 | 检查语气、长度、格式 |
| 完整性 | 答案是否完整回答了问题 | 对照问题逐条检查 |
| 无害性 | 是否包含不当内容 | 关键词过滤 + 人工审核 |
数据集质量公式
═══════════════════════════════════════
微调效果 = 数据质量 × 数据多样性 × 数据量
↑ 最重要 ↑ 其次 ↑ 锦上添花
100 条高质量数据 > 10000 条低质量数据💡 核心原则:宁可少而精,不可多而烂。先保证每条数据的质量,再追求数量。
十二、实战流程
1. 完整工作流
以「构建一套金融领域 SFT 数据集」为例,展示从零到导出的完整流程:
┌─────────────────────────────────────────────────────┐
│ Easy Dataset 完整工作流 │
├─────────────────────────────────────────────────────┤
│ │
│ Step 1 创建项目 │
│ ────── 项目名:"金融知识数据集" │
│ 选择模型:DeepSeek-V3 │
│ │
│ Step 2 配置模型 │
│ ────── 填入 API Key + Base URL │
│ Playground 测试通过 ✅ │
│ │
│ Step 3 上传文献 │
│ ────── 上传 10 份金融领域 PDF/Markdown │
│ 系统自动解析 │
│ │
│ Step 4 智能分块 │
│ ────── 最小块 300 字符 / 最大块 3000 字符 │
│ 生成 180 个文本块 │
│ 查看大纲 + 摘要 │
│ │
│ Step 5 生成领域标签 │
│ ────── AI 自动生成标签树 │
│ 手动修正:合并重复标签 │
│ │
│ Step 6 批量生成问题 │
│ ────── 基于 180 个文本块生成 ~600 个问题 │
│ 删除低质量问题 → 剩余 520 个 │
│ │
│ Step 7 构建答案 │
│ ────── 为 520 个问题生成答案 │
│ AI 润色优化 → 人工抽样审核 │
│ │
│ Step 8 导出数据集 │
│ ────── 选择 Alpaca 格式 │
│ 包含领域标签 │
│ 导出 JSON 文件 ✅ │
│ │
│ Step 9 用于微调 │
│ ────── 将 JSON 放入 LLaMA-Factory 数据目录 │
│ 开始训练 🚀 │
└─────────────────────────────────────────────────────┘2. 最佳实践
文献预处理建议
| 建议 | 说明 |
|---|---|
| PDF 先转 Markdown | 用 Marker / MinerU 转换,保留标题层级,分块质量高 |
| 删除无关内容 | 去掉目录页、参考文献、页眉页脚等噪声 |
| 统一格式 | 确保标题用 # 标记,正文结构清晰 |
| 拆分超大文件 | 单文件建议不超过 5 万字,太长可拆分为多篇 |
分块参数调优
文献类型 推荐参数
═══════════════ ═══════════════
学术论文 最小 500 / 最大 3000
技术文档 最小 300 / 最大 2000
法律法规 最小 200 / 最大 1500(条文较短)
新闻/博客 最小 500 / 最大 5000问题与答案质量平衡
❌ 常见错误
─────────────
· 只追求数量,不审核质量
· 生成完就直接导出,不做任何校验
· 把所有问题都保留,包括重复和低质的
✅ 正确做法
─────────────
· 生成后先人工抽样审核 10%~20%
· 删除明显重复、过于简单、答非所问的数据
· 对关键领域的答案做 AI 润色
· 检查领域标签覆盖度,补充薄弱领域数据集质量检查清单
发布前自查表
═══════════════════════════════════════
☐ 数据条数是否达到目标(SFT 建议 500+)
☐ 领域标签覆盖是否均匀(无严重偏科)
☐ 随机抽 20 条检查:问题是否有重复
☐ 随机抽 20 条检查:答案是否准确
☐ 随机抽 20 条检查:答案风格是否统一
☐ 导出格式是否正确(可用 JSON 校验工具检查)
☐ 如有 COT,推理过程是否合理十三、常见问题
1. 安装部署问题
| 问题 | 解决方案 |
|---|---|
| 客户端无法启动 | 检查系统版本是否符合要求;macOS 可能需要在"系统偏好设置 → 安全性"中允许打开 |
| NPM 安装依赖失败 | 检查 Node.js 版本(建议 18+);尝试 npm install --legacy-peer-deps |
| Docker 容器启动失败 | 检查 docker-compose.yml 中的路径是否正确;确保已执行 npm run db:push 初始化数据库 |
| 端口 1717 被占用 | 修改 docker-compose.yml 中的端口映射,或停止占用端口的进程 |
| 页面打开空白 | 确认 npm run build 已成功执行;检查浏览器控制台是否有报错 |
2. 模型配置问题
| 问题 | 解决方案 |
|---|---|
| API Key 验证失败 | 检查 Key 是否正确复制(注意首尾空格);确认 Key 未过期且有余额 |
| 模型响应超时 | 降低并发数;检查网络是否稳定;切换 API 端点 |
| Ollama 连接失败 | 确认 Ollama 已启动;检查端口(默认 11434);确认模型已下载 |
| 返回内容乱码 | 检查模型是否支持中文;尝试在 System Prompt 中加"请用中文回答" |
3. 数据生成问题
| 问题 | 解决方案 |
|---|---|
| 问题重复率高 | 先生成领域标签再生成问题;减小单次生成的问题数量 |
| 答案质量不理想 | 更换更强的模型(如 GPT-4 / DeepSeek-V3);优化分块参数让文本块更精准 |
| 分块效果差 | 将 PDF 先转为 Markdown 再上传;调整最小/最大块长度参数 |
| 生成中断后无法恢复 | 重新点击生成,系统会自动跳过已完成的文本块 |
| COT 思维链格式异常 | 确认使用的是推理模型(如 DeepSeek-R1);检查模型是否正确输出 <think> 标签 |
🎉 恭喜你读完了 Easy Dataset 基础教程!
现在你已经掌握了从文献上传到数据集导出的全流程。
下一步:下载 Easy Dataset,上传你的第一份领域文献,构建属于你的高质量微调数据集吧!