在 RAG 里被一堆 PDF 里的公司抬头、页脚页码和毫无意义的免责声明狠狠坑了一把。我喂给模型的“知识”,有一半是这种结构性噪音,回答能准才见鬼了。垃圾进,垃圾出,古人诚不我欺。
上次聊数据清洗还是爬虫时代,用正则和 XPath 硬刮,对付的是网页 DOM 树里的广告和导航栏。现在呢?PDF 这玩意儿,简直就是噪音的狂欢节。你永远不知道客户发来的所谓“核心资料”,里面嵌了多少层水印、用了哪种扭曲的排版引擎、或者干脆就是一张图片转的 PDF。用 PyPDF2 或者 pdfplumber 抽出来的文本,段落顺序可能是乱的,表格全散了,中间冷不丁给你插一句“机密文件 第 3 页”。这种数据扔进向量数据库,就像往发动机里灌掺了沙子的汽油。
我现在的清洗流水线,已经迭代到 2.0 了。第一步不是处理文本,是分类。用个轻量级模型先判断文档类型:是扫描件(OCR预处理路径)、是标准可编辑 PDF(直接解析路径)、还是恶心的 Word 转 PDF(格式灾难路径)。分错类,后面全白干。
核心清洗逻辑是分层的,像滤网。第一层,规则过滤:用一组精心调校的正则,干掉所有“第 X 页 / 共 Y 页”、“Copyright © 2024”、“Confidential”这类模板文本。这里有个坑,频率阈值要设好,不能把正文里偶然出现的“第”字也杀了。第二层,结构修复:专门对付表格和列表。用算法(比如基于对齐和间距的启发式规则)尝试把离散的文本块重组回表格结构,哪怕恢复个六七成,对语义理解也是质的提升。第三层,才是语义去噪:用 Embedding 计算段落或句子的向量,聚类。那些和其他内容语义距离太远、像孤岛一样的片段(比如单独的页码、孤立的图注),大概率是噪音,降权或剔除。
这整套东西,我用 n8n 搭了个工作流。新文档扔进指定文件夹,自动触发分类 -> 按路径分流 -> 多层清洗 -> 分段向量化 -> 存入 Pinecone。人只需要在关键节点(比如分类置信度低于阈值时)介入看一眼。手动清洗?2024 年了,时间不能花在这种重复劳动上。团队扩张期那会儿,我雇过实习生干这个,结果质量参差不齐,还得返工,管理成本比开发这套自动化流程还高。
AI 来了,人人都能基于公开数据调个 API 做出点样子。真正的差距在哪?就在你喂给模型的数据“净度”上。你的 RAG 回答精准,不是因为你的 Prompt 多花哨,而是你的知识库底层没有垃圾。这就是“数据品位”。一个产品经理,如果对输入数据的质量没有近乎偏执的洁癖,没有设计自动化流水线来保障这种洁癖的能力,在 AI 深度应用层面根本走不远。技术会过时,但这种对数据信噪比的敏感和工程化能力,才是新的护城河。
搞了几个月大模型,回头一看,核心竞争力又他妈回到了数据本身。只不过,这次是从“怎么拿到数据”,变成了“怎么把脏数据洗干净”。














