RAGデータパイプラインの説明と処理ステップ

この記事では、RAGアプリケーションで使用する非構造化データの準備について学習します。 非構造化データとは、テキストや画像を含む PDF ドキュメントや、オーディオやビデオなどのマルチメディアコンテンツなど、特定の構造や構成を持たないデータを指します。

非構造化データには事前定義されたデータモデルやスキーマがないため、構造とメタデータのみに基づいてクエリを実行することは不可能です。 その結果、非構造化データには、生のテキスト、画像、音声、またはその他のコンテンツからセマンティックな意味を理解して抽出できる手法が必要です。

データの準備中に、RAG アプリケーション データパイプラインは、生の非構造化データを取得し、ユーザーのクエリとの関連性に基づいてクエリを実行できる個別のチャンクに変換します。 データ前処理における重要なステップを以下に概説します。 各ステップには、調整可能なさまざまなノブがあります。これらのノブの詳細については、 「RAG アプリケーションの品質の向上」を参照してください。

RAG データパイプラインの基本コンポーネントの図。

非構造化データを取得するための準備

このセクションの残りの部分では、セマンティック検索を使用して取得する非構造化データを準備するプロセスについて説明します。 セマンティック検索は、ユーザー クエリのコンテキストの意味と意図を理解して、より関連性の高い検索結果を提供します。

セマンティック検索は、非構造化データに対してRAGアプリケーションの検索コンポーネントを実装するときに実行できるいくつかのアプローチの1つです。 これらのドキュメントでは、 取得ノブのセクションで代替の取得戦略について説明します。

RAG アプリケーションのデータパイプラインのステップ

以下は、非構造化データを使用する RAG アプリケーションのデータ パイプラインの一般的なステップです。

  1. 生のドキュメントを解析する: 最初のステップでは、生のデータを使用可能な形式に変換します。 これには、PDF のコレクションからテキスト、表、画像を抽出したり、光学式文字認識 (OCR) 技術を使用して画像からテキストを抽出したりすることが含まれます。

  2. ドキュメント メタデータの抽出 (オプション) : 場合によっては、ドキュメントのタイトル、ページ番号、URL、その他の情報などのドキュメント メタデータを抽出して使用すると、検索ステップで正しいデータをより正確に照会できるようになります。

  3. チャンクドキュメント: 解析されたドキュメントが埋め込みモデルと LLM のコンテキスト ウィンドウに適合するように、解析されたドキュメントをより小さな個別のチャンクに分割します。 ドキュメント全体ではなく、これらの焦点を絞ったチャンクを取得することで、LLM は応答を生成するためのよりターゲットを絞ったコンテキストを得ることができます。

  4. 埋め込みチャンク: セマンティック検索を使用する RAG アプリケーションでは、埋め込みモデルと呼ばれる特殊なタイプの言語モデルが、前のステップの各チャンクを、各コンテンツの意味をカプセル化する数値ベクトルまたは数値のリストに変換します。 重要なのは、これらのベクトルは、表面的なキーワードだけでなく、テキストのセマンティックな意味を表すことです。 これにより、リテラルのテキストの一致ではなく、意味に基づいて検索できます。

  5. ベクター データベース内のチャンクのインデックス作成: 最後のステップは、チャンクのベクター表現とチャンクのテキストをベクター データベースにロードすることです。 ベクターデータベースは、エンベディングなどのベクターデータを効率的に保存および検索するために設計された特殊なタイプのデータベースです。 多数のチャンクでパフォーマンスを維持するために、ベクターデータベースには通常、さまざまなアルゴリズムを使用して、検索効率を最適化する方法でベクトル埋め込みを整理およびマッピングするベクトルインデックスが含まれています。 クエリ時に、ユーザーのリクエストがベクターに埋め込まれ、データベースはベクターインデックスを利用して最も類似したチャンクベクトルを見つけ、対応する元のテキストチャンクを返します。

類似性を計算するプロセスは、計算コストが高くなる可能性があります。 Databricksベクトル検索などのベクトルインデックスは、洗練された近似法などを使用して埋め込みを効率的に整理およびナビゲートするメカニズムを提供することで、このプロセスを高速化します。 これにより、各埋め込みをユーザーのクエリと個別に比較することなく、最も関連性の高い結果を迅速にランク付けできます。

データパイプラインの各ステップには、RAG アプリケーションの品質に影響を与えるエンジニアリングの決定が含まれます。 たとえば、ステップ 3 で適切なチャンク サイズを選択すると、LLM は特定のコンテキスト情報を確実に受信できるようになります。一方、ステップ 4 で適切な埋め込みモデルを選択すると、取得中に返されるチャンクの精度が決まります。

このデータ準備プロセスは、ユーザーがクエリを送信したときにトリガーされるオンライン ステップとは異なり、システムがクエリに応答する前に実行されるため、オフライン データ準備と呼ばれます。