Skip to main content

ドキュメントのロードと分割

目的

ドキュメントをロードし、内容をできるだけ完全に分割することで、後続の検索の完全性とQ&Aの正確性を高めることを目的とします。

各ファイル形式に対応するローダー処理

ファイル拡張子取得ロジック
.pdfデフォルト:ページごとにテキストと画像を抽出
OCR: テキストを抽出しMDに変換
.docxMD形式に変換、ヘッダーとフッターを除去
.docdocxファイルに変換して処理
.xlsx/.xls各シート・各セルの内容を結合して取得
.pptx/.pptPDFに変換して処理
.txtテキストを直接読み込み
.mdテキストを直接読み込み
.htm/.html現時点では未対応

分割戦略

固定長分割

最も直接的な戦略は、ドキュメントの長さに基づいて分割することです。このシンプルかつ効果的な方法により、各データブロックが設定されたサイズ制限を超えないようにできます。 長さに基づく分割の主な利点は以下の通りです:

  1. 実装が簡単
  2. ブロックサイズが均一
  3. 異なるモデルのニーズに容易に適応可能

再帰的分割

自然言語テキストは通常、段落、文、単語など階層的な単位で構成されています。この構造を利用し、分割戦略を策定することで、意味の一貫性を保ちつつ、異なるレベルのテキスト粒度に対応できます。 この方法では、より大きな単位(例:段落)を優先して保持します。もし単位がブロックサイズ制限を超える場合、次のレベル(例:文)で分割します。さらに分割が必要な場合は、単語レベルまで進みます。

セマンティック分割

前述の方法とは異なり、セマンティック(意味)に基づく分割はテキストの内容により重点を置きます。他の方法がドキュメントやテキスト構造を利用して間接的に意味を表現するのに対し、この方法はテキストの意味内容を直接分析します。実現方法は複数ありますが、核心となる考え方は、テキストの意味が大きく変化した時点で分割することです。例えば、スライディングウィンドウ技術を用いてテキストの埋め込みを生成し、それらを比較することで意味的な大きな違いを発見できます: まず、最初の数文の埋め込みを生成します。 次に、ウィンドウを次の文群にスライドさせ、新しい埋め込みを生成します。 これらの埋め込みを比較し、顕著な差異を発見した場合、意味的な「断点」が存在する可能性を示します。 この技術により、意味的により一貫性のあるテキストブロックを生成でき、検索や要約などの下流タスクの品質向上が期待できます。