背景介绍
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
主要分割器类型与代码示例
- HTML Splitter - 按HTML标签(h1、h2、h3等)分割
- WebHTML Splitter - 从URL获取HTML并分割
- Character Splitter - 按字符分割文本
- Code Splitter - 支持Python、JavaScript、TypeScript等多种编程语言
- Markdown Splitter - 按Markdown语法结构分割
- Markdown Header Splitter - 按Markdown标题层级分割
- JSON Splitter - 递归分割JSON数据
选择建议
在选择时应考虑:
- 文本特征(结构化/非结构化)
- 下游任务需求(是否需语义完整)
- 处理效率要求
- 目标模型的token限制
高级用法还包括组合使用多种splitters,比如先用CharacterTextSplitter按章节分割,再用TokenTextSplitter确保每章符合token限制。