跳到主要内容
文本分割器是通用文本的推荐选项。它通过一个字符列表进行参数化,并尝试按顺序使用这些字符进行分割,直到块足够小。默认列表是["\n\n", "\n", " ", ""]。这样做可以尽可能地将所有段落(然后是句子,然后是单词)保持在一起,因为这些通常被认为是语义上最强的相关文本片段。
  1. 文本如何分割:通过字符列表。
  2. 块大小如何衡量:通过字符数。
下面我们展示使用示例。
npm install @langchain/textsplitters
要直接获取字符串内容,请使用.splitText 要创建LangChain Document 对象(例如,用于下游任务),请使用.createDocuments
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";

const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 100, chunkOverlap: 0 })
const texts = splitter.createDocuments([{ pageContent: "..." }])
[
  { pageContent: "...", metadata: {} },
]
让我们回顾一下上面为RecursiveCharacterTextSplitter设置的参数
  • chunkSize:块的最大大小,大小由lengthFunction决定。
  • chunkOverlap:块之间的目标重叠。重叠块有助于在上下文在块之间分割时减少信息丢失。

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

一些书写系统没有词边界,例如中文、日文和泰文。使用默认的分隔符列表["\n\n", "\n", " ", ""]分割文本可能会导致单词在块之间被分割。为了保持单词的完整性,您可以覆盖分隔符列表以包含额外的标点符号
  • 添加 ASCII 句号“.”、Unicode 全角句号“”(用于中文文本)和表意句号”(用于日文和中文)
  • 添加用于泰语、缅甸语、高棉语和日语的零宽度空格
  • 添加 ASCII 逗号“,”、Unicode 全角逗号“”和 Unicode 表意逗号“
const splitter = new RecursiveCharacterTextSplitter({
  separators: [
    "\n\n",
    "\n",
    " ",
    ".",
    ",",
    "\u200b",  // Zero-width space
    "\uff0c",  // Fullwidth comma
    "\u3001",  // Ideographic comma
    "\uff0e",  // Fullwidth full stop
    "\u3002",  // Ideographic stop
    "",
  ],
});

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.