RAG・検索基盤

チャンク戦略とは|40文字ごとに切ったら、5問中2問で語と答えが離れた

チャンク戦略とは何を決めるのか細かく切ると何が起きるのか重なりを持たせると変わるのか

文書を検索できるようにするには、まずどの単位で切るかを決めます。ここを機械的に決めると、答えが隣の塊に逃げます。

506文字の本文で試したところ、40文字ごとに切った場合は5問中2問で、問いの語と答えの数値が別の塊に入りました。

この記事の要点

  • 40文字ごとに切ると5問中3問しか同じ塊に入らない
  • 80文字ごと以上なら5問すべて入る
  • 行ごとに切れば平均39文字で5問すべて
  • 同じ平均文字数でも切る位置で結果が変わる

40文字ごとに切ったら、5問中2問で語と答えが離れた

本文506文字を5通りに分けて実際に数えました。40文字ごとでは3問、行ごとなら5問すべてが同じ塊に入ります。

チャンク戦略の良し悪しを、実際に切って数えました。用意したのは社内規程を模した本文506文字と、問い5件です。

分割も判定も本当に実行しています。数えたのは問いの語と、答えの数値が、同じ塊に入っているかです。

javascript
const FIND = [
  { q: ['宿泊費', '12000'], name: '宿泊費の上限' },
  { q: ['日帰り', '1000'], name: '日帰りの日当' },
  { q: ['前払', '7営業日'], name: '前払の期限' },
  { q: ['備品', '5000'], name: '備品の上限' },
  { q: ['報告書', '3営業日'], name: '報告書の期限' },
];
// 語と答えが両方そろう塊が1つでもあれば、その問いは当たり
const hit = (chunks) => FIND.filter(({ q }) => chunks.some((c) => q.every((w) => c.includes(w)))).length;
text
本文 506文字を分け方を変えて切り、問いの語と答えが同じ塊に入るかを数える

分け方              かたまり数  平均文字数  語と答えが同じ塊に入った数
40文字ごと                  13個        39文字                 3 / 5
80文字ごと                   7個        72文字                 5 / 5
160文字ごと                  4個       127文字                 5 / 5
行ごと                     13個        39文字                 5 / 5
行ごと+前行20字               13個        39文字                 5 / 5

1行目と4行目を見比べてください。どちらも13個・平均39文字なのに、3問と5問で違います

文字数ではなく位置

この2行が示しているのが要点です。塊の数も大きさも同じで、違うのは切る位置だけ。それで当たり方が変わります。

40文字ごとに切ると、1つの決まりの途中で切れます。「日帰りは1000円とする」の「1000」の前で切れれば、語と答えが別の塊になります。

大きく切れば当たる、ただし

80文字ごとにすると5問すべて当たりました。切れ目が決まりをまたがなくなるためです。160文字ごとでも当たります

代償は渡す量です。160文字ごとでは平均127文字で、行ごとの39文字の3倍以上あります。関係のない決まりも一緒に渡すことになります。

重なりの効果は出なかった

正直に書いておくと、行ごとに前の行の20文字を足した設定でも、数字は5問のままでした。すでに5問すべて当たっているので、伸びしろがありません。

重なりが効くのは、切れ目が決まりの途中に来てしまう場合です。40文字ごとの設定に重なりを足せば、3問から増える可能性があります。

塊の数も大きさも同じ。違うのは切る位置だけ。

単位: 問40文字ごと(平均39文字)3問行ごと(平均39文字)5問80文字ごと(平均72文字)5問160文字ごと(平均127文字)5問問い5件での実測。40文字ごとと行ごとは、塊の数も平均文字数も同じで切る位置だけが違う。
図1 ── 分け方ごとの、語と答えが同じ塊に入った問いの数
出典Elasticsearch Reference「Similarity settings」2026-08-18 確認
b Controls to what degree document length normalizes tf values.
原文Elasticsearch Reference「Similarity settings」 この内容の有効期限2027-02-18

チャンク戦略とは何を決めるのか

文書を切る単位と位置、そして重なりを持たせるかどうかです。この3つが検索の当たり方を決めます。

チャンク戦略は、文書を検索できる単位に切り分けるときの決め方です。切った塊が、検索の対象にも、AIに渡す単位にもなります。

決めるのは3つ

  1. どこで切るか。文字数か、意味の区切りか
  2. どのくらいの大きさにするか。渡す量に効く
  3. 重なりを持たせるか。境目の取りこぼしを減らす
  4. 切らずに丸ごと渡す。渡す量が制御できない

前の節で効いたのは1番目でした。2番目を同じにしても、1番目が違えば結果が変わります

検索の計算にも効く

塊の大きさは、検索の点の付け方にも影響します。多くの検索方式は文書の長さで点を割るためです。

Elasticsearchでも、文書の長さが語の出現回数をどの程度打ち消すかを制御する値が用意されています。塊の大きさがばらつくと、この補正の効き方もばらつきます

検索と回答で必要な大きさが違う

見落としやすい点があります。検索に適した大きさと、AIに渡すのに適した大きさは同じとは限りません

検索は小さいほうが的が絞れます。回答は前後の文脈があったほうが正確です。この食い違いを、親子の関係で解く形もあります。

余談 外した問いから切り方が決まる

測ってみて有効だったのは、当たらなかった問いについて、どこで切れているかを実際に見ることでした。前の節でも、40文字ごとの設定で外した2問は、数値の直前で切れていました。切り方の直し方が、そこから決まります。

出典Elasticsearch Reference「Similarity settings」2026-08-18 確認
k1 Controls non-linear term frequency normalization (saturation).
原文Elasticsearch Reference「Similarity settings」 この内容の有効期限2027-02-18

チャンク戦略でよくある失敗

文字数だけで決めることです。同じ文字数でも切る位置が違えば、当たり方は変わります。

チャンク戦略でいちばん多い失敗は、文字数を決めて終わりにすることです。前の節のとおり、同じ39文字でも3問と5問に分かれます。

外れ方が静か

この失敗は表に出にくい種類です。検索としては塊が返ってきます。エラーも出ません。

返ってきた塊に答えの数値が入っていないだけです。AIはその塊を読んで、書いてある範囲で答えます。数値が切れていることは指摘されません

確かめ方

確かめるのは簡単です。実際に聞かれる問いを5件用意し、問いの語と答えが同じ塊に入るかを数える。前の節でやったことです。

この判定はコードで書けます。同じ塊に両方が含まれるかを見るだけなので、変更のたびに回せます。試験の作り方はシミュレーション評価の記事で扱っています。

大きくして解決しない

外れたときに塊を大きくするのは、応急処置としては効きます。ただし渡す量が増え、関係のない記述も一緒に入ります

前の節では、160文字ごとにすると平均127文字になりました。行ごとの39文字と比べて3倍以上です。当たったかどうかだけでなく、渡す量も並べて見てください。渡す量と費用の関係はLlamaIndexの記事で扱っています。

文字数を決めても、切る位置を決めたことにはならない。

充足 2 / 4意味の区切りで切っている同じ平均39文字でも、行ごとなら5問、機械的な40文字ごとなら3問実際の問いで確かめている語と答えが同じ塊に入るかはコードで判定できる。変更のたびに回せる文字数だけを決めて終わりにしている切る位置が決まらない。数値の直前で切れても検索としては成功する外れたら塊を大きくして済ませている160文字ごとでは平均127文字。行ごとの3倍以上を毎回渡すことになる本文506文字・問い5件での実測にもとづく。行ごとに切ると平均39文字で5問すべて当たった。
図2 ── 分け方を決めるときの点検項目
出典Elasticsearch Reference「Similarity settings」2026-08-18 確認
BM25 similarity ( default ) TF/IDF based similarity that has built-in tf normalization and is supposed to work better for short fields (like names).
原文Elasticsearch Reference「Similarity settings」 この内容の有効期限2027-02-18

よくある質問

何文字で切るのが正解ですか
文字数では決まりません。この計測では、平均39文字でも切る位置が意味の区切りなら5問すべて当たり、機械的に40文字で切ると3問でした。
大きく切れば安全ではないですか
当たりやすくはなります。ただし1回に渡す量が増えます。160文字ごとに切ると平均127文字になり、行ごとの39文字の3倍以上でした。
重なりを持たせると良くなりますか
この計測では、行ごとに切った時点で5問すべて当たっていたため、重なりを足しても数字は変わりませんでした。境目で切れている場合には効きます。
どう確かめればよいですか
実際に聞かれる問いを用意して、問いの語と答えが同じ塊に入るかを数えてください。この記事の計測はその形です。

まとめ

  • チャンク戦略は文書をどの単位で切るかの決め方
  • 40文字ごとでは5問中3問しか同じ塊に入らない
  • 行ごとに切れば平均39文字で5問すべて
  • 決め手は文字数ではなく切る位置

今日から始められること

  1. 実際に聞かれる問いを5件用意する
  2. 問いの語と、答えが書かれている箇所を書き出す
  3. 今の分け方で、両方が同じ塊に入るかを数える
  4. 入らない問いについて、どこで切れているかを見る

実務で組んだチャンク戦略のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る