編集

次の方法で共有


RAG ソリューションの設計と開発

Azure AI サービス
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Retrieval-Augmented 生成 (RAG) パターンは、言語モデルを使用して、モデルがまだ認識していない特定のデータまたは独自のデータを処理するアプリケーションを構築するための業界標準のアプローチです。 アーキテクチャは簡単ですが、このアーキテクチャに適合する RAG ソリューションの設計、実験、評価には、厳格な科学的アプローチの恩恵を受ける多くの複雑な考慮事項が含まれます。

この記事では、シリーズの概要について説明します。 シリーズの各記事では、RAG ソリューション設計の特定のフェーズについて説明します。

このシリーズの他の記事では、次の考慮事項について説明します。

  • 評価中に使用するテスト ドキュメントとクエリを決定する方法
  • チャンク戦略を選択する方法
  • どのチャンクをエンリッチする必要があるかどうかを判断する方法と、それらを強化する方法
  • 適切な埋め込みモデルを選択する方法
  • 検索インデックスを構成する方法
  • ベクター、フルテキスト、ハイブリッド、手動の複数検索など、実行する必要がある検索を決定する方法
  • 各ステップを評価する方法

RAG アーキテクチャ

要求フローやデータ パイプラインなど、RAG ソリューションのアーキテクチャの概要を示す図。

RAG アプリケーション フロー

次のワークフローでは、RAG アプリケーションのフローの概要について説明します。

  1. ユーザーは、インテリジェントなアプリケーションのユーザー インターフェイスでクエリを発行します。
  2. インテリジェントなアプリケーションは、オーケストレーターに対して API 呼び出しを行います。 オーケストレーターは、セマンティック カーネル、Azure Machine Learning プロンプト フロー、LangChain などのツールまたはプラットフォームを使用して実装できます。
  3. オーケストレーターは、Azure AI Search で実行する検索を決定し、クエリを発行します。
  4. オーケストレーターは、クエリからの上位 N 結果をパッケージ化します。 上位の結果とクエリをプロンプト内のコンテキストとしてパッケージ化し、言語モデルにプロンプトを送信します。 オーケストレーターは、ユーザーが読み取れるように、インテリジェントなアプリケーションに応答を返します。

RAG データ パイプライン フロー

次のワークフローでは、RAG アプリケーションのグラウンド データを提供するデータ パイプラインのフローの概要について説明します。

  1. ドキュメントは、データ パイプラインにプッシュまたはプルされます。
  2. データ パイプラインは、次の手順を実行して各ドキュメントを個別に処理します。
    1. チャンク ドキュメント: 理想的には単一のアイデアまたは概念を持つ意味的に関連する部分にドキュメントを分割します。
    2. チャンクを強化する: チャンク内のコンテンツに基づいてパイプラインによって作成されるメタデータ フィールドを追加します。 データ パイプラインは、メタデータをタイトル、概要、キーワードなどの個別のフィールドに分類します。
    3. チャンクの埋め込み: 埋め込みモデルを使用して、ベクター検索に使用されるチャンクとその他のメタデータ フィールドをベクター化します。
    4. チャンクを保持する: チャンクを検索インデックスに格納します。

RAG の設計と評価に関する考慮事項

RAG ソリューションを設計するときは、さまざまな実装上の決定を行う必要があります。 次の図は、これらの決定を行うときに尋ねる必要があるいくつかの質問を示しています。

ソリューションの設計時に質問する必要がある質問を含む、RAG ソリューションのアーキテクチャの概要を示す図。

次の一覧では、RAG ソリューション開発の各フェーズで実行する必要がある操作について簡単に説明します。

  • 準備フェーズ中に、次の手順を実行する必要があります。

    • ソリューション ドメインを決定します。 RAG ソリューションのビジネス要件を明確に定義します。
    • 代表的なテスト ドキュメントを収集します。 ドキュメント コレクションを代表する RAG ソリューションのテスト ドキュメントを収集します。
    • テスト クエリを収集します。 情報を収集し、クエリをテストし、ドキュメントに含まれない合成クエリとクエリを生成します。
  • チャンク フェーズ中に、次の手順を実行する必要があります。

    • チャンク経済について理解する。 テキスト コレクションのチャンク ソリューションの全体的なコストを評価する際に考慮すべき要因を理解します。
    • ドキュメント分析を実行します。 ドキュメントの種類を分析する際の意思決定に役立つ次の質問をします。
      • ドキュメント内で無視または除外するコンテンツは何ですか?
      • チャンクでキャプチャするコンテンツは何ですか?
      • そのコンテンツをどのようにチャンクしますか?
    • チャンクのアプローチを理解する。 文ベース、固定サイズ、カスタム アプローチなど、チャンクのさまざまなアプローチを理解するか、言語モデル拡張、ドキュメント レイアウト分析、機械学習モデルを使用します。
    • ドキュメント構造がチャンクに与える影響について説明します。 ドキュメントの構造の程度に基づいてチャンクアプローチを選択します。
  • チャンク エンリッチメント フェーズの中に、次の手順を実行する必要があります。

    • チャンクをクリーンアップします。 テキストの意味に影響を与えない違いを排除するためのクリーニング アプローチを実装します。 このメソッドは、近接一致をサポートします。
    • チャンクを拡張します。 チャンク データを共通のメタデータ フィールドで拡張することを検討し、検索での潜在的な用途を理解します。 メタデータ コンテンツを生成するために一般的に使用されるツールまたは手法について説明します。
  • 埋め込みフェーズ中に、次の手順を実行する必要があります。

    • 埋め込みモデルの重要性を理解する。 埋め込みモデルは、ベクター検索結果の関連性に大きく影響する可能性があります。
    • ユース ケースに適した埋め込みモデルを選択します。
    • 埋め込みモデルを評価します。 埋め込みモデルを評価するには、埋め込みを視覚化し、埋め込み距離を計算します。
  • 情報取得フェーズ中に、次の手順を実行する必要があります。

    • 検索インデックスを作成します。 ベクター フィールドに適切なベクター検索構成を適用します。
    • 検索オプションについて理解します。 ベクター、フルテキスト、ハイブリッド、手動の複数検索など、さまざまな種類の検索について考えてみましょう。 クエリをサブクエリに分割し、クエリをフィルター処理する方法について説明します。
    • 検索を評価します。 検索の評価方法を使用して、検索ソリューションを評価します。
  • 言語モデルのエンドツーエンドの評価フェーズ中に、次の手順を実行する必要があります。

    • 言語モデルの評価メトリックについて理解します。 根拠、完全性、使用率、関連性など、言語モデルの応答を評価するために使用できるメトリックがいくつかあります。
    • 類似性と評価メトリックについて理解します。 類似度と評価メトリックを使用して、RAG ソリューションを評価できます。
    • ドキュメント、レポート、集計の重要性を理解します。 ハイパーパラメーターと評価結果を文書化します。 複数のクエリの結果を集計し、結果を視覚化します。
    • RAG 実験アクセラレータを使用します。 RAG 実験アクセラレータ GitHub リポジトリ を使用して、複数の実験を実行し、結果を永続化し、評価することで、チームが RAG 実装に最適な戦略を見つけるのに役立ちます。

構造化アプローチ

ステップと変数の数が多いため、RAG ソリューションの構造化された評価プロセスに従う必要があります。 各ステップの結果を評価し、要件に基づいて変更を加えます。 最適化のために各ステップを個別に評価する必要がありますが、最終的な結果は顧客が経験する結果であることを覚えておいてください。 各ステップの独自の受け入れ基準を決定する前に、このプロセスのすべての手順を理解していることを確認してください。

共同作成者

この記事は Microsoft によって管理されています。 もともとは次の共同作成者によって作成されました。

主な作成者:

非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ