Back to blog
    从700GB PDF到500条微调数据集:数据精简流水线
    数据精简企业PDF微调数据准备segment:enterprise

    从700GB PDF到500条微调数据集:数据精简流水线

    你有数TB的企业文档。你的微调模型只需要500-5,000条高质量样本。以下是将海量文档库系统性精简为精准训练数据集的完整流水线。

    EErtas Team·

    一家建筑公司带着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工程师可以构建输入格式,但建筑工程师必须识别和验证正确的实体值。这是最耗费人力的阶段。

    创建训练对

    领域专家在此阶段的参与通常遵循以下工作流程:

    1. ML工程师抽取候选段落并将其结构化为输入
    2. ML工程师使用LLM生成输出草稿(实体抽取建议)
    3. 领域专家审查每个草稿,纠正错误并补充遗漏
    4. 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%
    转换后42MB8,200个候选对
    筛选后8.5MB1,800个分类 + 3,200个抽取对
    验证后8.1MB1,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敏感企业文档保留在你的基础设施内。


    Your data is the bottleneck — not your models.

    Ertas Data Suite turns unstructured enterprise files into AI-ready datasets — on-premise, air-gapped, with full audit trail. One platform replaces 3–7 tools.

    延伸阅读

    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