RAG系统里最容易被忽视、但对效果影响最大的环节,不是向量数据库、不是Embedding模型,而是文本分块。

固定长度分块

最简单的方法是按字符数切分,每500个字符一块,重叠100个字符。优点是实现简单,缺点是可能在句子中间切断。

递归字符分块

LangChain的RecursiveCharacterTextSplitter按分隔符优先级递归切分:先按段落,再按换行,再按句号,最后按字符。尽量在自然边界处切断,保持语义完整。

语义分块

计算相邻句子的Embedding相似度,当相似度突然下降时说明话题转换,在此处切断。效果最好,成本也最高。

分块大小怎么选

技术文档信息密度高,300-500字符效果好。对话记录逻辑跳跃大,200-300字符更合适。长文报告逻辑连贯,600-1000字符更合适。重叠比例通常设为10%-20%。

我的建议

先用RecursiveCharacterTextSplitter、chunk_size=500、chunk_overlap=100作为起点,在测试集上评估检索效果。效果不理想再调整。分块策略是值得反复调优的环节。