从700GB PDF到500条微调数据集:数据精简流水线
你有数TB的企业文档。你的微调模型只需要500-5,000条高质量样本。以下是将海量文档库系统性精简为精准训练数据集的完整流水线。
一家建筑公司带着700GB的PDF来找我们——工程量清单、技术规格书、建筑图纸、现场报告,以及15年积累的项目信函。他们想微调一个模型来完成两项任务:文档分类(从首页识别文档类型)和实体抽取(从规格书中提取关键项目信息)。
他们问:"我们怎样用所有这些数据来训练?"
答案是:不用全部。你需要做精简。
微调语言模型在大多数企业任务中只需要500-5,000条精心筛选的样本。使用"所有数据"会引入噪声、矛盾、冗余和格式不一致,这些会严重损害模型性能。目标不是最大化数据量——而是从700GB原始文档中蒸馏出2,000-3,000条能精确教会模型所需知识的样本。
本文将详细介绍五阶段精简流水线,它能将海量文档库转化为精准训练数据集。
规模差异
数字能说明问题的严峻性:
- 700GB PDF ≈ 140,000份文档,平均5MB
- 140,000份文档 ≈ 1400万页,平均100页
- 1400万页 ≈ 70亿token,每页500 token
- 微调所需 ≈ 2,000条样本,平均约500 token = 100万token
你只需要可用数据的0.014%。其余99.986%要么冗余、无关、过时,要么噪声太大,无法改善训练效果。
精简流水线必须找到正确的0.014%——具有代表性、准确、多样 且格式正确的样本。这不是随机采样,而是系统化筛选。
阶段一:分拣
输入: 700GB原始文档 输出: 约200GB潜在相关文档 精简比例: 约70%
分拣将文档库分为"保留「、」丢弃「和」待审"三类。目标是在进行任何高成本处理之前,先排除明显无关的材料。
自动分拣
去重。 企业档案包含大量重复——同一份规格书分发给15个分包商,同一张图纸以微小文件名差异保存了4个版本。内容哈希(文件的MD5或SHA-256)可以捕获完全重复。对于建筑公司,我们通常在未管理的档案中发现15-30%的完全重复。
文件类型过滤。 并非所有PDF都包含有用的训练内容。需要过滤掉:空白页、只有Logo的封面页、目录页、占位文档和无法解析的损坏文件。自动检查:页数(拒绝0页PDF)、文件大小(拒绝10KB以下的文件,很可能是空白 的)、文本可提取性(拒绝无法提取文本的文件)。
日期过滤。 超过设定截止日期的文档可能不反映当前标准、术语或业务惯例。如果你的模型将处理当前文档,在15年前的规格书上训练可能引入过时的模式。对大多数企业来说合理的截止线:保留最近5-7年的文档,除非明确需要更早的文档。
文档类型分类。 使用零样本分类器或简单的关键词匹配来按类型分类文档:规格书、图纸、函件、报告、合同、发票。只保留与训练任务相关的文档类型。对于文档分类模型,你需要所有文档类型的样本;对于专注于规格书的实体抽取模型,你只需要规格书。
人工分拣审查
自动分拣处理了大部分精简工作,但10-15%的文档会落入"待审「类别——自动分类不确定的文档。领域专家审查这些文档,每份花费15-30秒决定」保留「或」丢弃"。
按这个速度,审查5,000份不确定的文档大约需要30小时。这是整个流水线中最具成本效益的领域专家时间——每一分钟都能从下游处理中排除多份文档。
阶段二:抽取
输入: 约200GB相关文档 输出: 约5GB相关内容段落 精简比例: 约97%
抽取从文档中提取包含训练相关内容的特定段落。不是完整文档——而是特定的段落、表格、条款或页面。
段落级抽取
大多数企业文档80%是模板化内容,20%是独特内容。一份200页的建筑规格书包含:
- 40页标准条款(每个项目都一样)
- 30页通用要求(大部分标准化)
- 80页技术规格(独特、高价值的训练数据)
- 30页附录(图纸、进度表——可能相关也可能不相关)
- 20页封面、目录和空白页
对于训练来说,80页技术规格是黄金。40页标准条款是噪声——每个项目都有相同的模板内容,包含它只会教模型输出模板化内容。
段落抽取方法:
- 基于标题的抽取: 解析文档结构,按标题提取段落。"第03300节 - 现浇混凝土「是相关的;」第00100节 - 投标说明"不是。
- 基于关键词的抽取: 提取包含领域特定关键词的页面,这些关键词表明内容相关。过滤掉只有行政或程序性内容的页面。
- 基于布局的抽取: 使用布局检测器识别高内容密度(文本+表格)与低内容密度(主要是空白、页眉或图片)的页面。
内容质量过滤
段落抽取后,对抽取的内容进行质量过滤:
- 移除可读文本不到50%的段落(可能是图片密集的页面,需要不同的处理方式)
- 移除与之前抽取的段落相同或近似相同的段落(跨文档去重)
- 移除你的模型不会处理的语言的段落
- 移除大量编辑或审查的段落(内容不足以学习)
阶段三:转换
输入: 约5GB相关内容段落 输出: 约50MB候选训练对 精简比例: 约99%
这是将抽取内容转变为训练数据的阶段。每个相关段落被转换为与模型在生产中使用的格式匹配的输入/输出对。
用于文档分类
将每份文档的首页(或代表性段落)转换为分类样本:
{
"input": "对以下文档摘录进行分类:\n\n[文档前500个token]",
"output": "document_type: technical_specification\nconfidence_reason: 包含CSI格式的章节标题(第03300节)、材料规格和ASTM标准合规引用。"
}从140,000份文档经过去重和分拣后,你可能有30,000个独特的首页,分布在12种文档类型中。将它们全部转换为候选分类对。
用于实体抽取
将相关段落转换为抽取样本:
{
"input": "从以下规格书段落中提取项目详情:\n\n[规格书文本]",
"output": {
"project_name": "Westfield商业中心二期",
"specification_section": "03300 - 现浇混凝土",
"concrete_grade": "C30/37",
"slump_requirement": "100mm ± 25mm",
"curing_period": "最少7天",
"referenced_standards": ["ASTM C150", "ASTM C33", "ACI 318"]
}
}这个转换需要领域专业知识。ML工程师可以构建输入格式,但建筑工程师必须识别和验证正确的实体值。这是最耗费人力的阶段。
创建训练对
领域专家在此阶段的参与通常遵循以下工作流程:
- ML工程师抽取候选段落并将其结构化为输入
- ML工程师使用LLM生成输出草稿(实体抽取建议)
- 领域专家审查每个草稿,纠正错误并补充遗漏
- ML工程师根据输出模式验证最终的对
时间估算:审查和纠正一个草稿抽取每条需要2-5分钟。对于3,000个候选对,预算100-250小时的领域专家时间。分配给3位专家,持续4周,每位专家每周8-20小时。
阶段四:筛选
输入: 约50MB候选训练对(例如10,000对) 输出: 约10MB高质量训练对(例如2,000对) 精简比例: 约80%
并非所有候选对都适合训练。筛选过滤质量、平衡性和多样性。
质量过滤
对所有候选对进行质量检查:
标注准确性: 让第二位领域专家审查随机15%的对。如果一致性低于90%,标注指南需要修订,冲突样本需要重新审查。
格式合规性: 根据预期模式验证每个输出。拒绝缺失字段、数据类型不正确或结构格式错误的对。
近似去重: 对所有输入文本进行向量化,移除输入余弦相似度超过0.95的对。从10,000个候选中,近似去重通常消除20-40%。
类别平衡
对于分类任务,统计每个类别的样本数。如果"技术规格书「有4,000个样本而」现场报告「只有200个,模型将压倒性地学习预测」技术规格书"。
通过对过度代表的类别进行降采样,并保留代表不足类别的所有样本来实现平衡。目标:最终数据集中没有类别低于5%。如果某个类别确实很少出现,则对其进行过采样或专门为该类别创建额外样本。
多样性最大化
在剩余候选中,选择最大多样性:
- 不同项目(不要500个样本来自同一个建筑项目)
- 不同文档模板(不要全部来自同一家工程公司)
- 不同复杂度(简单规格书和复杂多系统规格书)
- 不同边界情况(非标准格式、非标准术语、多语言文档)
实用方法:使用句子向量对候选对进行聚类,然后选择覆盖完整聚类空间的样本——从代表不足的聚类中选择更多样本,从密集聚类中选择较少样本。
阶段五:验证
输入: 约2,000条筛选后的训练对 输出: 约2,000条验证后的训练对(或更少,如果验证发现问题) 精简比例: 0-10%(验证移除最后的质量问题)
最后阶段是对完整筛选数据集的专家审查。
专家审查
领域专家审查最终数据集,不是通过检查每个样本(他们在阶段三已经审查了单个样本),而是从整体上检查数据集:
- 覆盖度检查: 所有文档类型都有代表吗?所有实体类型都存在吗?包含了边界情况吗?
- 一致性检查: 相似的文档标注是否一致?如果两份几乎相同的规格书有不同的实体抽取,其中一个是错的。
- 真实性检查: 数据集是否反映模型在生产中实际会遇到的情况?还是偏向简单样本?
边界情况审计
专门审查早期阶段识别的边界情况:
- 非标准格式的文档
- 不常见模板的文档
- 信息不完整的文档
- 信息矛盾的文档
- 类别之间边界上的文档
确保最终数据集中每种边界情况类型至少有3-5个样本。
格式验证
最终自动检查:最后一次对每个样本运行输出模式验证器。这能捕获审查和纠正过程中引入的任何格式问题。
实际结果
该建筑公司的700GB档案精简过程如下:
| 阶段 | 体积 | 文档/样本数 | 精简比例 |
|---|---|---|---|
| 原始档案 | 700GB | 约140,000份文档 | — |
| 分拣后 | 195GB | 约45,000份文档 | 72% |
| 抽取后 | 4.8GB | 约120,000个段落 | 97.5% |
| 转换后 | 42MB | 8,200个候选对 | — |
| 筛选后 | 8.5MB | 1,800个分类 + 3,200个抽取对 | — |
| 验证后 | 8.1MB | 1,750个分类 + 3,100个抽取对 | — |
总时间:4周,2名ML工程师和3名领域专家。
最终模型在文档分类(12个类别)上达到94%准确率,在实体抽取(15种实体类型)上达到89%准确率。这是用不到5,000条样本微调的7B参数模型——从700GB源材料中提取而来。
常见错误
跳过分拣,试图处理所有内容。 处理700GB PDF通过解析流水线需要数周的计算时间,并产生大量无关数据。分拣可以预先消除70%的成本。
随机采样而非系统化筛选。 从140,000份文档中随机选择2,000份会产生一个反映档案分布的数据集——通常被少数文档类型和少数项目主导。系统化筛选确保覆盖所有类型和来源的多样性。
让ML工程师在没有领域专家的情况下创建真实标注。 转换阶段需要领域知识来产生正确的输出。ML工程师可以构建对的结构,但建筑工程师必须验证实体值。
包含过时文档而不加标记。 旧文档可能引用过时标准或使用已弃用的术语。如果包含,需要标记它们,使模型学习当前实践而非历史实践。
Ertas Data Suite支持数据精简流水线的每个阶段。自动分拣在摄入时分类和去重文档。段落级抽取识别和隔离相关内容。标注界面支持高效的领域专家审查候选训练对。质量评分、去重和类别平衡内置于筛选阶段。最终验证工作流确保数据集在导出前达到质量阈值。整个流水线在本地运行,将700GB敏感企业文档保留在你的基础设施内。
延伸阅读
- Construction Document AI: Processing PDF Archives — 建筑公司如何使用AI解锁数十年PDF档案的价值。
- Enterprise Training Data Preparation for Fine-Tuning — 企业数据微调准备完整指南。
- Data Quality Over Quantity — 为什么更少、更好的样本始终优于更大、更嘈杂的数据集。
Turn unstructured data into AI-ready datasets — without it leaving the building.
On-premise data preparation with full audit trail. No data egress. No fragmented toolchains. EU AI Act Article 30 compliance built in.
Keep reading
从临时数据准备到持续数据运营:构建始终在线的流水线
大多数企业将数据准备视为一次性项目。但AI模型需要持续的新鲜数据。以下是如何从临时数据准备演进到持续数据运营流水线。
跨职能AI数据团队:ML工程师 + 领域专家 + 合规
AI数据准备不是单打独斗。最有效的团队结合ML工程师(架构)、领域专家(准确性)和合规官(治理)。以下是如何组建团队。
Phi-4与Qwen 2.5:微调数据准备
Phi-4和Qwen 2.5在分词器、上下文窗口和训练偏差上各不相同。如何为每个模型准备微调数据集,以及如何准备一个两者通用的数据集。