第4章 データ 準備
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
RAGシステムに長文を入力する際、前処理によって文書は小さなチャンクに分割される。各チャンクは、その意味的意味を捉えた埋め込みベクトルに変換される。検索時には、システムはこれらのベクトル間の距離を計算して類似性を測定し、関連性の高いテキストを見つける。
この手法は、各チャンクが正確に1つの情報を含み、独立して理解できる場合に最も効果を発揮する。重要な課題は、周囲のコンテキストに依存せずに単独で成立するチャンクを準備することだ。堅牢なパイプラインは、生テキストをクリーニングし、適切な点で分割して意味のあるチャンクを生成する。
図4-1は、 における一般的な前処理テクニックを示している:
- テキストの準備
-
略語を置き換え、テキストをクリーニングする。
- メタデータの収集
-
ページ番号、ソース、著者を保存する。
- テキストの分割
-
文字単位、再帰的、意味的、またはエージェントによるチャンキングを適用する。
目標は、周囲のコンテキストを必要としない、明確で曖昧さのないチャンクを生成することだ。
図4-1. データ処理テクニックを含む、簡略化されたRAGインデックス作成 パイプライン
各チャンクに有用なメタデータを保存することで、検索時のフィルタリングが可能になり、プロセスの高速化と精度向上につながる。
本書のGitHubリポジトリで、この章のすべてのコード例を確認できる。
4.1 メタデータフィルタリングを可能にするメタデータの追加
課題
ベクトルストア内のテキストチャンクと共にメタデータを保存し、検索時にメタデータによるフィルタリングを適用できるようにしたい。
解決策
ドキュメントから既存のメタデータを抽出し、追加のフィールドを計算する。特殊なユースケースでは、オプションとして、ドキュメントの内容から導出されたLLM生成メタデータを使用して、ドキュメントと共に保存されるメタデータを充実させる。以下の手順に従う:
-
文書に既に保存されているメタデータ(著者、タイトル、作成日)を抽出する。
-
計算されたメタデータフィールド(ファイルの場所、サイズ、ページ数、テキストの長さ)を追加する。
-
(オプション)LLMを用いてドキュメントのテキストを分析し、コンテンツに基づくメタデータを生成する。
-
メタデータをテキストチャンクと共に保存する。
図4-2はこのワークフローを示している。
図4-2. メタデータフィールドの抽出 と生成
手順を実行するには、要件のライブラリをインストールする:
pipinstallPyPDF2openaipydantic
次に、PDFをインポートし、そのメタデータフィールドを辞書に格納する。これらのフィールドの網羅性は、PDFを作成したソフトウェアに大きく依存する。多くのPDFには、著者、タイトル、主題、作成者、作成日、および変更日が含まれている。以下にコードを示す: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access