RAG技术在文本处理领域应用广泛,其中文本切分是决定检索与生成质量的核心环节。本教程将带你系统掌握RAG中的文本切分策略,从原理到实战,帮助你选择最适合业务场景的切分方式。

一、什么是 RAG
RAG 是一种融合了检索(Retrieval)和生成(Generation)的 AI 技术。其典型流程通常包含以下几个阶段:
- 文本切分(Text Splitting)
- 向量化编码(Embedding)
- 存入向量数据库(如 FAISS / Chroma / Milvus 等)
- 检索相似文段
- 生成回答
二、为什么要进行文本切分
大模型(如 GPT)无法直接检索整篇文档,我们必须先将文档切分成大小合适的段落(chunk),再对每个段落进行嵌入(embedding)。切分过细会丢失上下文;切分过粗则会导致嵌入不准确或超出上下文窗口限制。
文本切分在 RAG 中至关重要,切分不当可能引发以下问题:
- ✂️ 打断语义单位(例如将一个句子拦腰截断)
- ? 降低召回准确率
- ? 导致 LLM 理解不完整,输出质量变差
文本切分的核心目标是:
- 将大文档划分为若干小块(chunk),便于嵌入(Embedding)与后续的检索(Retrieval)。
- 切分越合理,检索结果越精准。
三、文本切分策略
分块三要素
| 要素 | 说明 | 推荐值 |
|---|---|---|
| 块大小 | 每段文字的长度 | 200-500字 |
| 块重叠 | 相邻块重复的内容量 | 10%-20% |
| 切分依据 | 按句子/段落/语义划分 | 语义分割效果最佳 |
分块策略对比表
| 策略类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 固定大小 | 实现简单 | 可能切断完整语义 | 技术文档 |
| 按段落分割 | 保持逻辑完整性 | 段落长度差异大 | 文学小说 |
| 语义分割 | 确保内容完整性 | 计算资源消耗较大 | 专业领域文档 |
LlamaIndex 提供了多个内置的 TextSplitter 类,以应对不同语言与结构的文档。
常用切分器:
| TextSplitter 类型 | 适用情况 | 中文支持 |
|---|---|---|
| SentenceSplitter | 按语句分割(适合自然语言) | ✅ 很适合中文 |
| TokenTextSplitter | 按 Token 数量分块 | ✅ 精确控制 LLM 输入 |
| SentenceWindowNodeParser | 句子窗口法(重叠段) | ✅ 适合上下文连续的文档 |
| SemanticSplitterNodeParser | 基于语义切分(用小模型判断) | ✅ 高级但稍慢 |
四、推荐切分策略组合
- 简单文档:使用 SentenceSplitter + 固定 chunk size
- 上下文要求高:采用 SentenceWindowNodeParser 句子窗口,保持上下文连续
- 高质量 QA:选择 SemanticSplitterNodeParser,语义分块(需额外安装小模型)
