从零构建大模型微调数据集

从零构建大模型微调数据集 模型微调的效果既依赖于基座模型的能力也和用于后训练的数据集有很大关系。在大模型没有出现的时代从零制作一份高质量的数据集的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 个问题挖掘尽可能多的有价值问题MGAGenre-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 对数据去重数据去重是防止模型过拟合到重复样本、浪费训练算力的重要步骤。字面重复去重精确匹配完全相同的 instructioninputoutput 直接删除编辑距离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%免费】