ドキュメントの読み込みとチャンク分割
目的
ドキュメントを読み込み、内容をできるだけ完全にチャンク分割することで、後続の検索の完全性と質問応答の正確性を向上させること
各ファイル形式に対応するローダー処理
| ファイル拡張子 | 取得ロジック |
|---|---|
| デフォルト:ページごとにテキストおよび画像を抽出 | |
| OCR: テキストを抽出しMDに変換 | |
| .docx | MD形式に変換し、ヘッダーとフッターを除去 |
| .doc | docxファイルに変換して処理 |
| .xlsx/.xls | 各シート、各セルの内容を取得して連結 |
| .pptx/.ppt | PDFに変換して処理 |
| .txt | 直接テキストを読み込み |
| .md | 直接テキストを読み込み |
| .htm/.html | 未対応 |
チャンク分割戦略
固定長チャンク分割
最も直接的な戦略は、ドキュメントの長さに基づいて分割する方法です。このシンプルかつ効果的な方法は、各データチャンクが設定されたサイズ制限を超えないことを保証します。 長さに基づく分割の主な利点は以下の通りです:
- 実装が簡単
- チャンクサイズが均一
- 様々なモデルのニーズに適応しやすい
再帰的チャンク分割
自然言語テキストは通常、段落、文、単語などの階層的な単位で構成されています。この構造を活用し、意味の連続性を保ちながら異なる粒度のテキストに適応する分割戦略を策定できます。 大きな単位(例:段落)を優先的に保持します。もし単位がチャンクサイズ制限を超える場合は、次のレベル(例:文)に分割します。さらに分割が必要な場合は単語レベルに進みます。
セマンティックチャンク分割
これまでの方法とは異なり、セマンティックに基づく分割はテキストの内容により注目します。他の方法がドキュメントやテキスト構造を利用して間接的に意味を表現するのに対し、この方法はテキストの意味内容を直接分析します。実装方法は複数ありますが、核心的な考え方はテキストの意味が大きく変わる箇所で分割することです。例えば、スライディングウィンドウ技術を用いてテキスト埋め込みを生成し、これらの埋め込みを比較して意味的な大きな差異を検出します: まず、最初の数文の埋め込みを生成します。 次に、スライディングウィンドウを次の文のグループに移動し、新しい埋め込みを生成します。 これらの埋め込みを比較し、顕著な差異を検出すると、意味的な「断点」が存在する可能性を示します。 この技術により、意味的により一貫したテキストチャンクを生成でき、検索や要約などの下流タスクの性能向上が期待されます。