View a markdown version of this page

RAG ワークフローのリトリーバー - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

RAG ワークフローのリトリーバー

このセクションでは、リトリーバーを構築する方法について説明します。Amazon Kendra などのフルマネージド型のセマンティック検索ソリューションを使用することも、 AWS ベクトルデータベースを使用してカスタムセマンティック検索を構築することもできます。

リトリーバーオプションを確認する前に、ベクトル検索プロセスの 3 つのステップを理解していることを確認してください。

  1. インデックス作成する必要があるドキュメントを小さな部分に分割します。これはチャンキングと呼ばれます。

  2. 埋め込みと呼ばれるプロセスを使用して、各チャンクを数学ベクトルに変換します。次に、ベクトルデータベース内の各ベクトルのインデックスを作成します。ドキュメントのインデックス作成に使用するアプローチは、検索の速度と精度に影響します。インデックス作成のアプローチは、ベクトルデータベースとそれが提供する設定オプションによって異なります。

  3. ユーザークエリをベクトルに変換するには、同じプロセスを使用します。リトリーバーは、ユーザーのクエリベクトルに似たベクトルをベクトルデータベースで検索します。類似度は、ユークリッド距離、コサイン距離、ドット積などのメトリクスを使用して計算されます。

このガイドでは、以下の AWS のサービス またはサードパーティーのサービスを使用してカスタム取得レイヤーを構築する方法について説明します AWS。

Amazon Kendra

Amazon Kendra は、自然言語処理と高度な機械学習アルゴリズムを使用して、データからの検索質問に対する特定の回答を返す、フルマネージド型のインテリジェントな検索サービスです。Amazon Kendra は、複数のソースからドキュメントを直接取り込み、正常に同期された後にドキュメントをクエリするのに役立ちます。同期プロセスにより、取り込まれたドキュメントでベクトル検索を作成するために必要なインフラストラクチャが作成されます。したがって、Amazon Kendra はベクトル検索プロセスの従来の 3 つのステップを必要としません。最初の同期後、定義されたスケジュールを使用して継続的な取り込みを処理できます。

RAG に Amazon Kendra を使用する利点は次のとおりです。

  • Amazon Kendra はベクトル検索プロセス全体を処理するため、ベクトルデータベースを維持する必要はありません。

  • Amazon Kendra には、データベース、ウェブサイトクローラー、Amazon S3 バケット、Microsoft SharePointインスタンス、Atlassian Confluenceインスタンスなどの一般的なデータソース用の構築済みコネクタが含まれています。Box および のコネクタなど、 AWS パートナーによって開発されたコネクタを使用できますGitLab。

  • Amazon Kendra は、エンドユーザーがアクセスできるドキュメントのみを返すアクセスコントロールリスト (ACL) フィルタリングを提供します。

  • Amazon Kendra は、日付やソースリポジトリなどのメタデータに基づいてレスポンスをブーストできます。

次の図は、RAG システムの取得レイヤーとして Amazon Kendra を使用するサンプルアーキテクチャを示しています。詳細については、「Amazon Kendra、、LangChain大規模言語モデルを使用してエンタープライズデータに高精度の生成 AI アプリケーションをすばやく構築する」(AWS ブログ記事) を参照してください。

RAG システムの取得レイヤーとして Amazon Kendra を使用する AWS。

基盤モデルでは、Amazon Bedrock または Amazon SageMaker AI JumpStart を介してデプロイされた LLM を使用できます。 AWS Lambda で を使用してLangChain、ユーザー、Amazon Kendra、LLM 間のフローをオーケストレーションできます。Amazon Kendra、、LangChainおよびさまざまな LLMs を使用する RAG システムを構築するには、Amazon Kendra LangChain Extensions GitHub リポジトリを参照してください。

Amazon OpenSearch Service

Amazon OpenSearch Service は、ベクトル検索を実行するために、K 最近傍 (k-NN) 検索用の組み込み ML アルゴリズムを提供します。OpenSearch Service は、Amazon EMR Serverless 用のベクトルエンジンも提供します。このベクトルエンジンを使用して、スケーラブルで高性能なベクトルストレージと検索機能を備えた RAG システムを構築できます。OpenSearch Serverless を使用して RAG システムを構築する方法の詳細については、「Amazon OpenSearch Serverless および Amazon Bedrock Claude モデルのベクトルエンジンを使用してスケーラブルでサーバーレスな RAG ワークフローを構築する」(AWS ブログ記事) を参照してください。

ベクトル検索に OpenSearch Service を使用する利点は次のとおりです。

Amazon Aurora PostgreSQL と pgvector

Amazon Aurora PostgreSQL 互換エディションは、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つフルマネージドのリレーショナルデータベースエンジンです。pgvector は、ベクトル類似性検索機能を提供するオープンソースの PostgreSQL 拡張機能です。この拡張機能は、Aurora PostgreSQL 互換と Amazon Relational Database Service (Amazon RDS) for PostgreSQL の両方で使用できます。Aurora PostgreSQL 互換と pgvector を使用する RAG ベースのシステムを構築する方法の詳細については、次の AWS ブログ記事を参照してください。

pgvector と Aurora PostgreSQL 互換を使用する利点は次のとおりです。

Amazon Neptune Analytics

Amazon Neptune Analytics は、分析用のメモリ最適化グラフデータベースエンジンです。グラフトラバーサル内の最適化されたグラフ分析アルゴリズム、低レイテンシーのグラフクエリ、ベクトル検索機能のライブラリをサポートしています。また、ベクトル類似度検索が組み込まれています。グラフの作成、データのロード、クエリの呼び出し、ベクトル類似度検索を実行する 1 つのエンドポイントを提供します。Neptune Analytics を使用する RAG ベースのシステムを構築する方法の詳細については、「ナレッジグラフを使用して Amazon Bedrock と Amazon Neptune で GraphRAG アプリケーションを構築する」(AWS ブログ記事) を参照してください。

Neptune Analytics を使用する利点は次のとおりです。

  • 埋め込みをグラフクエリに保存および検索できます。

  • Neptune Analytics を と統合する場合LangChain、このアーキテクチャは自然言語グラフクエリをサポートします。

  • このアーキテクチャは、大きなグラフデータセットをメモリに保存します。

Amazon MemoryDB

Amazon MemoryDB は、超高速のパフォーマンスを提供する耐久性の高いインメモリデータベースサービスです。すべてのデータはメモリに保存され、マイクロ秒の読み取り、1 桁ミリ秒の書き込みレイテンシー、高スループットをサポートします。MemoryDB のベクトル検索は MemoryDB の機能を拡張し、既存の MemoryDB 機能と組み合わせて使用できます。詳細については、GitHub の「LLM および RAG リポジトリを使用した質問への回答」を参照してください。

次の図は、MemoryDB をベクトルデータベースとして使用するサンプルアーキテクチャを示しています。

MemoryDB ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。

MemoryDB を使用する利点は次のとおりです。

  • フラットインデックス作成アルゴリズムと HNSW インデックス作成アルゴリズムの両方をサポートしています。詳細については、「 AWS ニュースブログ」の「Amazon MemoryDB のベクトル検索が一般公開されました」を参照してください。

  • また、基盤モデルのバッファメモリとしても機能します。つまり、以前に回答した質問は、取得および生成プロセスを繰り返すのではなく、バッファから取得されます。以下の図はこのプロセスを示しています。

    回答を MemoryDB データベースに保存して、バッファメモリから取得できるようにします。
  • インメモリデータベースを使用するため、このアーキテクチャはセマンティック検索に 1 桁ミリ秒のクエリ時間を提供します。

  • 95~99% の再現率で 1 秒あたり最大 33,000 件のクエリを提供し、99% を超える再現率で 1 秒あたり最大 26,500 件のクエリを提供します。詳細については、AWS 「re:Invent 2023 - Ultra-low latency vector search for Amazon MemoryDB video on 」を参照してくださいYouTube。

Amazon DocumentDB

Amazon DocumentDB (MongoDB 互換) は、高速で信頼性の高いフルマネージドデータベースサービスです。クラウドで MongoDB互換データベースを簡単にセットアップ、運用、スケーリングできます。Amazon DocumentDB のベクトル検索は、JSON ベースのドキュメントデータベースの柔軟性と豊富なクエリ機能とベクトル検索の能力を組み合わせています。詳細については、GitHub の「LLM および RAG リポジトリを使用した質問への回答」を参照してください。

次の図は、Amazon DocumentDB をベクトルデータベースとして使用するサンプルアーキテクチャを示しています。

Amazon DocumentDB ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。

この図表は、次のワークフローを示しています:

  1. ユーザーは生成 AI アプリケーションにクエリを送信します。

  2. 生成 AI アプリケーションは、Amazon DocumentDB ベクトルデータベースで類似度検索を実行し、関連するドキュメント抽出を取得します。

  3. 生成 AI アプリケーションは、取得したコンテキストでユーザークエリを更新し、ターゲット基盤モデルにプロンプトを送信します。

  4. 基盤モデルは、コンテキストを使用してユーザーの質問に対するレスポンスを生成し、レスポンスを返します。

  5. 生成 AI アプリケーションは、ユーザーにレスポンスを返します。

Amazon DocumentDB を使用する利点は次のとおりです。

  • HNSW と IVFFlat の両方のインデックス作成メソッドをサポートしています。

  • ベクトルデータで最大 2,000 のディメンションをサポートし、ユークリッド、コサイン、ドット積の距離メトリクスをサポートします。

  • ミリ秒の応答時間を提供します。

Pinecone

Pinecone は、本番稼働用アプリケーションにベクトル検索を追加するのに役立つフルマネージド型のベクトルデータベースです。これは、 から入手できますAWS Marketplace。請求は使用量に基づいており、料金はポッド料金にポッド数を乗算して計算されます。を使用する RAG ベースのシステムを構築する方法の詳細についてはPinecone、次の AWS ブログ記事を参照してください。

次の図は、 をベクトルデータベースPineconeとして使用するアーキテクチャの例を示しています。

Pinecone ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。

この図表は、次のワークフローを示しています:

  1. ユーザーは生成 AI アプリケーションにクエリを送信します。

  2. 生成 AI アプリケーションは、Pineconeベクトルデータベースで類似度検索を実行し、関連するドキュメント抽出を取得します。

  3. 生成 AI アプリケーションは、取得したコンテキストでユーザークエリを更新し、ターゲット基盤モデルにプロンプトを送信します。

  4. 基盤モデルは、コンテキストを使用してユーザーの質問に対するレスポンスを生成し、レスポンスを返します。

  5. 生成 AI アプリケーションは、ユーザーにレスポンスを返します。

を使用する利点は次のとおりですPinecone。

  • これはフルマネージド型のベクトルデータベースであり、独自のインフラストラクチャを管理するオーバーヘッドを排除します。

  • フィルタリング、ライブインデックスの更新、キーワードブースト (ハイブリッド検索) の追加機能を提供します。

MongoDB Atlas

MongoDB Atlas は、デプロイのデプロイと管理の複雑さをすべて処理するフルマネージド型のクラウドデータベースです AWS。のベクトル検索MongoDB Atlasを使用して、MongoDBデータベースにベクトル埋め込みを保存できます。Amazon Bedrock ナレッジベースは、ベクトルストレージMongoDB Atlasをサポートしています。詳細については、 MongoDBドキュメントの「Amazon Bedrock ナレッジベース統合の開始方法」を参照してください。

RAG のMongoDB Atlasベクトル検索の使用方法の詳細については、「 を使用した検索拡張生成LangChain」、Amazon SageMaker AI JumpStart」、およびMongoDB Atlas「セマンティック検索」(AWS ブログ記事) を参照してください。次の図は、このブログ記事で詳しく説明されているソリューションアーキテクチャを示しています。

MongoDB Atlas ベクトル検索を使用して、RAG ベースの生成 AI アプリケーションのコンテキストを取得します。

MongoDB Atlas ベクトル検索を使用する利点は次のとおりです。

  • の既存の実装を使用してMongoDB Atlas、ベクトル埋め込みを保存および検索できます。

  • MongoDB Query API を使用して、ベクトル埋め込みをクエリできます。

  • ベクトル検索とデータベースは個別にスケールできます。

  • ベクトル埋め込みはソースデータ (ドキュメント) の近くに保存されるため、インデックス作成のパフォーマンスが向上します。

Weaviate

Weaviate は、テキストや画像などのマルチモーダルメディアタイプをサポートする、一般的なオープンソースの低レイテンシーベクトルデータベースです。データベースにはオブジェクトとベクトルの両方が保存され、ベクトル検索と構造化フィルタリングが組み合わされます。Weaviate と Amazon Bedrock を使用して RAG ワークフローを構築する方法の詳細については、「Build enterprise-ready generative AI solutions with Cohere foundation models in Amazon Bedrock and Weaviate vector database on AWS Marketplace (AWS ブログ記事)」を参照してください。

を使用する利点は次のとおりですWeaviate。

  • これはオープンソースであり、強力なコミュニティに支えられています。

  • ハイブリッド検索 (ベクトルとキーワードの両方) 用に構築されています。

  • AWS マネージド Software as a Service (SaaS) サービスまたは Kubernetes クラスターとして にデプロイできます。