Skip to content
LangChain 文档版本 跟随上游 源快照 810f1ccb 更新于 2026-10-08

文本分割器集成

使用 LangChain 与文本分割器集成。

bash
pip install -U langchain-text-splitters
bash
uv add langchain-text-splitters

文本分割器将大型文档拆分成更小的块,这些块可以单独检索,并且能适配模型的上下文窗口限制。

拆分文档有多种策略,每种策略都有各自的优势。

TIP

对于大多数用例,请从 RecursiveCharacterTextSplitter 开始。它在保持上下文完整与管理块大小之间提供了良好的平衡。这一默认策略开箱即用效果很好,只有当需要针对特定应用微调性能时,才应考虑调整它。

基于文本结构

文本天然地组织成段落、句子和词语等层级单元。我们可以利用这种固有结构来指导拆分策略,从而创建既能保持自然语言流畅性、又能保持拆分内部语义连贯,并且能适应不同文本粒度级别的拆分。LangChain 的 RecursiveCharacterTextSplitter 实现了这一概念:

  • RecursiveCharacterTextSplitter 尝试保持较大单元(例如段落)完整。
  • 如果某个单元超出块大小,它会移动到下一层级(例如句子)。
  • 如有必要,此过程会一直继续到词语级别。

示例用法:

python
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=0)
texts = text_splitter.split_text(document)

可用的文本分割器:

基于长度

一种直观的策略是根据文档长度进行拆分。这种简单而有效的方法确保每个块不超过指定的大小限制。基于长度拆分的主要优点:

  • 实现简单直接
  • 块大小一致
  • 易于适配不同的模型要求

基于长度的拆分类型:

  • 基于 token:根据 token 数量拆分文本,在处理语言模型时很有用。
  • 基于字符:根据字符数量拆分文本,在不同类型的文本之间可以更加一致。

使用 LangChain 的 CharacterTextSplitter 进行基于 token 拆分的示例实现:

python
from langchain_text_splitters import CharacterTextSplitter

text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
    encoding_name="cl100k_base", chunk_size=100, chunk_overlap=0
)
texts = text_splitter.split_text(document)

可用的文本分割器:

基于文档结构

有些文档具有固有的结构,例如 HTML、Markdown 或 JSON 文件。在这些情况下,根据文档结构进行拆分是有益的,因为它通常能自然地归组语义相关的文本。基于结构拆分的主要优点:

  • 保留文档的逻辑组织结构
  • 在每个块内保持上下文
  • 对检索或摘要等下游任务可能更有效

基于结构拆分的示例:

  • Markdown:根据标题(例如 #、##、###)拆分
  • HTML:使用标签拆分
  • JSON:按对象或数组元素拆分
  • 代码:按函数、类或逻辑块拆分

可用的文本分割器:


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。