乐于分享
好东西不私藏

RAG越用越差?90%的人踩了「文档切散」的坑!

RAG越用越差?90%的人踩了「文档切散」的坑!

最近好多朋友跟我吐槽:辛辛苦苦搭的RAG知识库,检索出来的内容要么断章取义,要么上下文全不搭,明明文档里写了完整答案,AI偏偏揪着半句输出错误信息。
排查一圈才发现,大部分问题的根源居然是第一步就踩了坑——把文档硬生生切散了。就像把一本故事书按每500字暴力剪开,扔一堆碎页让AI找答案,它能拼出完整剧情才怪。
今天这篇文章,就给大家把「避免文档切散」的实操方法讲透,新手也能直接上手用。
一、90%的人都在犯的切分误区
很多人搭RAG的第一步,就是丢个PDF进去,选个默认的「500字符切分」,直接跑流程。结果出来的全是毛病:
  • 好好的产品条款被从中间劈开,前半句说“普通用户不享受优先服务”,后半句“2小时响应”跑到下一个碎片里,AI直接理解成所有用户都有2小时响应;
  • PDF里的表格被拆成乱序文字,信息碎得拼不起来;
  • 页眉页脚的重复内容被单独切成块,占了一半的检索资源,根本找不到关键内容。
本质问题不是切分工具不行,是你上来就拿原始文件硬切,连文档的结构都没看懂,怎么可能切出完整语义块?
二、第一步:先“收拾”文档,别上来就切
在动手切之前,先给文档做个“体检”预处理,能直接避开一半的坑:
1. 过滤无效噪声:用布局分析工具自动识别页眉页脚、广告水印、目录链接这些没用的内容,只留下正文部分,别让垃圾内容混进知识库;
2. 理顺阅读顺序:碰到多栏排版的说明书、竖排的古籍文档,先把文字顺序按人类阅读逻辑排好,不然切出来的内容是乱序的,连不起来;
3. 统一格式标记:把文档里的一级标题、二级标题、列表项都打上标记,相当于给文档画好“分割线”,后面切分时顺着这些线走就行。
三、核心操作:用“语义切分+重叠保护”,拒绝暴力碎块
预处理完别直接用固定长度硬切,两个简单操作就能保住内容完整性:
  • 顺着自然边界切:优先按句号、段落换行、标题层级切,比如用Markdown切分工具,碰到 ## 3.2 售后政策 就自动作为一个新块的开头,每个块天然是一个完整的主题,不会把同个政策拆成两半;
  • 加10%~20%的重叠窗口:比如你设定每个块500字,就让下一个块从上一个块的末尾100字开始,相当于两个相邻块有100字的内容重复。这样就不会出现关键的产品型号、合同编号被刚好切到两个块中间,两边都漏信息的情况。
四、进阶大招:哪怕切得细,也能把碎片拼回完整语境
如果你做的是高精度检索场景,需要把切分粒度压得很小来提升检索准确率,也完全不用怕信息散掉,两个方案直接补全语境:
1. 父子文档索引法:把200字的小碎片作为“子块”用来精准检索,只要命中某个子块,系统自动关联它所属的“父块”——也就是把一整节甚至一整页的完整内容,AI拿到的就是没被截断的全量信息;
2. 给碎片补“身份说明”:用大模型提前给每个小碎片生成一句上下文摘要,比如“这段内容摘自2024版企业服务协议第5章,描述的是付费用户的售后响应规则”,再把摘要和碎片内容拼在一起向量化,就算是单个小碎片,AI也能知道它在整个文档里的定位,不会跑偏。
最后想跟大家说:RAG的体验好不好,从来不是看你切分的块有多小有多密,而是看每个块的语义是否完整,检索到的内容能否顺理成章拼成用户能看懂的答案。
别上来就暴力切文档了,按这几步调整完,你家RAG的回答准确率至少能涨30%。