本文へスキップ

RAG のためのチャンク化戦略

ウェブサイト RAG 向けの高精度なチャンク化を設計する:固定・セマンティック・階層・適応の各戦略と評価。

chunking • rag • retrieval • embeddings

チャンク化は、正規化された生のページコンテンツを検索単位に変換します。選択を誤ると、コストが膨らんだり(断片が多すぎる)、recall が低下したり(ブロックが大きすぎる)、精度が薄まったり(境界での分断)します。普遍的に最良の手法は存在せず、戦略はコーパスの構造、変動性、クエリパターンに合わせます。本ガイドは、本番 RAG パイプラインのための設計空間、トレードオフ、評価ワークフロー、最適化レバーを整理します。

なぜチャンク化が重要なのか

目標:

  • 関連する事実が top‑k 検索に現れる確率を最大化する。
  • 生成された回答が根拠を持つよう、セマンティックな結束性を維持する。
  • token 利用を最適化する(定型文を繰り返し埋め込まない)。
  • 決定論的な増分更新を可能にする(安定したチャンク ID)。

整合しないチャンク化は次のように現れます:高い冗長性、低い Recall@k、境界での幻覚的な事実、膨らんだ embedding 費用。

固定ウィンドウのチャンク化

単純な N‑token ウィンドウ(例:500 token)。利点:決定論的で、実装が容易、更新挙動が安定。欠点:境界が概念を断ち切る。切り詰めを減らすために冗長なオーバーラップが必要 → コスト増。控えめに使用すること。セマンティックな信号が信頼できない、不均質または構造の乏しいコンテンツに対する良いベースラインです。

オーバーラップするスライディングウィンドウ

ウィンドウサイズ W にオーバーラップ O(例:500 / 50 token)を加えると、境界での事実の切り詰めが減ります。約 15% を超えるオーバーラップは recall の向上が逓減する一方、インデックスサイズを積み増します。O を下方に調整するため、duplication_ratio = distinct_token_count / total_token_count を追跡します。

セマンティック境界検出

構造的信号に沿って分割します:H2/H3 見出し、リストのグループ化、コードブロック、テーブルの境界。最小/最大 token の境界を強制します(小さすぎる兄弟要素は結合し、大きすぎるセクションは分割)。利点:高い結束性、オーバーラップの削減。リスク:不正な markup、一貫性のない見出し階層。階層の修復 + 見出しが欠けている場合の段落分割へのフォールバックで緩和します。

階層的チャンク化

二層インデックス:粗いセクション embedding(例:チュートリアルのセクション全体)+ 細粒度のサブチャンク。検索フロー:粗い ANN → 上位 N セクションを絞り込み → その中で細かい検索。利点:大規模コーパスのグローバル検索空間を縮小し、レイテンシを改善。複雑さ:可動部分が増え、カスケードスコアリングのロジックが必要。

適応的 / 動的チャンク化

局所的なセマンティック密度と構造的手がかりに基づいてチャンクサイズを調整します。ロジックの例:見出しセクションから開始し、>800 token なら → セマンティック類似度でスコアリングした段落クラスタで分割、<120 token なら → トピックの乖離が閾値を超えない限り次の兄弟要素と結合。embedding または類似度の事前パスが必要です。取り込み時に一度コストを払い、長期的な検索効率の向上と引き換えにします。

embedding に関する考慮事項

メタデータを保持します:token_count、model_version、content_hash。切り詰めを避けること——token を事前計算し、モデル呼び出しの前に分割します。密なモデルは過剰な定型文で劣化します。チャンク化の前にナビゲーションの残骸を取り除きます。低信号の断片(再結合の候補)を浮かび上がらせるため、vector_density(一意な用語 / token)を監視します。

評価手法

戦略ごとのベンチマーク:

指標目的
Recall@k事実の保持
Precision@kコンテキストのノイズ
チャンク数コスト指標
重複率オーバーラップの調整
チャンクあたり平均 token 数ウィンドウの活用度
レイテンシ(検索)インデックス効率

ゴールドクエリセットで実行します。recall の向上がコストとレイテンシの差分を上回る場合にのみ戦略を採用します。

実装プレイブック

  1. ベースライン:固定 500 + 10% オーバーラップ。ベンチマークを収集。
  2. セマンティック境界を導入:見出しが信頼できる箇所でウィンドウを置き換え、再計測。
  3. コーパスが 250k チャンク超、またはレイテンシが目標超なら階層レイヤーを追加。
  4. 分散の大きいセクションサイズに対して適応ロジックを展開。
  5. 四半期ごとの再評価:品質デルタあたりのコストを新しいモデル能力と比較。

ロールバックのため、反復ごとにチャンクマニフェストの diff を保存します。

重要なポイント

  • 精度/コストでは、通常セマンティック境界が純粋な固定ウィンドウを上回る。
  • オーバーラップはダイヤルである——重複を測定し、推測しない。
  • 階層的検索は、レイテンシの線形増加なしにスケールするのを助ける。
  • 安定したチャンク ID は、安全な増分 embedding 更新を可能にする。
  • 戦略変更はコードデプロイのように評価する:ベンチマーク、比較、ログ。