ORANGE BOOK · RAG

第六章 资料是知识库的灵魂——怎么准备数据


6.1 RAG 世界第一定律:垃圾进 = 垃圾出

工程界有句老话:Garbage In, Garbage Out(GIGO)——垃圾进,垃圾出。

RAG 这件事,90% 的失败来自数据准备,而不是模型或工具。

具体表现:

  • 你以为是"AI 答错了"——其实是你上传的 PDF 全是图片,OCR 都没识别清楚;
  • 你以为是"召回不准"——其实是你把"几百份文件合并成一个超大 PDF"了,AI 不知道哪段属于哪份;
  • 你以为是"AI 答非所问"——其实是文档里有大量"页眉、页脚、广告、目录"被一起切片了;
  • 你以为是"幻觉"——其实是你给的资料里就有矛盾的信息(A 文件说 30%、B 文件说 28%)。

这一章就是教你避免这些"垃圾"。


6.2 准备数据的 7 步法

不管你用什么工具、什么资料源,整套准备流程是统一的:

flowchart LR
    S1[1. 收集] --> S2[2. 转格式]
    S2 --> S3[3. OCR / 转写]
    S3 --> S4[4. 清洗]
    S4 --> S5[5. 命名]
    S5 --> S6[6. 打元数据]
    S6 --> S7[7. 入库 + 验证]

接下来我们一步一步讲。

第 1 步:收集——确定边界

最常见的错误:收集时贪多,最后用不动。

正确做法:

  • 明确"这个知识库是干什么的"——一句话写下来,贴在文件夹里;
  • 只收"对这个目的相关"的资料——其他的进别的库;
  • 设定"时间范围"——比如只收 2022 年之后的;
  • 设定"质量底线"——超过 5 年没更新的过期文件不收。

第 2 步:转格式——统一文件类型

RAG 系统对文件格式有偏好。优先级

Markdown > 纯文本 TXT > Word > 文本型 PDF >> 扫描型 PDF > 图片 > 音视频

越靠左越"AI 友好",越靠右越要"额外处理"。

如果你能控制——尽量把资料转成 Markdown 或文本 PDF

转格式的小工具:

  • Word → Markdown:用 Pandoc 或 VS Code 插件;
  • 网页 → Markdown:用浏览器插件 MarkDownload、Chrome 扩展 SingleFile;
  • PDF → Markdown:用 MinerU、Marker、PyMuPDF4LLM;
  • PPT → Markdown:用 Marker 或截图 + OCR;
  • Excel → Markdown 表格:直接复制粘贴。

第 3 步:OCR / 转写——让"图片"和"声音"变成文字

这一步是 RAG 准备数据最容易被忽略的一步

6.2.3.1 PDF OCR(让扫描件可搜索)

判断方法:用 PDF 阅读器打开,能不能选中文字

  • 能选 → 文本型 PDF,不需要 OCR
  • 不能选 → 扫描型 PDF,必须先 OCR

推荐工具(中文 OCR 准确率 95%+):

工具 平台 价格 特点
白描 Mac/iOS/Win 免费/付费 个人首选
TextIn Web 免费配额 合合信息出品
PaperEar Mac 免费 OCR + 翻译
MinerU 开源 免费 自托管,复杂 PDF 神器
Marker 开源 免费 PDF → Markdown
PaddleOCR 开源 免费 国产代表
Tesseract 开源 免费 老牌经典

强烈推荐 MinerU(GitHub: opendatalab/MinerU)——它能把"复杂 PDF"(带表格、公式、图片标题)一次转成结构化 Markdown,效果远超传统 OCR。

6.2.3.2 音频转写

工具 平台 价格 特点
飞书妙记 Web/App 免费 中文转写最强
通义听悟 Web/App 免费 中文 + 多人识别
Notta Web/App 免费/付费 多语言
Whisper(OpenAI) 开源 免费 多语言、可本地
WhisperX / FunASR 开源 免费 中文优化

家庭场景:飞书妙记或通义听悟拿来录长辈口述的"病史""家族历史"。

6.2.3.3 视频字幕提取

视频本质上 = 画面 + 音频。RAG 通常只需要"音频转字幕":

  • B 站视频:用 bilibili-API-collect 等工具下字幕;
  • YouTube 视频:直接复制 YouTube Transcript;
  • 本地视频:用 Whisper 转字幕;
  • 会议录像:飞书妙记 / 腾讯会议 AI 转写。

转完字幕之后,把字幕作为知识库的"文本"导入——而不是导入视频本身。

第 4 步:清洗——去掉噪音

清洗是 RAG 数据准备最有价值的环节

7 个清洗动作:

4.1 去页眉页脚

PDF 每页都有"第 X 页 / 共 Y 页""公司机密""xx 年报"这种重复内容——全删掉

工具:MinerU、Marker、Adobe Acrobat 自带的"页眉页脚删除"。

4.2 去广告 / 水印

收藏的网页文章里经常有"扫码关注 / 推荐阅读 / 相关广告"——全删掉

工具:MarkDownload 浏览器插件可以"只留正文"。

4.3 去重复段落

合同模板经常有重复的"声明""免责"——保留一份就够。

工具:脚本去重(rg + uniq),或人肉浏览。

4.4 去无意义符号

OCR 经常会留下"○○○""———""…………"等乱码——全删掉

工具:用任意文本编辑器的"正则替换"功能。

4.5 修正 OCR 错误

OCR 偶尔会把"日"识别成"曰"、把"o"识别成"0"。用 AI 自动修正

请帮我把以下 OCR 文本中的常见识别错误修正过来:
- "曰" 应该是 "日"
- "0元" 应该看上下文是 "O元" 还是 "0 元"
- 其他明显的 OCR 错误也请修正

待处理文本:
{粘贴 OCR 文本}

4.6 拆分超长文档

一份 1000 页的"年度报告"应该拆成"季度""部门""主题"几个小文件,每个 30-100 页最好

4.7 合并碎片

反过来,10 份只有 1 页的"会议纪要"应该按月合并成"YYYY-MM-会议纪要合集.md",避免索引爆炸。

第 5 步:命名——让 AI 一眼看出"这是什么"

文件名是 RAG 中最容易被忽略但效果最大的一环。

好的命名 = AI 引用时一眼能看出"这条结论来自哪里"。

5.1 命名公式

[日期]-[主题]-[来源/作者]-[版本].扩展名

例如:

2024-04-15-销售合同-腾讯-V3.pdf
2025-08-12-体检报告-王阿姨-XX 医院.pdf
2026-03-10-周报-产品组-第 11 周.md

5.2 反例(不要这样)

新建文档 (2).pdf
扫描件 1234.pdf
合同.pdf
重要!!!.pdf

这种文件名 AI 看了一脸懵——引用质量大打折扣。

5.3 批量改名工具

文件多的话用脚本:

  • Mac:Finder 选中多个文件 → 右键"重命名 N 个项目";
  • Win:PowerToys 的 PowerRename;
  • 跨平台:File Renamer Turbo / Better Rename / Bulk Rename Utility。

或者直接让 AI 帮你改:

我有 100 份合同,文件名是乱的,能根据内容批量重命名为以下格式:[日期]-[甲乙双方]-[金额]-[类型].pdf 吗?请一份一份处理,每份给出建议的新文件名。

第 6 步:打元数据(Metadata)

元数据是"卡片上的小字"——它不是正文,但能让检索精准 10 倍。

6.1 常用元数据字段

字段 例子
标题 销售合同-腾讯-2024Q1
作者 张三
日期 2024-04-15
来源 公司共享盘/合同库/2024
类型 合同 / 报告 / 会议纪要
标签 销售 / 大客户 / 已签字
部门 法务部
项目 XX 项目
重要性 高 / 中 / 低
保密级别 公开 / 内部 / 机密

6.2 怎么打

不同工具方法不同:

  • NotebookLM:源文件 → 右键 → "Rename Source"——基本只支持改名;
  • ima:每个文件可加标签;
  • Cherry Studio:知识库设置里可加全局元数据;
  • Dify / RAGFlow:文档管理界面有完整元数据 UI;
  • AnythingLLM:每个 Workspace 可设元数据。

最朴素的做法:把元数据写进文件开头

---
title: 销售合同-腾讯-2024Q1
date: 2024-04-15
author: 法务部张三
tags: [销售, 大客户, 已签字]
importance: 高
confidentiality: 内部
---

# 正文开始

这种 Markdown 文件头叫 Frontmatter——几乎所有 RAG 工具都支持解析。

第 7 步:入库 + 验证

入库不是终点——验证是必须的

7.1 入库后立刻问 5 个"探针问题"

每个新建的知识库,跑 5 个简单的"健康检查"问题:

1. 当前知识库总共有多少份文件?请列出文件名清单。
2. 时间范围是从什么时候到什么时候?
3. 列出所有出现 5 次以上的"高频实体"(公司名、人名、地名)。
4. 列出 3 个最早 / 最近的文件。
5. 随便挑一份,告诉我它的核心内容是什么。

如果这 5 个问题都答得对——你的知识库基本健康。

如果答错——回去检查"是不是文件没传完"或"是不是 OCR 没识别清"。

7.2 测试一组"业务问题"

比如对合同库:

1. 我们公司过去签过几份和 X 公司的合同?
2. 违约金条款历年变化趋势?
3. 哪份合同金额最大?
4. 找出所有付款条件是"分期"的合同。
5. 列出过去 3 个月新增的合同。

对不上的话,说明你需要:

  • 加更多文件(覆盖度不够);
  • 改善文件名 / 元数据(识别度不够);
  • 重新切片(粒度不对)。

6.3 6 大资料源处理详解

6.3.1 PDF(最常见)

类型判断

  • 文本型 PDF:能选中复制文字 → 直接上传;
  • 扫描型 PDF:选不中文字 → 必须 OCR;
  • 混合型 PDF:有的页能选有的不能 → 整体跑一次 OCR。

推荐处理流程

扫描件 PDF →(用 MinerU / 白描)→ Markdown →(清洗)→ 入库

高质量 PDF 解析工具

  • MinerU(开源、神器)—— github.com/opendatalab/MinerU
  • Marker(开源)—— github.com/VikParuchuri/marker
  • TextIn(商业,准确率高)
  • Adobe Acrobat AI Assistant(贵但稳)
  • WPS PDF(基础需求够)

表格 PDF 处理

PDF 里的表格是 RAG 的头号难点

普通 OCR 经常把表格变成"单词列表"——失去行列结构。

解决方案:

  • MinerU / Marker 都有"表格保结构"功能;
  • 或者用 PyMuPDF + Camelot 提取表格成 CSV 后再入库;
  • 或者把表格截图作为图片 + 单独配文字描述。

6.3.2 网页(收藏夹的救星)

一次性导入

  • Chrome / Edge:导出书签为 HTML → 用脚本批量抓内容;
  • Pocket / Instapaper:自带导出 → 转 Markdown;
  • 微信收藏:用 ima 一键同步,或 WeReadKitchatlog 等工具导出;
  • 小红书 / 知乎收藏:用 小红书爬虫工具知乎收藏夹导出 等工具。

持续抓取

  • RSS 订阅:用 Feedly / Inoreader / FreshRSS 持续抓→ 定时导入;
  • 浏览器插件 Save2Notion / Web Clipper:随手保存→ 同步到 Notion → 走 Notion API 入库;
  • Cubox / Raindrop:稍后读 → 自动同步导出。

网页清理小贴士

  • MarkDownload 浏览器插件——只保留正文;
  • SingleFile 把整个网页存成单个 HTML;
  • Readability.js(Mozilla 开源)—— 程序化提取正文。

6.3.3 微信收藏 / 聊天记录

微信收藏

  • iOS / Android:长按收藏内容 → 转发到"文件传输助手"→ 在电脑端导出;
  • 腾讯 ima:直接连接微信收藏,一键同步;
  • 第三方工具(注意合规):WeChatMsg、留痕、MemoTrace。

微信聊天记录

聊天记录是个金矿——里面有你和家人、客户、同事的全部口头协议、问答、知识。

但要注意:

  • 隐私问题——只导出"你确定要进 RAG"的那部分;
  • 合规问题——别人发的内容入库前最好告知;
  • 格式问题——聊天记录是大量碎片对话,需要预处理(按话题分组、去除日常寒暄)。

工具:

  • iOS:iTunes 备份 + iMazing 导出;
  • Android:留痕 / WeChatMsg / MemoTrace;
  • PC:腾讯 ima 直接同步。

6.3.4 语音 / 录音

长辈口述史

最高情感价值的应用——把爸妈的"故事"录下来变成知识库。

1. 用录音笔 / 手机录爸妈讲家里历史(每段 30-60 分钟);
2. 用飞书妙记 / 通义听悟 / Whisper 转写;
3. 简单清洗(去口水话、去重复);
4. 入库;
5. 以后想知道"爸 18 岁那年发生了什么",问 AI 就行。

很多家庭这样做之后,AI 知识库第一次让爸妈成为 AI 受益者——他们的"故事"被永远保存、随时可查。

会议录音

把每次重要会议录音(征得同意) → 转写 → 入库。

下次想问"X 项目上次拍板的责任人是谁" → AI 直接答。

课程录音

学生党最有价值——把所有课程录音转写后入库 → 复习时直接问"老师讲的傅里叶变换在哪里"。

6.3.5 视频

视频处理本质上 = 字幕处理。

视频文件 →(提取字幕)→ 文本 →(清洗)→ 入库

工具:

  • 本地视频:Whisper / WhisperX / FunASR;
  • B 站:bilibili-API-collect;
  • YouTube:YouTube 自带 transcript(免费);
  • 网课:录屏 → Whisper。

知识型视频处理小贴士

  • 把视频 ID + 时间戳保留进文本里——以后引用时能"跳到原视频对应秒";
  • 例如:[00:14:32] 老师讲到傅里叶变换的核心是把信号分解成不同频率

6.3.6 图片(截图、思维导图、手写笔记)

截图

OCR + 入库。手机或电脑里成千上万的截图(聊天截图、文章片段、PPT 截图)是 RAG 的优质素材。

工具:白描、PaperEar、Apple 自带的"实况文本"。

手写笔记

挑战大但能解决——用 Apple Notes / Goodnotes / Notability 自带的"手写识别",或专业工具:

  • Mathpix(数学公式 + 文本)
  • Pen to Print(手写转印刷)
  • MyScript Nebo(最强手写识别)

思维导图

XMind / MindManager 都支持"导出 Markdown"——直接入库。


6.4 切片粒度的实操经验

不同工具的切片策略你大多数时候不需要改——但会改的人能让效果再翻倍

6.4.1 经验值

内容类型 推荐切片大小 Overlap
普通文档(合同、报告) 500-1000 字 100-200 字
技术文档(代码、API) 200-500 字 50-100 字
文学作品(小说、散文) 1000-2000 字 200-300 字
表格 / Excel 按行切,每行单独 0(不重叠)
QA 对 一对一切(一问一答一片) 0
法律 / 政策 按"条款"切 50 字

6.4.2 父子分块(高级)

父子分块的实战例子:

  • 小段(child):50-100 字 —— 用来精确召回;
  • 大段(parent):包含小段的整段 1000-2000 字 —— 用来给 AI 完整上下文。

实战推荐:合同、法律、医疗这种"需要精确引用 + 上下文完整"的场景,一定开启父子分块

6.4.3 语义分块(最高级)

不固定字数,让 AI 判断"哪里该断"。

适合:散文、博客、对话——内容自然分段的场景。

工具:Cherry Studio Pro / Dify / RAGFlow / FastGPT 都支持。

6.4.4 改了切片后必须"重建索引"

注意:切片策略改了之后,所有已入库的内容都要重新切+重新嵌入+重新入库

不是改一下设置就生效。


6.5 元数据进阶:让"过滤检索"更精准

6.5.1 时间过滤

"在 2024 年之后签订的合同里,违约金最高的是哪份?"

要让 AI 答对,每份文档必须打时间元数据

6.5.2 类别过滤

"在'劳动合同'类别里,社保条款是怎么约定的?"

要让 AI 答对,每份文档必须打分类标签

6.5.3 多人/多部门隔离

"销售部能看销售合同库,法务部能看法务合同库。"

要让 AI 隔离,每份文档必须打部门元数据 + 设权限

6.5.4 打元数据的"懒人方法"

不想一份一份手打?让 AI 帮你打:

请基于以下文档内容,自动打出 5 个标签:
- 类型(合同/报告/邮件/会议纪要/...)
- 时间(YYYY-MM-DD,如不能确定写 unknown)
- 关键实体(最多 3 个,公司名/人名/地名)
- 主题(一两个词)
- 重要性(高/中/低)

文档内容:
{粘贴文档前 500 字}

跑一次脚本,几百份文档的元数据就打完了。


6.6 数据更新策略

知识库不是"建一次就完事"——它是个"活"的东西。

6.6.1 增量更新

每次新增文件,只对新文件做切片+嵌入,旧的不动。

所有靠谱的 RAG 工具都支持增量更新——你只要"传新文件"就行。

6.6.2 定期审查

每个月或每季度做一次:

  • 删除过期文件;
  • 修正错误标签;
  • 添加新分类;
  • 重建索引(如果改了切片策略)。

6.6.3 自动同步源

进阶玩家会做"自动管道":

  • Notion 笔记 → 自动同步到 Dify 知识库
  • 飞书文档 → 通过 webhook 触发更新
  • 共享盘新文件 → 定时扫描入库
  • 企业微信群 / 钉钉群 → 抓取消息入库

通常用 n8n / Activepieces / Zapier / Make 等工作流工具实现。

第十一章会详细讲。


6.7 数据质量验收清单

每次准备完一批数据,对照下面 12 项自检

文件级(针对每份文件)

  1. 文件能不能选中文字?(不能 → OCR)
  2. 文件名符合"日期-主题-来源-版本"规则吗?
  3. 有没有打分类标签?
  4. 有没有打日期元数据?
  5. 文件大小是不是合理(一般 < 50 MB / 份)?

知识库级(针对整个库)

  1. 知识库有没有写"用途说明"?
  2. 文件总数 < 500 吗?(超过考虑分库)
  3. 总大小 < 1 GB 吗?(超过考虑分库或换工具)
  4. 有没有重复文件?
  5. 入库后跑了 5 个探针问题吗?
  6. 跑了 5 个业务问题,准确率 > 80% 吗?
  7. 有没有备份知识库元数据?

12 项全部打勾,你的数据准备就合格了。


6.8 实战案例:把 1000 份家电说明书做成"家电助手"

我们用一个完整的例子串起来。

场景

老张家里有 30 件家电——洗衣机、冰箱、空调、空气净化器、扫地机器人……

每件家电都有一本说明书。

平时坏了一查就是一上午——翻箱倒柜找说明书。

数据准备

  1. 收集:把 30 件家电的说明书全部找出来;
  2. 转格式:纸质的拍照 / 扫描成 PDF(用手机自带"扫描文档"功能);
  3. OCR:用白描批量 OCR;
  4. 清洗:把"安全声明、保修卡、广告页"删掉,只留"使用说明、故障排查";
  5. 命名[品牌]-[型号]-[品类]-说明书.pdf,例如:
    • 海尔-EG10014BD959GU1-洗衣机-说明书.pdf
    • 小米-M7Pro-扫地机器人-说明书.pdf
    • 美的-KFR-72LW-空调-说明书.pdf
  6. 元数据:每份打"品牌 / 品类 / 购买日期 / 保修期"4 个标签;
  7. 入库:传到 ima(推荐家庭场景)或 NotebookLM。

验证

Q1:列出家里所有家电的品牌和品类。
Q2:洗衣机洗羽绒服的步骤是什么?
Q3:空调外机滴水可能是什么原因?怎么处理?
Q4:扫地机器人卡住了不前进,第一步该怎么排查?
Q5:哪些家电的保修期还没过?

5 个问题 5 秒钟答完——老张以后家里坏什么直接问,再也不用翻箱倒柜

进阶玩法

把 ima 的"家电助手"知识库接入家庭群微信机器人——爸妈也能用:

@家电助手 空调遥控器没反应了,怎么办?

爸妈不用打开 App、不用懂 AI——发条消息就有答案。

这就是 AI 知识库给普通家庭的最朴素价值。


6.9 一些常见反例

反例 1:把 100 份 Word 拼成一个超大 Word 入库

❌ 拼成一个 = AI 不知道每段属于哪份 = 引用全乱套。

✓ 保持每份独立,让 RAG 自己做切片。

反例 2:扫描件 PDF 直接传,没做 OCR

❌ 不能选中文字 = AI 啥都看不懂 = 等于没传。

✓ 先 OCR 转成可搜索 PDF 或 Markdown 再传。

反例 3:文件名全是"扫描件 1.pdf""扫描件 2.pdf"

❌ AI 引用时全是"根据扫描件 1"——你完全不知道是哪份。

✓ 改成"日期-主题-来源-版本"格式。

反例 4:把"草稿、过期、错误"的文件也传进去

❌ AI 回答时引用了过期的版本,你白干一场。

✓ 只传"最终版"+"已生效"的文件。

反例 5:一次性传 5000 份

❌ 索引慢、查询慢、维护难、回答噪音大。

✓ 分库管理,每库 50-500 份。


6.10 本章一图回顾

flowchart TB
    Raw[原始资料 6 大源] --> S1[1 收集 明确边界]
    S1 --> S2[2 转格式 优先 Markdown]
    S2 --> S3[3 OCR 转写]
    S3 --> S4[4 清洗 7 个动作]
    S4 --> S5[5 命名 日期-主题-来源]
    S5 --> S6[6 打元数据 时间分类]
    S6 --> S7[7 入库 + 5 探针验证]
    S7 --> Healthy[健康的知识库]

记住三句话:

  1. 垃圾进 = 垃圾出——80% RAG 失败来自数据;
  2. 数据准备比工具选择更重要——用最差的工具 + 最好的数据 > 用最好的工具 + 最差的数据;
  3. 建库不是终点,验证才是——每次入库都跑 5 个探针问题。

6.11 下一章预告

数据准备好了,工具搭好了——下一章我们讲怎么"问"

很多人以为"我会聊天就会用 RAG"——大错特错。

知识库提问是一门专门的手艺:5 大句式模板、"先 Plan 后查"两步法、引用核对、多轮追问。

下一章你会学到一套提问框架——让你的知识库回答准确率立刻翻倍