Text splitting #
LangChain提供了多种不同类型的文本分割器。它们都在langchain-text-splitters
包中。
表格列说明:
- Name: 文本分割器的名称
- Classes: 实现该文本分割器的类
- Splits On: 该文本分割器如何分割文本
- Adds Metadata: 该文本分割器是否会添加每个文本块来源的元数据
- Description: 分割器的描述,包括建议何时使用它
Name | Classes | Splits On | Adds Metadata | Description |
---|---|---|---|---|
Recursive | RecursiveCharacterTextSplitter, RecursiveJsonSplitter | 用户定义字符列表 | 递归分割文本。这种分割方法试图将相关的文本片段保持在一起。这是推荐的文本分割方式。 | |
HTML | HTMLHeaderTextSplitter, HTMLSectionSplitter | HTML特定字符 | ✅ | 基于HTML特定字符分割文本。特别是,这会添加关于该文本块来源的相关信息(基于HTML)。 |
Markdown | MarkdownHeaderTextSplitter | Markdown特定字符 | ✅ | 基于Markdown特定字符分割文本。特别是,这会添加关于该文本块来源的相关信息(基于Markdown)。 |
Code | many languages | 代码(Python, JS)特定字符 | 基于编码语言特定字符分割文本。可选择15种不同的语言。 | |
Token | many classes | Tokens | 基于词元分割文本。存在几种不同的词元度量方式。 | |
Character | CharacterTextSplitter | 用户定义字符 | 基于用户定义的字符分割文本。这是较简单的一种方法。 | |
Semantic Chunker (Experimental) | SemanticChunker | 句子 | 首先按句子分割文本,然后将相邻的句子合并在一起,如果它们在语义上足够相似。来源于Greg Kamradt的想法。 | |
Integration: AI21 Semantic | AI21SemanticTextSplitter | ✅ | 识别形成连贯文本片段的独立主题,并沿这些主题进行分割。 |