固定长度、递归字符、语义分块和结构分块怎么选?RAG Chunk策略对比
文章摘要
Chunk策略决定了RAG系统能够检索到什么、丢失什么,以及大模型最终看到多少完整上下文。固定长度分块实现简单但容易切断条款;递归字符分块通用性强;语义分块边界自然但成本较高;结构分块最适合制度、合同和技术文档,却依赖可靠的文档解析。本文从边界质量、实现成本、检索效果、元数据和适用文档等维度对比四种策略,并给出企业项目的组合方案。
一、Chunk不是越大越好
Chunk过小:
- 条件与结论分离;
- 标题与正文分离;
- 上下文不足;
- 召回结果数量增加;
- 重排成本增加。
Chunk过大:
- 包含大量无关内容;
- 向量语义变得模糊;
- 正确答案在片段中不突出;
- Token成本增加;
- 多个主题混在一起。
理想Chunk应该满足:
语义相对完整 +主题相对单一 +包含必要条件 +适合Embedding模型 +可追溯到原文二、固定长度分块
按照字符或Token数量切分:
每500 Token切一块 重叠100 Token伪代码:
deffixed_chunks(tokens:list[str],chunk_size:int,overlap:int)->list[list[str]]:chunks=[]start=0whilestart<len(tokens):end=start+chunk_size chunks