> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 递归分割 - 文本分割器集成指南

此[文本分割器](/oss/javascript/integrations/splitters/)是通用文本的推荐选择。它通过一个字符列表进行参数化。它会按顺序尝试在这些字符上分割，直到块足够小。默认列表为 `["\n\n", "\n", " ", ""]`。这会产生尽可能保持所有段落（然后是句子，然后是单词）在一起的效果，因为这些通常在语义上是关联最强的文本片段。

1. 文本如何分割：按字符列表。
2. 块大小如何衡量：按字符数。

下面我们展示使用示例。

<CodeGroup>
  ```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  npm install @langchain/textsplitters
  ```

  ```bash pnpm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pnpm install @langchain/textsplitters
  ```

  ```bash yarn theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  yarn add @langchain/textsplitters
  ```

  ```bash bun theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  bun add @langchain/textsplitters
  ```
</CodeGroup>

要直接获取字符串内容，请使用 `.splitText`。

要创建 LangChain [Document](https://reference.langchain.com/javascript/langchain-core/documents/Document) 对象（例如，用于下游任务），请使用 `.createDocuments`。

```ts theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";

const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 100, chunkOverlap: 0 })
const texts = splitter.createDocuments([{ pageContent: "..." }])
```

```javascript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
[
  { pageContent: "...", metadata: {} },
]
```

让我们来看一下上面为 `RecursiveCharacterTextSplitter` 设置的参数：

* `chunkSize`：块的最大大小，大小由 `lengthFunction` 决定。
* `chunkOverlap`：块之间的目标重叠。重叠的块有助于减轻当上下文被分割到不同块中时的信息损失。

## 分割没有词边界的语言文本

某些书写系统没有[词边界](https://en.wikipedia.org/wiki/Category:Writing_systems_without_word_boundaries)，例如中文、日文和泰文。使用默认分隔符列表 `["\n\n", "\n", " ", ""]` 分割文本可能会导致单词被分割到不同的块中。为了保持单词在一起，你可以覆盖分隔符列表以包含额外的标点符号：

* 添加 ASCII 句点 "`.`"、[Unicode 全角](https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_\(Unicode_block\))句点 "`．`"（用于中文文本）和[表意句点](https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation) "`。`"（用于日文和中文）
* 添加用于泰文、缅甸文、高棉文和日文的[零宽空格](https://en.wikipedia.org/wiki/Zero-width_space)。
* 添加 ASCII 逗号 "`,`"、Unicode 全角逗号 "`，`" 和 Unicode 表意逗号 "`、`"

```ts theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const splitter = new RecursiveCharacterTextSplitter({
  separators: [
    "\n\n",
    "\n",
    " ",
    ".",
    ",",
    "\u200b",  // 零宽空格
    "\uff0c",  // 全角逗号
    "\u3001",  // 表意逗号
    "\uff0e",  // 全角句点
    "\u3002",  // 表意句点
    "",
  ],
});
```

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs)通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/integrations/splitters/recursive_text_splitter.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
