完整题目
在RAG或文档处理项目中,文本分块(chunking)有哪些常用策略?请比较不同分块方法的优缺点和适用场景。
答案要点
- 固定长度分块(Fixed-size):实现简单但可能切断语义
- 递归分块(Recursive):按层级结构分割,保留上下文
- 语义分块(Semantic):基于语义相似度,切分更自然但计算成本高
- 文档结构感知(Document-specific):利用标题、段落等天然边界,适合结构化文档
- 重叠窗口(Overlap)策略缓解边界信息丢失问题
文本分块是RAG系统的关键预处理环节,直接影响检索质量和生成效果。常用策略可分为以下几类:
1. 固定长度分块(Fixed-size Chunking)
- 按固定token数或字符数切分,具体长度作为候选变量
- 优点:实现极简,便于批量处理,向量化效率高
- 缺点:硬截断可能切断句子语义,边界信息易丢失
- 适用:快速原型、对语义连贯性要求不高的场景
2. 递归分块(Recursive/Hierarchical)
- 按段落→句子→词的层级递归切分,优先在天然边界(换行、句号)处分割
- 优点:保留文档层级结构,块内语义相对完整
- 缺点:块大小不均匀,可能产生过短块
- 适用:Markdown、HTML等有结构标记的文档
3. 语义分块(Semantic Chunking)
- 先按句子切分,计算相邻句子embedding相似度,低相似度处作为切分点
- 优点:切分点符合语义边界,检索相关性高
- 缺点:计算成本高,需预设相似度阈值