RAG核心学习总结:文本分块(Chunking)
学习RAG技术时,文本分块(Chunking)是数据准备阶段的关键,其质量直接决定检索精度,却常被忽视。结合学习实践,本文精简总结分块的核心知识,帮大家快速掌握从原理到落地的关键要点。
一、为什么必须做文本分块?
直接将整篇文档丢给大模型不可行,核心原因有两个:
1. 上下文窗口限制
大模型单次处理文本长度有限(主流128k-1M token),一份200页的知识库易超出上限,导致文本截断、费用飙升或响应延迟。
2. 检索精度不足
整份文档信息噪音多,用户精准提问(如"生鲜能否七天无理由退货")时,大模型易找错重点。RAG核心是"先检索再生成",分块就是将文档切成可精准检索的小单元。
二、分块核心认知与关键参数
分块位于文本提取(如Apache Tika)与向量化之间,核心是将长文本切成大小合适、语义完整的Chunk,关键参数有两个:
1. chunkSize(块大小)
指每个分块的长度上限(单位:字符/ token),核心是权衡精度与完整性:
- 过大:易混入无关内容,检索精度下降;
- 过小:易切断语义,丢失上下文。
经验参考:2001000字符,问答场景偏小(200500),摘要场景偏大(500~1000)。
2. overlap(重叠量)
相邻分块的共享文本长度,用于避免边界语义断裂,通常设为chunkSize的10%~25%,过大会增加存储成本。
三、5种主流分块策略
| 策略类型 | 核心原理 | 优缺点 | 适用场景 |
|---|---|---|---|
| 固定大小分块 | 按固定字符数硬切,不考虑语义 | 优点:简单高效;缺点:易切断语义 | 日志、纯数据文本,或兜底方案 |
| 重叠分块 | 固定分块基础上,保留相邻块重叠区域 | 优点:缓解边界断裂;缺点:增加存储成本 | 通用入门场景 |
| 递归分块 | 按分隔符优先级(段落→换行→句号等)逐层切割 | 优点:兼顾语义与大小;缺点:依赖分隔符 | 绝大多数场景(知识库、产品手册) |
| 语义分块 | 用Embedding/LLM判断语义相似度,话题切换处切割 | 优点:精度最高;缺点:成本高、有延迟 | 法律、医疗等高精度需求场景 |
| 混合分块 | 组合多种策略,按需适配不同文档 | 优点:效果最优;缺点:实现复杂 | 企业级复杂知识库 |
总结
分块是RAG的基础,5种策略各有定位:递归分块是多数场景的默认选择,语义分块适用于高精度需求,混合分块适配企业级场景。参数需结合文档类型微调,核心是平衡"块大小"与"语义完整性",为后续向量化和检索打好基础。