从零构建大模型微调数据集
模型微调的效果,既依赖于基座模型的能力,也和用于后训练的数据集有很大关系。
在大模型没有出现的时代,从零制作一份高质量的数据集的SOP是这样的:人工收集语料->搭建标注平台->人工标注->人工审核->最终导出,低效、昂贵且痛苦。
而现在受益于大模型能力的飞升, 依托于 LLM 的数据集构建工作流,理论上可以帮助我们节省数据工程 90% 的工作量。
- 整体流程

Pipeline:
原始文档 → 格式解析 → 文本清洗 → 文本分割 → 问题生成 → 答案生成 → 质量过滤 → 格式导出
- 原始文档采集:确定领域范围,收集 PDF/Markdown/DOCX/TXT 等格式的文档。医疗领域如临床指南、医学文献、病历模板等。
- 格式解析:将不同格式统一转为纯文本/Markdown。PDF 是最复杂的,可选方案包括
PyMuPDF提取、MinerU解析、或使用视觉 LLM(GLM-OCR) 将 PDF 转为 Markdown。 - 文本清洗:去除页眉页脚、乱码、参考文献格式噪声、重复段落等。
- 文本分割(Chunking):将长文档切分为适当大小的文本块,每个块作为后续问答对的"上下文"。
- 问题生成:使用 LLM 对每个文本块生成多样化的问题,覆盖不同角度和难度层级。
- 答案生成:基于文本块内容,让 LLM 生成准确的答案,并提取思维链(COT)。
- 质量过滤:去重、规则检查、LLM 质量评分,过滤低质量 QA 对。
- 格式导出:根据微调框架要求导出为
Alpaca或ShareGPT格式。
Easy Dataset 提供了以上流程的完整功能,需要注意的点:每个环节的质量都会传递给下一环节,前期文本分割效果不好,后续生成的问答对质量也会受到影响。
- 文本分割方式及其使用场景
文本分割是整个 pipeline 的基础,直接决定后续微调数据集(问答对)的质量。
chunk_size 选择依据:
| 因素 | 影响 |
|---|---|
| 语义完整性 | 太小会切断完整语义(如将一个诊断的病因和症状切开),太大则信息密度过高 |
| LLM 上下文窗口 | 问题生成时 chunk + prompt 必须在模型窗口内 |
| 答案定位精度 | 较小的 chunk 使答案更聚焦,减少幻觉 |
实践经验:中文文本一般设置 500-1000 字,英文 300-800 tokens。医疗领域建议偏小(500-800 字),因为医学知识密度高,单个知识点即可构成完整 QA。
overlap 选择:通常设为 chunk_size 的 10-20%。作用是保留边界上下文,避免关键信息恰好被切断。过大浪费 token,过小可能丢失边界信息。
分割方式对比:
| 方式 | 原理 | 适用场景 |
|---|---|---|
| 字符分割 (Character) | 按指定分隔符(如 \n\n)切分 |
结构清晰的文档 |
| Token 分割 | 按 token 数切分 | 精确控制上下文长度 |
| 递归分割 (Recursive) | 按分隔符优先级逐级切分 | 通用场景,平衡语义和长度 |
| Markdown 感知分割 | 按标题层级切分,保留文档结构 | Markdown 格式的文档,如技术文档 |
| 语义分割 | 基于 embedding 相似度找分割点 | 对语义完整性要求高的场景 |
- 数据质量和多样化
如何让生成的微调数据集更多样化,Prompt的设计很关键,一般从以下几个角度入手:
- 约束条件
- 基于原文:“所有问题必须严格依据原文内容,不得添加外部信息”,防止幻觉和事实错误的核心约束
- 去元信息:“禁止输出与材料元信息相关的问题(如作者、章节)”,避免生成无价值的 QA
- 自然表述:“问题不得包含’报告/文章/文献中提到’等总结性陈述”,确保问题自然流畅和防止内容理解型错误
- 数量控制:按照 chunk 长度动态计算问题数量(如每 500 字生成 1 个问题),挖掘尽可能多的有价值问题
-
MGA(Genre-Audience,体裁-受众)方法: 即使在同一垂直领域内,不同的角色、不同的任务也会导致同一主题的相关问题拥有不同的数据分布,通过同一垂直领域内的多个角色、多种任务可以从多个视角获取到该领域的多样化训练数据。
核心思路:同一个文本块,针对不同的"体裁"和"受众"组合,可以生成完全不同风格和角度的问题。
举例——假设有一段关于"二甲双胍治疗 2 型糖尿病"的医学文本:
体裁 受众 生成的问题风格 临床指南 医生 “二甲双胍的起始剂量和最大剂量分别是多少?” 科普文章 患者 “吃二甲双胍为什么刚开始会觉得肠胃不舒服?” 药品说明书 药师 “二甲双胍与碘造影剂同时使用的禁忌机制是什么?” 学术论文 研究者 “二甲双胍激活 AMPK 通路的具体分子机制是什么?” 工作流程:
重点关注:
(1) 识别问题的核心概念、事实与逻辑结构(问题的核心概念及其衍生问题,比如有哪些糖皮质激素药物,有什么主治功能,有哪些副作用)(2) 设计具有明确答案指向性的问题(多角度,比如临床医疗领域内医生角度、患者角度)(3) 控制问题难度与类型,保证多样性与代表性(是/否类(单选题)、满足哪些条件类(多选题)、哪些药物、症状、疾病史(填空题))
-
对每个文本块,LLM 分析内容并生成 1-5 个 GA 配对(Genre-Audience pairs)
-
问题生成时,将激活的 GA pair 注入 Prompt:
体裁:临床指南受众:医生确保:问题风格、深度与指定体裁匹配;从该受众的视角和需求出发提问
- 多样性控制
- 在约束中明确要求"覆盖文本的不同主题、层级或视角,避免集中于单一片段"
- 使用 MGA 方法从不同视角生成多个问题
- 可以先要求 LLM 先生成问题类型分布(比如题型类别:单选题、多选题、填空题,或者是任务类型:事实型、推理型、比较型、应用型),再逐类生成具体的问题
-
类型扩展
比如关注的是
高血压这个问题,就需要围绕这个主题进行多类型的扩展,比如:
- 什么是高血压?
- 高血压的症状?
- 高血压的常用治疗药物?
- 患者是否患有高血压
-
输出格式控制
要按照
问题和答案的格式约束生成,以便于后处理环节能将所有生成的数据正确地处理为Alpaca和ShareGPT格式的数据集。
- 数据清洗和过滤
数据清洗是确保数据集质量的关键环节,具体地可以分为分为基于规则的方法、基于统计的方法和基于模型的方法。
- 基于规则的方法
| 问题类型 | 处理方法 |
|---|---|
| 格式噪声 | 去除多余空格、换行符、特殊字符、乱码 |
| 重复内容 | 精确匹配去重(完全相同)和模糊去重(编辑距离 / Jaccard 相似度) |
| 长度过滤 | 过滤过短(<10字)或过长(>2000字)的问答 |
| 特殊字符 | 统一全角/半角、修正编码问题 |
| 敏感信息 | 正则匹配去除身份证号、手机号等 PII |
- 基于统计的方法:
- **
MinHash + LSH**:大规模近似去重,适合百万级数据 - **
Embedding 向量相似度**:计算 QA 对的语义相似度,过滤高度相似的冗余数据(SemHash) - **
N-gram 重复度**:检测答案中是否包含过多重复 n-gram
- 基于模型的方法
- 检查答案与问题的相关性
- 评分并过滤低质量 QA 对
- 数据去重
数据去重是防止模型过拟合到重复样本、浪费训练算力的重要步骤。
- 字面重复去重:
- 精确匹配:完全相同的 instruction+input+output 直接删除
- 编辑距离(
Levenshtein Distance):两个文本的最少编辑次数,阈值通常设为文本长度的 5-10% - Jaccard 相似度:n-gram 集合的交集/并集,适合检测部分重叠
-
**语义重复去重:**字面不同但语义相同的 QA 对,如:
两条问答字面不同,但问的是同一个问题。这类重复会让模型在训练时获得双倍梯度信号,相当于对这条知识过拟合。
- “二甲双胍的起始剂量是多少?”
- “刚开始吃二甲双胍应该吃多少毫克?”
-
去重方案:
文本 → embedding 模型编码 → 向量相似度计算 → 相似度 > 阈值 → 保留质量更高的一条常用 embedding 模型:
bge-large-zh、Qwen3-Embedding-8B等。 -
tips:
- 先做字面去重(快),再做语义去重(准)
- 相似度阈值一般设 0.75-0.95,过高漏杀、过低误杀
- 数据量不大的时候,建议每一条都是用
基于模型的方法判断是否去重 - 临床医疗领域需注意:看似相似但细节不同的 QA 不能去重(如"成人和儿童的二甲双胍剂量"受体不同,导致意义不同)
- 数据集配比
数据配比直接影响微调后模型的能力分布。
-
领域配比(Domain Balancing):
如果目标是在保持通用能力的同时增强医疗能力:
如果目标是纯医疗垂域模型:
-
按科室/疾病类型均匀采样,避免常见病样本过多而罕见病几乎没有
-
通用数据:70-80%(防止灾难性遗忘)
-
医疗领域数据:20-30%
- 难度配比(Difficulty Balancing):
| 难度 | 占比 | 示例 |
|---|---|---|
| 基础知识回忆 | 40% | “什么是高血压的诊断标准?” |
| 理解与推理 | 35% | “为什么心衰患者会出现下肢水肿?” |
| 综合分析 | 20% | “患者同时有糖尿病和高血压,用药需注意什么?” |
| 复杂决策 | 5% | 多轮诊断推理 |
遵循"金字塔配比"——基础知识是底座,越高难度占比越少,确保模型先学会"记住"再学会"推理"。
3. 指令类型配比:
| 指令类型 | 占比 | 说明 |
|---|---|---|
| 问答类 | 50-60% | 主力,覆盖事实/推理/比较 |
| 摘要类 | 10-15% | 长文摘要、要点提取 |
| 分类/判断类 | 10-15% | 单选/多选/是非判断 |
| 多轮对话 | 10-15% | 上下文连续的对话流 |
| 开放生成类 | 5-10% | 创意、续写、头脑风暴 |
各类型取中间值时加总为 100%(如 55/12/13/13/7),按目标场景在区间内调整即可,不必都顶到上限。
Alpaca和ShareGPT格式
Alpaca 格式:
{ "instruction": "请解释二甲双胍的作用机制", "input": "", "output": "二甲双胍主要通过以下机制发挥作用:1. 抑制肝脏糖异生...", "system": "", "history": []}
- 单一三轮结构,适合单轮指令微调
- input 字段可存放额外上下文(可为空)
- system 字段存放系统提示词
- 兼容性最广,几乎所有微调框架都支持
ShareGPT 格式:
{ "conversations": [ {"from": "human", "value": "请解释二甲双胍的作用机制"}, {"from": "gpt", "value": "二甲双胍主要通过以下机制..."}, {"from": "human", "value": "那它有哪些副作用?"}, {"from": "gpt", "value": "常见副作用包括..."} ], "system": ""}
- 多轮对话原生支持,通过 messages 数组承载
- 更接近 ChatML 格式,适配 Chat 模型
- 适合多轮对话场景,可包含任意轮次的对话历史
选择建议:
| 场景 | 推荐格式 |
|---|---|
| 单轮 QA 为主 | Alpaca |
| 多轮对话、上下文连续 | ShareGPT |
| 需要 system prompt | 两者都支持 |
- 数据蒸馏
数据蒸馏(Data Distillation)是在没有现成文档的情况下,从零构建领域数据的方法。
核心流程:
输入主题 → LLM 生成标签树 → 逐标签生成问题 → 逐问题生成答案 → 质量过滤 → 数据集
Step 1:生成知识标签树
输入主题"2型糖尿病诊疗",LLM 生成层级标签:
2型糖尿病诊疗├── 病因与发病机制│ ├── 胰岛素抵抗│ └── β细胞功能减退├── 诊断标准│ ├── 空腹血糖│ ├── OGTT试验│ └── HbA1c├── 药物治疗│ ├── 二甲双胍│ ├── 磺脲类│ └── SGLT-2抑制剂└── 并发症管理 ├── 糖尿病肾病 └── 糖尿病视网膜病变
Step 2:基于标签生成问题
对每个叶子标签,LLM 按照指定数量和类型生成问题:
- "二甲双胍"标签 → “二甲双胍的推荐起始剂量是多少?”“二甲双胍禁用于哪些患者?”
Step 3:基于问题生成答案
与正常流程相同,但此时没有参考文本——LLM 依靠自身知识回答。这意味着:
- 优点:可以快速生成大量数据
- 风险:LLM 的知识可能不准确、过时,需要更严格的质量校验
适用场景:
- 快速搭建领域数据集的初始版本
- 作为种子数据,后续用真实文档补充
- 知识覆盖面广但深度要求不高的场景
tips:蒸馏数据适合作为"骨架",真实文档生成的 QA 作为"血肉"
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐




所有评论(0)