背景介绍

LangChain提供了多种类型的Text Splitters,以满足不同的文本处理需求:

1. RecursiveCharacterTextSplitter

  • 工作原理:从文本的第一个字符开始,按照预定义的字符顺序(如换行符、句号等)进行递归分割
  • 特点优势:可以自定义chunk_size和chunk_overlap参数,支持渐进式分割策略
  • 典型应用:处理混合格式文档(如PDF转文本)

2. CharacterTextSplitter

  • 核心功能:支持完全自定义的分隔符列表,默认包含[“\n\n”, “\n”, ” ”]
  • 配置选项:可调整separator参数指定优先分割符号,keep_separator控制是否保留分隔符

3. RecursiveTextSplitter

  • 分词机制:基于spaCy等NLP工具进行语义分词,而非简单的字符分割
  • 显著优势:能保持词语完整性,避免在词语中间切断

4. TokenTextSplitter

  • 技术基础:使用OpenAI的tiktoken库进行精确的token计数
  • 独特价值:完全匹配LLM的token处理方式,确保输入长度限制
  • 关键应用:GPT等大模型API调用前的文本预处理

安装依赖

pip install -qU langchain-text-splitters

主要分割器类型与代码示例

  1. HTML Splitter - 按HTML标签(h1、h2、h3等)分割
  2. WebHTML Splitter - 从URL获取HTML并分割
  3. Character Splitter - 按字符分割文本
  4. Code Splitter - 支持Python、JavaScript、TypeScript等多种编程语言
  5. Markdown Splitter - 按Markdown语法结构分割
  6. Markdown Header Splitter - 按Markdown标题层级分割
  7. JSON Splitter - 递归分割JSON数据

选择建议

在选择时应考虑:

  • 文本特征(结构化/非结构化)
  • 下游任务需求(是否需语义完整)
  • 处理效率要求
  • 目标模型的token限制

高级用法还包括组合使用多种splitters,比如先用CharacterTextSplitter按章节分割,再用TokenTextSplitter确保每章符合token限制。