ストーリー
チャンキングの基本原則
なぜチャンキングが重要か
| チャンクが小さすぎる場合 | チャンクが大きすぎる場合 |
|---|---|
| コンテキストが失われる | ノイズが増える |
| 回答に必要な情報が分断される | 検索精度が低下する |
| チャンク数が増えストレージコスト増 | LLMのトークン効率が悪化 |
チャンクサイズのトレードオフ:
小 ←──────── チャンクサイズ ────────→ 大
精度高・網羅性低 精度低・網羅性高
コンテキスト不足 ノイズ多い
最適なゾーン: 200〜1000トークン(ユースケース依存)
主要なチャンキング手法
1. 固定長チャンキング
最もシンプルな手法。文字数やトークン数で均一に分割します。
| 設定項目 | 推奨値 | 説明 |
|---|---|---|
| チャンクサイズ | 500〜1000トークン | ドキュメントの種類に応じて調整 |
| オーバーラップ | 50〜200トークン | チャンク間の情報欠落を防ぐ |
固定長チャンキング(オーバーラップあり):
原文: [AAAAAA|BBBBBB|CCCCCC|DDDDDD]
チャンク1: [AAAAAA|BB] ← オーバーラップ部分
チャンク2: [BB|BBBBBB|CC]
チャンク3: [CC|CCCCCC|DD]
チャンク4: [DD|DDDDDD]
メリット: 実装が簡単、処理が高速 デメリット: 文の途中で切れる、意味的な区切りを無視
2. セマンティックチャンキング
テキストの意味的な区切りに基づいて分割する手法です。
セマンティックチャンキングの仕組み:
1. 文単位に分割
2. 各文のEmbeddingを計算
3. 隣接する文のコサイン類似度を計算
4. 類似度が閾値を下回る箇所で分割
文1 ── 0.92 ── 文2 ── 0.88 ── 文3 ── 0.35 ── 文4 ── 0.91 ── 文5
↑
ここで分割(閾値: 0.5)
→ チャンク1: [文1, 文2, 文3]
→ チャンク2: [文4, 文5]
メリット: 意味的に一貫したチャンクが生成される デメリット: Embedding計算のコスト、閾値の調整が必要
3. 構造ベースチャンキング
ドキュメントの構造(見出し、段落、セクション)に基づいて分割する手法です。
構造ベースチャンキング(Markdown例):
# RAGシステム設計
## 1. アーキテクチャ ← セクション単位でチャンク化
本文テキスト...
## 2. ベクトルDB ← 新しいチャンク開始
本文テキスト...
### 2.1 選定基準 ← サブセクションは親に含めるか独立させるかを判断
本文テキスト...
メリット: ドキュメントの論理構造を保持 デメリット: 構造がないドキュメントには適用できない、セクションサイズのばらつき
4. 階層的チャンキング(Parent-Child)
大きなチャンク(Parent)と小さなチャンク(Child)を階層的に管理する手法です。
階層的チャンキング:
[Parent Chunk] 1000トークン
├── [Child Chunk 1] 200トークン ← 検索はChild単位
├── [Child Chunk 2] 200トークン
├── [Child Chunk 3] 200トークン
├── [Child Chunk 4] 200トークン
└── [Child Chunk 5] 200トークン
検索時: Childで類似度検索 → マッチしたChildの親Parentを取得 → ParentをLLMに渡す
メリット: 検索精度(小チャンク)とコンテキスト量(大チャンク)の両立 デメリット: インデックスサイズが増大、実装が複雑
チャンキング戦略の比較
| 手法 | 実装難易度 | 精度 | コスト | 適するドキュメント |
|---|---|---|---|---|
| 固定長 | 低 | 中 | 低 | 均質なテキスト |
| セマンティック | 中 | 高 | 中(Embedding計算) | 長文の記事、レポート |
| 構造ベース | 低〜中 | 高 | 低 | Markdown、HTML、技術文書 |
| 階層的 | 高 | 非常に高 | 中 | 長い技術文書、マニュアル |
オーバーラップ設計
チャンク間のオーバーラップは、情報の欠落を防ぐための重要なパラメータです。
| オーバーラップ率 | 効果 | コスト影響 |
|---|---|---|
| 0%(なし) | 境界で情報が途切れるリスク | 最小 |
| 10〜20% | 基本的な情報欠落の防止 | 低 |
| 20〜30% | 推奨。多くのケースで効果的 | 中 |
| 30%以上 | 冗長性が高くなる | 高(ストレージ・検索コスト増) |
「オーバーラップは保険のようなものだ。かけすぎるとコストが嵩むが、かけないと事故が起きる。20%が出発点として妥当だ」 — 田中VPoE
NetShop社への適用
| ドキュメント種別 | 推奨チャンキング | チャンクサイズ | オーバーラップ |
|---|---|---|---|
| 技術文書(Markdown) | 構造ベース | セクション単位(500〜800トークン) | 10% |
| 議事録 | 固定長 + 時間ベース | 500トークン | 20% |
| FAQ | Q&Aペア単位 | 1ペア=1チャンク | なし |
まとめ
| ポイント | 内容 |
|---|---|
| チャンキングの重要性 | RAGの検索品質を最も大きく左右する工程 |
| 主要手法 | 固定長、セマンティック、構造ベース、階層的の4種類 |
| オーバーラップ | 20%が推奨の出発点。情報欠落とコストのバランス |
| 選定基準 | ドキュメントの種類と構造に応じて手法を選択 |
チェックリスト
- 4種類のチャンキング手法の特徴を理解した
- チャンクサイズとオーバーラップのトレードオフを理解した
- 階層的チャンキングの仕組みと利点を理解した
- ドキュメント種別に応じた戦略選定ができる
次のステップへ
次は「メタデータ抽出とエンリッチメント」を学びます。チャンクにメタデータを付加することで、フィルタリングや検索精度の向上が可能になります。
推定読了時間: 30分