模型微调的效果,既依赖于基座模型的能力,也和用于后训练的数据集有很大关系。

在大模型没有出现的时代,从零制作一份高质量的数据集的SOP是这样的:人工收集语料->搭建标注平台->人工标注->人工审核->最终导出,低效、昂贵且痛苦。

而现在受益于大模型能力的飞升, 依托于 LLM 的数据集构建工作流,理论上可以帮助我们节省数据工程 90% 的工作量。

  1. 整体流程

Pipeline:

原始文档 → 格式解析 → 文本清洗 → 文本分割 → 问题生成 → 答案生成 → 质量过滤 → 格式导出
  1. 原始文档采集:确定领域范围,收集 PDF/Markdown/DOCX/TXT 等格式的文档。医疗领域如临床指南、医学文献、病历模板等。
  2. 格式解析:将不同格式统一转为纯文本/Markdown。PDF 是最复杂的,可选方案包括 PyMuPDF 提取、MinerU 解析、或使用视觉 LLM(GLM-OCR) 将 PDF 转为 Markdown。
  3. 文本清洗:去除页眉页脚、乱码、参考文献格式噪声、重复段落等。
  4. 文本分割(Chunking):将长文档切分为适当大小的文本块,每个块作为后续问答对的"上下文"。
  5. 问题生成:使用 LLM 对每个文本块生成多样化的问题,覆盖不同角度和难度层级。
  6. 答案生成:基于文本块内容,让 LLM 生成准确的答案,并提取思维链(COT)。
  7. 质量过滤:去重、规则检查、LLM 质量评分,过滤低质量 QA 对。
  8. 格式导出:根据微调框架要求导出为 AlpacaShareGPT 格式。

Easy Dataset 提供了以上流程的完整功能,需要注意的点:每个环节的质量都会传递给下一环节,前期文本分割效果不好,后续生成的问答对质量也会受到影响。

  1. 文本分割方式及其使用场景

文本分割是整个 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 相似度找分割点 对语义完整性要求高的场景
  1. 数据质量和多样化

如何让生成的微调数据集更多样化,Prompt的设计很关键,一般从以下几个角度入手:

  • 约束条件
  • 基于原文:“所有问题必须严格依据原文内容,不得添加外部信息”,防止幻觉和事实错误的核心约束
  • 去元信息:“禁止输出与材料元信息相关的问题(如作者、章节)”,避免生成无价值的 QA
  • 自然表述:“问题不得包含’报告/文章/文献中提到’等总结性陈述”,确保问题自然流畅和防止内容理解型错误
  • 数量控制:按照 chunk 长度动态计算问题数量(如每 500 字生成 1 个问题),挖掘尽可能多的有价值问题
  • MGA(Genre-Audience,体裁-受众)方法: 即使在同一垂直领域内,不同的角色、不同的任务也会导致同一主题的相关问题拥有不同的数据分布,通过同一垂直领域内的多个角色、多种任务可以从多个视角获取到该领域的多样化训练数据。

    核心思路:同一个文本块,针对不同的"体裁"和"受众"组合,可以生成完全不同风格和角度的问题。

    举例——假设有一段关于"二甲双胍治疗 2 型糖尿病"的医学文本:

    体裁 受众 生成的问题风格
    临床指南 医生 “二甲双胍的起始剂量和最大剂量分别是多少?”
    科普文章 患者 “吃二甲双胍为什么刚开始会觉得肠胃不舒服?”
    药品说明书 药师 “二甲双胍与碘造影剂同时使用的禁忌机制是什么?”
    学术论文 研究者 “二甲双胍激活 AMPK 通路的具体分子机制是什么?”

    工作流程:

    重点关注

    (1) 识别问题的核心概念、事实与逻辑结构(问题的核心概念及其衍生问题,比如有哪些糖皮质激素药物,有什么主治功能,有哪些副作用)(2) 设计具有明确答案指向性的问题(多角度,比如临床医疗领域内医生角度、患者角度)(3) 控制问题难度与类型,保证多样性与代表性(是/否类(单选题)、满足哪些条件类(多选题)、哪些药物、症状、疾病史(填空题))
    
  1. 对每个文本块,LLM 分析内容并生成 1-5 个 GA 配对(Genre-Audience pairs)

  2. 问题生成时,将激活的 GA pair 注入 Prompt:

    体裁:临床指南受众:医生确保:问题风格、深度与指定体裁匹配;从该受众的视角和需求出发提问
    
  • 多样性控制
  • 在约束中明确要求"覆盖文本的不同主题、层级或视角,避免集中于单一片段"
  • 使用 MGA 方法从不同视角生成多个问题
  • 可以先要求 LLM 先生成问题类型分布(比如题型类别:单选题、多选题、填空题,或者是任务类型:事实型、推理型、比较型、应用型),再逐类生成具体的问题
  • 类型扩展

    比如关注的是 高血压 这个问题,就需要围绕这个主题进行多类型的扩展,比如:

  • 什么是高血压?
  • 高血压的症状?
  • 高血压的常用治疗药物?
  • 患者是否患有高血压
  • 输出格式控制

    要按照 问题答案 的格式约束生成,以便于 后处理环节 能将所有生成的数据正确地处理为AlpacaShareGPT格式的数据集。

  1. 数据清洗和过滤

数据清洗是确保数据集质量的关键环节,具体地可以分为分为基于规则的方法、基于统计的方法和基于模型的方法。

  • 基于规则的方法
问题类型 处理方法
格式噪声 去除多余空格、换行符、特殊字符、乱码
重复内容 精确匹配去重(完全相同)和模糊去重(编辑距离 / Jaccard 相似度)
长度过滤 过滤过短(<10字)或过长(>2000字)的问答
特殊字符 统一全角/半角、修正编码问题
敏感信息 正则匹配去除身份证号、手机号等 PII
  • 基于统计的方法:
  • **MinHash + LSH**:大规模近似去重,适合百万级数据
  • **Embedding 向量相似度**:计算 QA 对的语义相似度,过滤高度相似的冗余数据(SemHash
  • **N-gram 重复度**:检测答案中是否包含过多重复 n-gram
  • 基于模型的方法
  • 检查答案与问题的相关性
  • 评分并过滤低质量 QA 对
  1. 数据去重

数据去重是防止模型过拟合到重复样本、浪费训练算力的重要步骤。

  • 字面重复去重:
  • 精确匹配:完全相同的 instruction+input+output 直接删除
  • 编辑距离(Levenshtein Distance:两个文本的最少编辑次数,阈值通常设为文本长度的 5-10%
  • Jaccard 相似度:n-gram 集合的交集/并集,适合检测部分重叠
  • **语义重复去重:**字面不同但语义相同的 QA 对,如:

    两条问答字面不同,但问的是同一个问题。这类重复会让模型在训练时获得双倍梯度信号,相当于对这条知识过拟合。

  • “二甲双胍的起始剂量是多少?”
  • “刚开始吃二甲双胍应该吃多少毫克?”
  • 去重方案:

    文本 → embedding 模型编码 → 向量相似度计算 → 相似度 > 阈值 → 保留质量更高的一条
    

    常用 embedding 模型:bge-large-zhQwen3-Embedding-8B 等。

  • tips

  • 先做字面去重(快),再做语义去重(准)
  • 相似度阈值一般设 0.75-0.95,过高漏杀、过低误杀
  • 数据量不大的时候,建议每一条都是用 基于模型的方法 判断是否去重
  • 临床医疗领域需注意:看似相似但细节不同的 QA 不能去重(如"成人和儿童的二甲双胍剂量"受体不同,导致意义不同)
  1. 数据集配比

数据配比直接影响微调后模型的能力分布。

  • 领域配比(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),按目标场景在区间内调整即可,不必都顶到上限。

  1. AlpacaShareGPT 格式

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 两者都支持
  1. 数据蒸馏

数据蒸馏(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%免费

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐