实用工具

RAG 文本切块工具

按 LangChain RecursiveCharacterTextSplitter 的算法把文档切成带重叠的文本块,并且能正确识别中文标点。

浏览器本地运行AI 开发工具14.6万
免费

输入

0 B

结果

结果会显示在这里。

文档怎么切,决定了 RAG 系统能检索到什么:在句子中间断开、或者把两个话题混在一起的文本块,再好的向量模型也检索不好。这个工具让你在建索引之前先看到切块结果。它逐行移植自 LangChain 的 RecursiveCharacterTextSplitter(langchain-ai/langchain,MIT)——大多数 RAG 教程和流水线的起点——我们的测试确认它在英文、中文和中英混排文本上,无论按字符还是按 Token 计长,切出的块都与 Python 库完全一致。

它是怎么工作的

  • 先在文本中出现的第一个分隔符处切开——空行、换行,然后是句末标点、分句标点和空格——仍然过长的片段再用下一级分隔符继续切。
  • 中文的句末和分句标点(。!?;,)都在分隔符列表里,而且每个分隔符都留在它结束的那一段末尾,所以一个块会以句号结尾,而不是下一个块以句号开头。
  • 然后把片段合并到接近块大小,每个新块开头会带上前一块结尾中能放进重叠长度的部分,和 LangChain 的做法一样。
  • 长度按 Unicode 码点计算(与 Python 的 len() 相同),也可以按 cl100k_base Token 计算;输出为 JSON,包含每块的序号、起始位置、长度和文本。

你的数据去了哪里

哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。

本工具免费且无需登录,运行结果只存在于你当前的页面里,不会被保存到任何地方。

它要花多少

本工具完全免费,不需要登录,也不消耗积分。

常见问题

在我的 Python 流水线里能得到一样的结果吗?
能,只要参数相同:RecursiveCharacterTextSplitter(chunk_size=…, chunk_overlap=…, separators=["\n\n", "\n", "。", "!", "?", ". ", "! ", "? ", ";", "; ", ",", ", ", " ", ""], keep_separator="end")。按 Token 模式时再加上用 tiktoken cl100k_base 计数的 length_function。LangChain 自带的默认分隔符不认识中文标点,这正是中文用默认设置切得很差的原因。
块大小和重叠设多少合适?
常见的起点是 500–1,000 个字符,或 200–400 个 Token,重叠 10%–20%。块越小匹配越精确,但每次命中带的上下文越少;块越大则相反。拿你的真实文档在这里试一试,逐块读一遍:每一块都应该能独立看懂。
为什么有的块开头的重叠比设定的少?
重叠长度是上限而不是保证。切分器只会整段整段地带过去,并且会从前面丢弃片段,直到下一段能放进块大小为止,所以一个长句可能让重叠部分完全放不下。LangChain 的行为也是这样。
支持按 Markdown 标题切分或语义切分吗?
不支持。它做的是递归字符切分,也就是大多数流水线的默认做法。按标题切分和基于向量的语义切分需要不同的逻辑,语义切分还需要一个向量模型;在这里,空行和标题本身就是最强的切分边界。

背后的开源项目

本工具是独立实现,并未打包第三方库。langchain-ai/langchain(MIT)在代码层面做的是同一件事——如果你需要在自己的程序里实现它,从那里开始,而不是调用一个网页。

langchain-ai/langchain

也常被称作

  • rag 切块
  • 文本切分工具
  • 文档分块
  • chunk size overlap
  • recursivecharactertextsplitter
  • langchain 文本切分