4. 制造领域数据采集与预处理
制造企业的知识资产天然分散:设备手册是PDF,工艺文件是Excel或Word,质检报告来自MES/QMS系统,维修记录躺在工单系统或班组微信群里。这些数据格式不同、术语不同、颗粒度不同,直接喂给RAG只会得到“检索得到但答不准”的结果。本章聚焦一条完整的数据管道:采集 → 解析 → 清洗 → 标准化 → 质量校验,目标是让多源异构数据变成可检索、可对齐、可追溯的知识单元。
一、核心原理:多源异构的三层差异
制造数据的“异构”不只是文件格式不同,而是三层差异叠加:
- 结构异构:PDF手册是非结构化文本,Excel工艺卡是半结构化表格,MES质检数据是结构化字段,维修工单是“半结构化文本+附件图片”。
- 语义异构:同一对象在不同系统中叫法不同,例如“主轴电机”在手册中叫“Spindle Motor”,在维修记录中叫“主轴马达”,在BOM中编码为“MTR-0012”。
- 颗粒度异构:手册按“章节-步骤”组织,质检报告按“批次-样本”组织,维修记录按“工单-故障现象-处理动作”组织。检索时若颗粒度不统一,召回结果会忽长忽短。
因此,预处理的核心不是“把文件转成文本”,而是建立统一的知识单元模型:每个单元包含“对象标识 + 属性/参数 + 操作/现象 + 来源出处”。只有对齐到同一对象,后续的向量检索和答案生成才能跨源引用。
关键原则:先定“知识单元Schema”,再做采集与清洗。Schema决定了要抽哪些字段、保留哪些上下文、如何标注来源。没有Schema的清洗,只是把脏数据从A格式搬到B格式。
二、方法流程:从原始文件到可检索知识单元
下面给出一个可落地的六步流程,适用于设备手册、工艺文件、质检报告、维修记录四类数据。
- 采集与登记:按来源系统建立采集任务,记录文件路径、版本号、生效日期、责任部门。对PDF/扫描件先做OCR,对Excel做表头识别,对数据库做增量抽取。
- 解析与分块:PDF按标题层级切分,表格按“行=记录、列=字段”解析,工单按“故障现象/原因/措施”三段切分。分块时保留父级标题和页码,便于溯源。
- 清洗:去除页眉页脚、乱码、重复段落;统一单位(mm/m、℃/K);修正OCR常见错字(如“主轴”误识为“主抽”)。
- 标准化:将术语映射到企业标准词表,将设备编码、物料编码、工序编码统一为唯一ID;时间统一为ISO 8601格式。
- 知识单元组装:按Schema输出JSONL,每条包含object_id、object_name、doc_type、content、source、version、effective_date等字段。
- 质量校验:抽样检查术语映射准确率、分块完整性、来源可追溯性;对低置信度记录打标,进入人工复核队列。
三、案例场景:四类数据的清洗要点
不同来源的数据,清洗重点差异很大。下表给出可直接对照执行的清单。
| 数据源 | 典型问题 | 清洗动作 | 标准化目标 |
|---|---|---|---|
| 设备手册 PDF | 页眉页脚混入正文、图表标题断裂、OCR错字 | 按标题层级切分;过滤页眉页脚;OCR后处理纠错 | 章节-步骤-参数三级结构,保留页码 |
| 工艺文件 Excel | 合并单元格、多表头、单位不统一、版本混乱 | 展开合并单元格;识别表头行;单位换算;版本去重 | 工序ID + 参数名 + 参数值 + 单位 + 版本 |
| 质检报告 QMS | 批次号格式不一、判定值中英文混用、样本缺失 | 批次号归一化;判定值映射为PASS/FAIL;缺失标记 | 批次ID + 检测项 + 实测值 + 判定 + 时间 |
| 维修记录 工单 | 口语化描述、故障现象与原因混写、附件未关联 | 按“现象/原因/措施”分段;术语映射;附件OCR关联 | 设备ID + 故障现象 + 原因 + 措施 + 工时 |
以一个真实场景为例:某汽车零部件厂的“主轴电机过热”问题,在手册中对应“Spindle Motor Overheat”,在维修工单中写的是“主轴马达发烫”,在质检报告中体现为“温升超标”。若不做术语映射,RAG检索“主轴电机过热”时只能召回手册,无法关联到维修案例和质检数据。标准化后,三者统一到object_id: MTR-0012,检索即可跨源聚合。
四、误区与复盘
常见误区一:先向量化,后清洗。把原始PDF直接切块嵌入,会导致大量噪声向量污染索引。正确顺序是先清洗标准化,再向量化。
常见误区二:只做格式转换,不做语义对齐。把Excel转成JSON不等于标准化。没有术语映射和编码统一,跨源检索仍然失败。
常见误区三:忽略版本与生效日期。工艺文件有多个版本,若不加版本字段,RAG可能引用已作废的工艺参数,造成严重误导。
复盘建议:每批数据入库前,抽取50~100条做人工校验,重点看三项指标——术语映射准确率(目标≥95%)、分块完整性(标题与正文不分离)、来源可追溯性(每条知识单元能定位到原文件页码或工单号)。低于阈值时,优先修正词表和分块规则,而不是盲目增加数据量。
五、可执行的配置示例
下面是一个知识单元Schema的JSONL示例,可直接作为清洗管道的输出规范:
{
"object_id": "MTR-0012",
"object_name": "主轴电机",
"doc_type": "maintenance_record",
"content": "故障现象:主轴电机过热报警。原因:冷却风扇堵塞。措施:清理风扇并复位。",
"source": "工单 WO-2024-0317",
"version": "v1.0",
"effective_date": "2024-03-17",
"confidence": 0.92
}
清洗规则可以用配置文件管理,便于迭代:
# clean_rules.yaml
term_mapping:
"主轴马达": "主轴电机"
"Spindle Motor": "主轴电机"
"发烫": "过热"
unit_normalize:
"mm": "mm"
"厘米": "cm"
"℃": "°C"
chunk:
max_tokens: 512
overlap: 64
keep_parent_title: true
实践提示:清洗规则和词表应版本化管理,每次变更记录影响范围。对于制造领域,术语映射表往往需要工艺、设备、质量三方共同确认,不能只由IT部门闭门造车。
总结来说,制造领域的数据采集与预处理,本质是一场“语义对齐工程”。采集解决“拿得到”,清洗解决“干净”,标准化解决“对得上”,质量校验解决“信得过”。四步都做到位,RAG才有可靠的知识底座。