介绍
文本分割器是连接 文件加载器 和 大模型/向量库 的关键组件,核心解决三大问题:
适配大模型上下文窗口:将 超长文本 拆分成符合 大模型 tokens 限制的小片段(如 GPT-3.5 4k tokens),避免超出上下文导致报错;
保证语义完整性:尽可能按自然语义边界(段落、句子、标题)拆分,避免“2025年销售额500万”被拆成两段,确保大模型能理解完整语义;
提升检索精度(RAG 核心):拆分后的小文本片段存入向量库后,检索时能精准匹配用户问题(而非检索整个大文本),提升问答准确率。
常用文本分割器
RecursiveCharacterTextSplitter
递归字符分割器
特点:
- 按「优先级分隔符列表」递归拆分(先按段落/换行,再按标点,最后硬截断);
- 兼顾「长度限制」和「语义完整」,适配多语言(尤其中文);
- 可自定义长度计算方式(字符数/tokens)、重叠长度。
适用场景:
- 通用长文本拆分(Word/PDF/CSV/纯文本);
- 中文文本拆分(支持中文标点分隔符);
- RAG 场景的核心分割器(90%场景首选);
- 无固定格式的长文本(如企业报告、小说、新闻)。
CharacterTextSplitter
基础字符分割器
特点:
- 简单按固定字符数硬截断,无语义判断;
- 配置极简,仅需指定拆分长度和分隔符;
- 速度极快,但易切断语义。
适用场景:
- 无结构纯文本(如日志文件、简单笔记);
- 对语义完整性要求低的场景(如文本批量统计);
- 快速原型测试(无需精细拆分)。
TokenTextSplitter
Token 分割器
特点:
- 按大模型 tokens 数拆分(而非字符数),精准适配上下文窗口;
- 基于 tiktoken 库计算 tokens,支持主流模型(GPT-3.5/GPT-4);
- 硬截断,不考虑语义边界。
适用场景:
- 精准适配大模型 tokens 限制的场景(如 GPT-4o 128k tokens);
- 英文文本拆分(tokens 计算对英文更精准);
- 对长度要求极高的生产环境(避免超出 tokens 上限)。
MarkdownHeaderTextSplitter
Markdown 标题分割器
特点:
- 按 Markdown 标题层级拆分(# 一级标题、## 二级标题);
- 拆分后保留标题元数据(如“标题:一、概述”);
- 适配 Markdown 结构化文本。
适用场景:
- Markdown 文档拆分(如技术文档、知识库、博客);
- 按章节/标题拆分文本(如教程、手册);
- 需要保留标题上下文的 RAG 场景(如“提取某章节的内容”)。
SentenceTransformersTokenTextSplitter
嵌入模型 Token 分割器
特点:
- 按嵌入模型的 tokens 限制拆分(如 BERT/ERNIE 模型的 512 tokens);
- 适配 向量嵌入场景,避免嵌入模型报错;
- 兼顾语义,优先按句子拆分。
适用场景:
- 文本嵌入向量库前的拆分(如用 Sentence-BERT 生成嵌入);
- 适配开源嵌入模型的长度限制;
- 中文文本嵌入的精准拆分。
NLTKTextSplitter
NLTK 句子分割器
特点:
- 基于 NLTK 库按「句子」拆分(而非字符/tokens);
- 语义拆分精度高,支持多语言;
- 需安装 NLTK 依赖,速度稍慢。
适用场景:
- 对句子完整性要求高的场景(如法律文档、学术论文);
- 英文文本拆分(NLTK 对英文句子分割更精准);
- 需按完整句子分析的场景(如情感分析、文本摘要)。
SpacyTextSplitter
Spacy 语义分割器
核心特点:
- 基于 Spacy 库按「语义块/名词短语」拆分,最贴合自然语言逻辑;
- 支持自定义拆分粒度(句子/段落/语义块);
- 依赖重(需安装 Spacy 模型),配置复杂。
适用场景:
- 高精度语义拆分(如医疗文档、法律合同);
- 多语言复杂文本拆分(如多语种报告);
- 对拆分精度要求极高的企业级场景。
CodeSplitter
代码分割器
特点:
- 按代码语法结构拆分(函数、类、模块、注释);
- 支持主流编程语言(Python/Java/JS);
- 保留代码语法上下文。
适用场景:
- 代码文件拆分(如 Python 脚本、开源项目代码);
- 代码问答/分析场景(如“提取某函数的功能”);
- 开发者知识库构建(代码片段检索)。
选型参考表
| 分割器类型 | 核心优势 | 核心缺点 | 首选场景 |
|---|---|---|---|
| RecursiveCharacterTextSplitter | 语义+长度兼顾,适配中文 | 配置稍多 | 通用长文本、RAG、中文文本 |
| CharacterTextSplitter | 简单快速 | 切断语义 | 无结构纯文本、快速测试 |
| TokenTextSplitter | 精准适配 tokens 限制 | 硬截断、英文优先 | 大模型精准适配、英文文本 |
| MarkdownHeaderTextSplitter | 按 MD 标题拆分,保留结构 | 仅适配 MD 格式 | Markdown 文档、章节化文本 |
| CodeSplitter | 按代码语法拆分 | 仅适配代码文件 | 代码分析、开发者知识库 |
总结
- 核心选型原则:90%的通用场景选
RecursiveCharacterTextSplitter,中文场景需配置中文分隔符; - 精准适配:需匹配大模型 tokens 选
TokenTextSplitter,嵌入模型选SentenceTransformersTokenTextSplitter; - 结构化文本:Markdown 选
MarkdownHeaderTextSplitter,代码选CodeSplitter; - 极简需求:无结构纯文本选
CharacterTextSplitter,快速测试首选。