RAGチャンク計算機
10,000トークンの文書を512トークンのチャンク、64トークンのオーバーラップで分けると、チャンクは23個、埋め込みトークンは合計11,408で、そのうち12.3%が重複です。チャンク数 = 1 + 切り上げ((文書トークン - チャンクサイズ) ÷ (チャンクサイズ - オーバーラップ))、合計 = 文書トークン + (チャンク数 - 1) × オーバーラップ。
使い方
- 文書の長さ(トークンまたは文字数)、チャンクサイズ、オーバーラップを入力します。費用も知りたい場合は、埋め込みの100万トークンあたりの料金も入れてください。
- チャンク数、埋め込みに送るトークンの合計、オーバーラップで繰り返されるトークン数を確認します。
- 切れ目の位置を見るには、実際の文章を貼ります。ブラウザ内でトークン化し、最初のチャンクをオーバーラップ部分を強調して表示します。
計算方法
チャンクの開始位置の間隔は、チャンクサイズからオーバーラップを引いた値です。文書が1チャンクに収まるなら1個、そうでなければ チャンク数 = 1 + 切り上げ((文書トークン - チャンクサイズ) ÷ 間隔) です。
2個目以降のチャンクは直前のチャンクの末尾オーバーラップ分を繰り返すため、埋め込む合計 = 文書トークン + (チャンク数 - 1) × オーバーラップ になります。重複の割合は (チャンク数 - 1) × オーバーラップ ÷ 合計 です。最後のチャンクは残りなので、たいてい短くなります。
文字数は1トークン4文字で換算します。OpenAIが英語の文章について示している目安です。日本語やコード、数字は1文字あたりのトークンが多いので、正確な数は文章を貼って確認してください。
貼った文章は、実際のバイトペア符号化の表(js-tiktoken)でブラウザ内でトークン化します。プレビューは同じ規則でトークン列を窓ごとに切り、文字に戻して表示します。固定サイズの窓は文や段落の境界を見ません。境界を守る分割方法ではチャンクの長さが不揃いになり、数も変わります。
費用 = 埋め込みトークン ÷ 1,000,000 × 入力した100万トークンあたりの料金。料金は埋め込み提供元の料金ページで確認してください。
よくある質問
チャンクサイズとオーバーラップはどのくらいがよいですか。
決まった値はありません。数百トークンから1,000トークン前後のサイズに、10〜20%ほどのオーバーラップがよく使われます。小さいチャンクは検索が正確ですが保存するベクトルが増え、大きいチャンクは文脈を多く持てる一方で一致がぼやけることがあります。実際の質問で試してください。
オーバーラップを付けると埋め込みの料金は増えますか。
増えます。重なった部分は2回埋め込まれます。10,000トークンの文書を512トークンのチャンク、64トークンのオーバーラップで分けると、送る11,408トークンのうち1,408トークン(12.3%)が重複で、文書そのものより14.1%多く埋め込むことになります。
チャンク数は正確ですか。
ここで使う規則(固定サイズのトークン窓)なら正確です。文、段落、見出しで分けるライブラリはチャンクの大きさが不揃いなので数が変わります。文字からトークンへの換算は推定です。
トークナイザーはどれを選びますか。
使う埋め込みモデルのものを選びます。OpenAIのtext-embedding-3はcl100k_baseです。他社モデルのトークナイザーはここにないため、数は参考値です。
入力した文章はサーバーに送られますか。
いいえ。数える処理もプレビューもブラウザ内で行います。トークナイザーの表はこのサイトから1回だけ読み込みますが、文章は送信されません。