SoSoraEndo2025年7月9日1 min219 字
chunk が大きいと
512 トークン以上にすると、1 つの chunk に複数のトピックが混ざる。クエリと意味的に近い chunk を選んでも、半分は関係ない情報が入る確率が上がる。
chunk が小さすぎると
128 以下にすると、文の途中で切れる。文脈が断絶して、再構成(generation)の質が下がる。
256 が「ちょうどいい」根拠
- 日本語で約 200 字 / 英語で約 350 単語 — 1 段落分
- 文の境界で切りやすく、文脈が保たれる
- top-K=5 でも 1280 トークン → context window に余裕
オーバーラップを 64 入れる
def chunk(text, size=256, overlap=64):
out = []
i = 0
while i < len(text):
out.append(text[i:i+size])
i += size - overlap
return out
段落をまたぐ文脈損失を防げる。
まとめ
RAG の chunk size は「トピック分離 vs 文脈保持」のバランス。256 は多くのコーパスで局所最適。違う領域なら実測で動かす。