LangChain教程:文本分割器

介绍

文本分割器是连接 文件加载器 和 大模型/向量库 的关键组件,核心解决三大问题:

  1. 适配大模型上下文窗口:将 超长文本 拆分成符合 大模型 tokens 限制的小片段(如 GPT-3.5 4k tokens),避免超出上下文导致报错;

  2. 保证语义完整性:尽可能按自然语义边界(段落、句子、标题)拆分,避免“2025年销售额500万”被拆成两段,确保大模型能理解完整语义;

  3. 提升检索精度(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 按代码语法拆分 仅适配代码文件 代码分析、开发者知识库

总结

  1. 核心选型原则:90%的通用场景选 RecursiveCharacterTextSplitter,中文场景需配置中文分隔符;
  2. 精准适配:需匹配大模型 tokens 选 TokenTextSplitter,嵌入模型选 SentenceTransformersTokenTextSplitter;
  3. 结构化文本:Markdown 选 MarkdownHeaderTextSplitter,代码选 CodeSplitter;
  4. 极简需求:无结构纯文本选 CharacterTextSplitter,快速测试首选。

原文出处:/show_1GW2rOdn8h1Q.html