:文档切分策略——递归、语义、Agent 式切分对比)
148、RAG 检索增强生成(二):文档切分策略——递归、语义、Agent 式切分对比一个让我熬夜到凌晨三点的切分Bug上周帮团队排查一个RAG系统的召回率问题,用户问“Python的GIL锁对多线程性能影响有多大”,系统愣是返回了一段关于“Python内存管理”的文档。我盯着日志看了半小时,发现根源出在文档切分上——一个包含GIL、内存管理、垃圾回收三个主题的长段落,被硬生生从中间切开了。更离谱的是,切分点正好落在“GIL锁”和“内存管理”之间,导致检索时语义完全错位。这种问题在RAG系统里太常见了。文档切分不是简单的“把长文本切成小块”,切得不好,再牛的Embedding模型也救不了召回率。今天我就把三种主流切分策略——递归切分、语义切分、Agent式切分——的实战对比和踩坑记录写下来。递归切分:最朴素的“一刀切”递归切分是LangChain等框架的默认方案,核心逻辑就是:按分隔符优先级递归切割。比如先按段落(\n\n)切,段落太长再按句子(.)切,句子还长就按字符数硬切。# 别这样写——硬编码分隔符列表defnaive_recursive_split