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 一键同步,或 WeReadKit、chatlog 等工具导出;
- 小红书 / 知乎收藏:用 小红书爬虫工具、知乎收藏夹导出 等工具。
持续抓取
- 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 项自检:
文件级(针对每份文件)
- 文件能不能选中文字?(不能 → OCR)
- 文件名符合"日期-主题-来源-版本"规则吗?
- 有没有打分类标签?
- 有没有打日期元数据?
- 文件大小是不是合理(一般 < 50 MB / 份)?
知识库级(针对整个库)
- 知识库有没有写"用途说明"?
- 文件总数 < 500 吗?(超过考虑分库)
- 总大小 < 1 GB 吗?(超过考虑分库或换工具)
- 有没有重复文件?
- 入库后跑了 5 个探针问题吗?
- 跑了 5 个业务问题,准确率 > 80% 吗?
- 有没有备份知识库元数据?
12 项全部打勾,你的数据准备就合格了。
6.8 实战案例:把 1000 份家电说明书做成"家电助手"
我们用一个完整的例子串起来。
场景
老张家里有 30 件家电——洗衣机、冰箱、空调、空气净化器、扫地机器人……
每件家电都有一本说明书。
平时坏了一查就是一上午——翻箱倒柜找说明书。
数据准备
- 收集:把 30 件家电的说明书全部找出来;
- 转格式:纸质的拍照 / 扫描成 PDF(用手机自带"扫描文档"功能);
- OCR:用白描批量 OCR;
- 清洗:把"安全声明、保修卡、广告页"删掉,只留"使用说明、故障排查";
- 命名:
[品牌]-[型号]-[品类]-说明书.pdf,例如:海尔-EG10014BD959GU1-洗衣机-说明书.pdf小米-M7Pro-扫地机器人-说明书.pdf美的-KFR-72LW-空调-说明书.pdf
- 元数据:每份打"品牌 / 品类 / 购买日期 / 保修期"4 个标签;
- 入库:传到 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[健康的知识库]
记住三句话:
- 垃圾进 = 垃圾出——80% RAG 失败来自数据;
- 数据准备比工具选择更重要——用最差的工具 + 最好的数据 > 用最好的工具 + 最差的数据;
- 建库不是终点,验证才是——每次入库都跑 5 个探针问题。
6.11 下一章预告
数据准备好了,工具搭好了——下一章我们讲怎么"问"。
很多人以为"我会聊天就会用 RAG"——大错特错。
知识库提问是一门专门的手艺:5 大句式模板、"先 Plan 后查"两步法、引用核对、多轮追问。
下一章你会学到一套提问框架——让你的知识库回答准确率立刻翻倍。