文本分块(Chunking)指将长文档按一定规则切分成更小、语义自洽的文本片段(Chunk)的过程。在RAG系统中,知识库文档只有先被分块并向量化,才能在检索时被高效召回。
为什么分块如此重要
- 大模型上下文有限,不能把整本书直接塞进提示词
- 检索以块为单位,块切得好坏直接决定“能不能找到正确答案”
- 块太大:混入无关内容,稀释相关性;块太小:信息破碎,语义不完整
常用分块方法
- 固定长度:按字符或Token数硬切,简单但容易切断语义
- 递归字符分块:按段落、句子等自然边界逐级切分(如LangChain默认方案)
- 语义分块:借助嵌入模型检测语义边界,保证块内主题一致
- 结构化分块:按Markdown标题、HTML标签、表格等文档结构切分
实践建议
- 先看文档类型再定策略:新闻按段落、代码按函数、合同按条款
- 块大小通常为数百到上千Token,需要配合检索效果调优
- 可加入重叠(Overlap)避免切断关键信息
- 分块策略往往要与嵌入模型、检索方式配合反复实验
趋势
语义分块与结构化分块正成为主流,分块质量已从“被忽视的细节”变成RAG优化的重要抓手。