一文讲透RAG中的文档切分
今天我们来聊一聊,做RAG的时候,那件看起来最基础、最没技术含量、却藏着80%效果坑的小事——文档切分。
今天我们来聊一聊,很多人刚接触RAG时,对这件事的普遍误区。
相信很多做RAG的朋友,刚上手的时候,都会把重心放在那些看起来更“核心”的环节:选什么大模型、怎么写更精妙的Prompt、换更好的嵌入模型,总觉得这些才是决定效果的关键。
而文档切分这件事,大多时候都被当成了个无足轻重的体力活,随手甩给开发,一句“把文档切成块存向量库”就完事了。开发那边也大多图省事,直接固定长度一刀切,统一按几百字处理,简单去重就入库,根本没人把它当成需要仔细打磨的核心环节。
今天我们来聊一聊,这种一刀切的偷懒做法,到底会踩多少坑。
我见过太多团队,都是这么一路走到测试环节,然后直接全线翻车。
用户问一个明确的规则,机器人只回了一半的前提条件,照着操作根本解决不了问题;问当下的活动规则,机器人召回了半年前的旧内容,一不小心就会出大问题;再比如问一个完整的处理流程,机器人把好几个不相关的内容混在一起,答非所问,用户越看越懵。
一开始大家都会惯性归因,觉得是Prompt写得不到位,改了一版又一版,加了一堆限制条件,效果却几乎没什么起色。又换了好几款主流的嵌入模型,折腾半天,效果提升微乎其微,整个团队都卡在瓶颈里,找不到问题到底出在哪。
直到沉下心,把所有翻车的案例一条一条拆开看,才会发现,绝大多数的回答错误,根源都在召回的内容块上——要么信息不全、语义被硬生生拆断,要么混进了无关内容,逻辑全乱了,说到底,全是文档切分环节埋的雷。
今天我们来聊一聊,想要做好切分,到底该从哪里先入手。
很多人找到问题之后,第一反应就是急着改代码、调参数,换更复杂的切分方式,但其实这么做,还是治标不治本。
真正要做好这件事,第一步从来不是动手切,而是先把规则定清楚。拉上所有跟知识库相关的人,先理明白:我们的知识库到底分哪几类,每一类的内容边界是什么,什么样的内容能入库,什么样的内容绝对不能进;再定好统一的文档格式规范,标题层级、列表表格怎么写,都有明确的标准,让后续的切分能精准识别文档里的结构和逻辑,而不是对着一堆杂乱无章的内容瞎切。
今天我们来聊一聊,切分之前,最容易被大家跳过的关键步骤。
很多人定完规则就急着切,却忽略了前置的预处理环节,其实80%的坑,都能在这个环节提前避免。
我们完全可以把预处理做成入库的强制门槛,所有要入库的文档,先确认内容是准确的、时效内的、合规的,再做自动化清洗,去掉页眉页脚、空行乱码这些没用的脏数据,把表格、图片里的文字都提取出来,统一转成标准格式,从源头就把无效内容清掉,不要把问题带到后面的环节。
今天我们来聊一聊,到底该怎么选切分方式,真的不是一套参数走天下。
很多人踩完一刀切的坑,就走向另一个极端,非要找一个万能的切分方式,其实根本不存在这种东西。
不同类型的内容,对应的用户诉求完全不一样,本来就该用不一样的切分策略。
比如简单的问答内容,用户要的是精准的答案,那就按文档结构拆,单个问答做一个独立的内容块,粒度小一点;比如严谨的产品规则,要保证信息完整不遗漏,那就用递归切分,先按大的结构拆,再一点点细化,最后用固定长度兜底;比如时效性强的活动内容,最怕新旧混淆,那就按单个活动拆成独立单元,再拆成小的知识点;比如合规要求高的流程内容,要保证上下文连贯,就可以把递归切分和语义切分结合起来,只在最需要的地方用语义切分。
当然也没必要全量用语义切分,毕竟它的算力消耗大,处理速度慢,全量用会拉高很多成本,也拖慢内容更新的效率,用到真正需要的地方,平衡好效果和成本就好。
今天我们来聊一聊,切分完之后,绝对不能省的最后一道关。
很多人切分完就直接入库上线,这也是很多项目上线后效果忽上忽下的原因。
切分完成,不代表这些内容就是合格的,我们完全可以搭一套简单的校验机制:先过自动化过滤,清掉空的、太短的、没意义的内容块;再找熟悉业务的人做人工抽检,看语义是不是完整,逻辑有没有问题;最后再用用户常问的高频问题、风险高的问题做个测试,确认没问题了,再入库上线,不达标就绝对不放开,能帮我们避开很多上线后的麻烦。
今天我们来聊一聊,上线之后,切分这件事也远没有结束。
很多人觉得上线了就万事大吉,其实不是的。业务在变,用户的问题在变,切分的规则自然也要跟着迭代。
日常可以多看看那些回答出错、用户不满意的案例,拆开看是不是切分的问题,及时调整;定期跟熟悉业务的同事一起复盘,微调切分策略;内容更新也要按定好的流程走,不能随便上传文档就入库;隔一段时间做一次全量的内容梳理,清掉过期的内容,优化切分规则,适配新的业务场景。
今天我们聊了这么多,其实说到底,不管是做RAG,还是做其他的AI产品,很多时候决定最终效果的,从来不是那些看起来很炫、很前沿的技术概念。
用户不会管你背后用了多厉害的技术,他们只会在意,你能不能准确、快速地解决他的问题。把这些基础的、看起来不起眼的小事做扎实、做闭环,反而比堆多少技术概念都有用。
今天就跟大家聊到这里啦,之后也会一直用这种聊天的方式,跟大家唠唠做AI产品的那些踩坑日常和实在经验,我们下次再见。