引言

在 AI 圈有一句名言:Data is the new oil, but high-quality data is the refined gasoline.(数据是新石油,但高质量数据才是提炼好的汽油。)

现在的大模型(LLM)之争,本质上已经不是算法之争(大家都在用 Transformer),也不是算力之争(卡不是什么难事了),而是数据质量之争。谁的数据更干净、更难获取、逻辑更强,谁的模型就更聪明。

我们不再通过改代码/加大参数来提升模型效果,而是通过喂更好的“数据”来提升模型智商。高质量数据集决定了模型的上限和价值观。

什么是数据集

在开始我们的技术探讨之前,让我们先明确一个基本概念:什么是数据集?

简单来说,数据集,就是用于训练和评估AI模型的结构化数据的集合。它就像是,学生的教科书,以及习题集——教科书的质量,直接地决定了学生能够学到多少知识,习题集的难度,也检验了学生的真实水平。

在AI领域,数据集通常包含:

  • 训练集:模型学习的“教材”
  • 验证集:期中考试的“模拟题”
  • 测试集:最终考核的“真题”

本文将从工程实践角度,为你完整呈现数据集制作的全流程。

第一阶段:目标定义与数据普查

  1. 明确模型目标:是内部知识问答、智能文档摘要、合规性检查还是报告生成?目标决定数据范围和标注方式。

  2. 全面数据盘点:

    • 源识别:锁定所有相关PDF、Word、PPT、Excel、Confluence/Wiki页面、数据库表、邮件、会议纪要等。
    • 元数据登记:记录各数据源的数量、格式、更新频率、访问权限、所属部门/业务域。这步至关重要,可避免后续混乱。

第二阶段:数据采集与预处理

  1. 自动化采集:编写脚本或使用工具(如Apache NiFi, Airflow调度爬虫)建立自动化管道,定期从各源头拉取数据。对数据库,可直接连接;对文档系统,需使用API。
  2. 格式解析与文本提取:
    • PDF:使用PyMuPDF、PDFMiner或Unstructured库,注意处理扫描件(需OCR,如PaddleOCR)。
    • Office文档:使用python-docx、python-pptx、openpyxl。
    • 网页/Wiki:使用BeautifulSoup处理HTML。
  3. 基础清洗:去除页眉页脚、水印、无关符号、乱码。将提取的文本块进行初步合并。

第三阶段:核心工程——数据清洗、拆分与格式化

  1. 精细化清洗与标准化:

    • 文本规范化:统一日期、金额、产品代号等实体的格式。
    • 去重:识别并合并高度相似或重复的内容(如通过SimHash)。
    • 关键信息保护:在训练前,必须对敏感信息(如个人ID、内部项目代号、未公开财务数据)进行脱敏或匿名化处理。
  2. 语义分割与块化:

    • 将长文档按语义边界(如章节、段落)切分为适中的“文本块”(chunks)。这是为后续向量化检索和模型训练做准备。
    • 常用方法:递归字符分割、基于语义嵌入(如BERT)的语义分割。
  3. 格式化为结构化数据:

    • 将每个处理后的“文本块”及其元数据(来源、页码、更新时间等)存储为结构化格式,如JSONL(每行一个样本)。
    • 示例结构:{“id”: “doc1_chunk2”, “text”: “具体的文本内容…”, “source”: “2023年产品白皮书.pdf”, “page”: 5, “metadata”: {…}}

第四阶段:数据标注与增强

  1. 指令-输出对构建:这是训练“专家”的关键。根据模型目标,创建问答对。
    • 手动构建:由领域专家根据文档撰写高质量问答。
    • 半自动生成:
      • 基于文档自问自答:用大语言模型(如GPT-4)根据文本块生成问题,再由专家审核修正。
      • 日志驱动:收集内部知识库/聊天工具中员工实际搜索和提问的历史记录,将其与正确答案配对。
  2. 数据增强:在忠实于原文的前提下,对指令进行同义改写、转换提问视角(如“总结” vs “列出三个要点”),以增加多样性,提升模型鲁棒性。

第五阶段:数据集划分与评估

  1. 智能划分:严防数据泄漏!

    • 务必按主题、项目或时间进行划分,确保同一主题的所有资料只出现在一个集合中。
    • 典型比例:训练集:验证集:测试集 = 7:1.5:1.5。验证集用于调参,测试集用于最终、一次性的性能评估。
  2. 构建评估基准:创建一个小型但高质量的“黄金测试集”,由专家精心设计,覆盖核心场景、难点和边缘案例。此基准用于客观衡量不同模型或训练策略的效果。

十大核心困惑与实践解答

  1. 困惑:需要多少数据才够?

解答:质量远大于数量。几百个超高精度的指令-输出对,远胜数万个低质样本。对于领域专家模型,1000-5000个精标注的样本常可作为一个坚实的起点,再通过持续迭代增加。

  1. 困惑:如何平衡数据质量与标注成本?

解答:采用“种子精标+AI增强+专家审核”的混合策略。先由专家制作少量(如200个)种子样本。然后用这些样本指导大模型进行批量生成或改写。最后,专家只审核和修正AI生成的输出,效率可提升5-10倍。

  1. 困惑:如何处理相互矛盾的知识?

解答:这是领域知识的常态。必须在元数据中清晰标注知识的时效性(版本/日期)和适用范围(如“仅适用于A产品线”)。在训练时,可将其作为多任务学习的一部分,让模型学会根据问题上下文(如“根据最新规定…”)选择正确版本。

  1. 困惑:非结构化数据(如图表)怎么办?

解答:1)关键图表:提取摘要文本,用大模型描述图表的核心结论。2)OCR提取数据:将表格转为结构化数据。3)多模态路线:如果图表信息至关重要,需考虑使用多模态模型,但成本和技术复杂度剧增。前期通常用“文本描述+原文引用”作为解决方案。

  1. 困惑:数据不断更新,数据集如何维护?

解答:将数据集制作管道化、版本化。建立与源文档更新联动的自动化侦测和增量处理流程。每次重大更新后,发布新的数据集版本(如Corpus-v2.1),并记录变更日志,确保模型可追溯、可迭代。

  1. 困惑:如何评估数据集本身的质量?

解答:从四个维度核查:1)准确性:随机抽样,由专家检查答案是否正确。2)覆盖率:知识图谱或核心概念列表,检查是否都被涵盖。3)多样性:分析指令的句式、类型和难度分布。4)一致性:检查相同问题在不同语境下,答案是否逻辑一致。

  1. 困惑:开源模型和商业API,数据准备有何不同?

本质不同。开源模型:需准备完整的、可直接用于监督微调的指令-输出对数据集。数据是核心竞争力,需全程把控。商业API:更多是准备高质量的“上下文”文档,用于检索增强生成。核心工作是文档的清洗、分块和向量化,以及编写精准的提示词。

  1. 困惑:如何让模型学会“我不知道”?

解答:必须在数据集中主动构造“拒答”样本。例如,从无关文档中随机选取文本块,搭配无法从该文本中找到答案的问题,并将期望输出标注为“根据已有信息,我无法回答此问题”。这是保障模型可靠性的关键。

  1. 困惑:小语种或专业术语太多怎么办?

解答:构建并维护一个领域术语表,在预处理阶段进行统一标准化。对于小语种,在数据增强时,可考虑在专业翻译辅助下,进行有限度的回译以增强语言多样性,但需确保术语翻译绝对准确。

  1. 困惑:从哪里开始第一步?

立即启动一个最小可行性闭环:1)选择一个最核心、文档质量最高的子领域。2)收集约50份关键文档。3)人工制作100-200个绝对精准的问答对。4)用这些数据微调一个轻量级模型或在RAG中进行测试。5)内部演示,收集反馈。这个快速循环能验证路径、暴露真实问题,并争取到后续资源。

总结

构建领域专家模型,是一个 “数据迭代”​ 与 “模型迭代”​ 交替前进的过程。不要追求一次性构建完美数据集。

用第一版数据训练一个初代模型,在实际测试中,它的错误和不足正是你改进数据集最宝贵的指南。从一个小而精的闭环开始,步步为营,是通往成功最可靠的路径。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐