ツール
入力
結果
結果はここに表示されます。文書をどう切り分けるかで、RAG システムが何を検索できるかが決まります。文の途中で切れたチャンクや 2 つの話題が混ざったチャンクは、埋め込みモデルがどれほど優秀でも良い検索結果になりません。このツールを使えば、何かをインデックスする前にチャンクを確認できます。多くの RAG チュートリアルやパイプラインの出発点になっている LangChain の RecursiveCharacterTextSplitter(langchain-ai/langchain、MIT)を 1 行ずつ移植したもので、英語、中国語、混在テキストについて、文字数でもトークン数でも、Python ライブラリとまったく同じチャンクになることをテストで確かめています。
動作のしくみ
- テキストは、その中に現れる最初の区切り文字で分割されます。順番は空行、改行、文末、節の区切り、空白です。それでも長すぎる断片は、次の区切り文字でさらに分割されます。
- 中国語の文や節の句読点(。!?;,)も区切り文字のリストに含まれ、各区切り文字はそれが閉じる断片の末尾に残ります。そのため、次のチャンクが句点で始まるのではなく、チャンクが句点で終わります。
- その後、断片をチャンクサイズまでまとめ、LangChain と同じく、新しいチャンクの先頭には前のチャンクの末尾をオーバーラップに収まる分だけ入れます。
- 長さは Python の len() と同じ Unicode コードポイント、または cl100k_base のトークンで数えます。出力は、各チャンクの番号、開始位置、長さ、テキストを含む JSON です。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- 自分の Python パイプラインでも同じチャンクになりますか?
- はい、同じ設定なら同じになります。RecursiveCharacterTextSplitter(chunk_size=…, chunk_overlap=…, separators=["\n\n", "\n", "。", "!", "?", ". ", "! ", "? ", ";", "; ", ",", ", ", " ", ""], keep_separator="end") です。トークンモードでは、tiktoken の cl100k_base で数える length_function を追加してください。LangChain のデフォルトの区切り文字は中国語の句読点を考慮しないため、中国語のテキストはうまく分割されません。
- チャンクサイズとオーバーラップはどう設定すればよいですか?
- よくある出発点は 500〜1,000 文字、または 200〜400 トークンで、オーバーラップは 10〜20% です。チャンクが小さいほど一致は精密になりますが、1 件あたりの文脈は少なくなり、大きいとその逆になります。ここで実際の文書を試してチャンクを読んでみてください。それぞれが単独で意味をなしている必要があります。
- オーバーラップから想定されるより短いチャンクができることがあるのはなぜですか?
- オーバーラップは上限であり、保証ではないからです。スプリッターは断片を丸ごとしか引き継がず、次の断片がチャンクサイズに収まるまで先頭から断片を捨てていきます。そのため、長い文があるとオーバーラップの余地がまったく残らないこともあります。LangChain も同じ動作です。
- Markdown の見出しによる分割やセマンティックチャンキングに対応していますか?
- いいえ。対応しているのは再帰的な文字分割で、多くのパイプラインがデフォルトで使っているものです。見出しを考慮する分割や埋め込みベースのセマンティック分割には別のロジックが必要で、セマンティックの場合は埋め込みモデルも必要です。このツールでも、空行と見出しはすでに最も強い区切りとして働きます。
背後にあるオープンソース
このツールは外部ライブラリを同梱しない独自実装です。langchain-ai/langchain(MIT)はコードとして同じ仕事をします。自分のプログラムで同じことをしたいなら、Web ページを呼ぶのではなくそちらから始めてください。
langchain-ai/langchain別の呼び方
- チャンク分割
- RAG チャンク サイズ
- RecursiveCharacterTextSplitter
- LangChain テキスト分割
- チャンク オーバーラップ
- text chunker