RAG 文档切分核心思路
文档切分的核心逻辑是「先保语义,再控大小,最后补细节」,全程遵循「3 步核心流程」,所有操作都围绕「不破坏语义、适配检索」展开,具体步骤如下。
第一步:先做「语义分层」(最核心,避免切碎知识点)
无论什么类型的文档,先不考虑长度,优先按「文档本身的语义边界」拆分,这是 RAG 切分的核心原则------语义完整永远比"凑长度"更重要。
- 核心逻辑:找到文档的「天然语义边界」(标题、章节、段落、条款、对话轮次),按边界拆分,确保每个拆分后的单元能独立表达一个完整的意思(比如一个章节、一个步骤、一个条款、一轮对话)。
- 关键动作:先识别文档结构(是否有标题、条款、表格、代码块),再按结构拆分,不盲目按字符数切割。
第二步:再做「长度优化」(适配模型,不超限制)
语义拆分后,通常会出现两种情况:① 单个语义单元过长(超过模型输入限制);② 单个语义单元过短(碎片化,检索无意义)。此时进行针对性优化:
- 超长处理:对超过模型适配长度的语义单元,进行「递归切分」(按更小的语义边界,比如段落→句子→标点),不硬断句子、不破坏逻辑。
- 过短处理:对过短的语义单元(如单个句子、零散短语),在「同语义层级」内合并(比如同一章节下的短段落合并),避免碎片化。
具体切割大小,根据不同的文档类型有差距,会在后续章节单独说明。
第三步:最后补「细节保障」(落地性、可追溯)
长度优化后,补充 2 个关键细节,确保切分结果可落地、可调试:
- 重叠设置:相邻 Chunk 保留一定重叠(5%~10%),避免关键信息(如步骤、参数、条款)落在切口上,导致检索漏招。
- 元数据补齐:给每个 Chunk 添加元数据(标题、父标题、文件名、块序号),便于后续检索溯源、问题定位。