

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

# RAG ワークフローのリトリーバー
<a name="rag-custom-retrievers"></a>

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

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

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

1. [埋め込み](https://community.aws/concepts/vector-embeddings-and-rag-demystified#embeddings)と呼ばれるプロセスを使用して、各チャンクを数学ベクトルに変換します。次に、ベクトルデータベース内の各ベクトルのインデックスを作成します。ドキュメントのインデックス作成に使用するアプローチは、検索の速度と精度に影響します。インデックス作成のアプローチは、ベクトルデータベースとそれが提供する設定オプションによって異なります。

1. ユーザークエリをベクトルに変換するには、同じプロセスを使用します。リトリーバーは、ユーザーのクエリベクトルに似たベクトルをベクトルデータベースで検索します。[類似度](https://community.aws/concepts/vector-embeddings-and-rag-demystified#distance-metrics-between-embeddings)は、ユークリッド距離、コサイン距離、ドット積などのメトリクスを使用して計算されます。

このガイドでは、以下の AWS のサービス またはサードパーティーのサービスを使用してカスタム取得レイヤーを構築する方法について説明します AWS。
+ [Amazon Kendra](#rag-custom-kendra)
+ [Amazon OpenSearch Service](#rag-custom-opensearch)
+ [Amazon Aurora PostgreSQL と pgvector](#rag-custom-aurora)
+ [Amazon Neptune Analytics](#rag-custom-neptune)
+ [Amazon MemoryDB](#rag-custom-memorydb)
+ [Amazon DocumentDB](#rag-custom-docdb)
+ [Pinecone](#rag-custom-pinecone)
+ [MongoDB Atlas](#rag-custom-mongodb-atlas)
+ [Weaviate](#rag-custom-weaviate)

## Amazon Kendra
<a name="rag-custom-kendra"></a>

[Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html) は、自然言語処理と高度な機械学習アルゴリズムを使用して、データからの検索質問に対する特定の回答を返す、フルマネージド型のインテリジェントな検索サービスです。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 アプリケーションをすばやく構築する](https://aws.amazon.com/blogs/machine-learning/quickly-build-high-accuracy-generative-ai-applications-on-enterprise-data-using-amazon-kendra-langchain-and-large-language-models/)」(AWS ブログ記事) を参照してください。



![\[RAG システムの取得レイヤーとして Amazon Kendra を使用する AWS。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/architecture-custom-kendra.png)


基盤モデルでは、Amazon Bedrock または [Amazon SageMaker AI JumpStart](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-jumpstart.html) を介してデプロイされた LLM を使用できます。 AWS Lambda で を使用して[https://python.langchain.com/docs/integrations/tools/awslambda/](https://python.langchain.com/docs/integrations/tools/awslambda/)、ユーザー、Amazon Kendra、LLM 間のフローをオーケストレーションできます。Amazon Kendra、、LangChainおよびさまざまな LLMs を使用する RAG システムを構築するには、[Amazon Kendra LangChain Extensions](https://github.com/aws-samples/amazon-kendra-langchain-extensions) GitHub リポジトリを参照してください。

## Amazon OpenSearch Service
<a name="rag-custom-opensearch"></a>

[Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) は、ベクトル[検索を実行するために、K 最近傍 (k-NN) ](https://docs.opensearch.org/latest/vector-search/vector-search-techniques/index/)検索用の組み込み ML アルゴリズムを提供します。OpenSearch Service は、[Amazon EMR Serverless 用のベクトルエンジン](https://aws.amazon.com/opensearch-service/serverless-vector-engine/)も提供します。このベクトルエンジンを使用して、スケーラブルで高性能なベクトルストレージと検索機能を備えた RAG システムを構築できます。OpenSearch Serverless を使用して RAG システムを構築する方法の詳細については、「Amazon [ OpenSearch Serverless および Amazon Bedrock Claude モデルのベクトルエンジンを使用してスケーラブルでサーバーレスな RAG ワークフローを構築する](https://aws.amazon.com/blogs/big-data/build-scalable-and-serverless-rag-workflows-with-a-vector-engine-for-amazon-opensearch-serverless-and-amazon-bedrock-claude-models/)」(AWS ブログ記事) を参照してください。

ベクトル検索に OpenSearch Service を使用する利点は次のとおりです。
+ OpenSearch Serverless を使用してスケーラブルなベクトル検索を構築するなど、ベクトルデータベースを完全に制御できます。
+ これにより、チャンキング戦略を制御できます。
+ [非メトリクススペースライブラリ (NMSLIB)、Faiss、Apache Lucene ライブラリからの近似近傍 (ANN)](https://github.com/nmslib/nmslib) アルゴリズムを使用して、k-NN 検索を強化します。 [https://github.com/facebookresearch/faiss](https://github.com/facebookresearch/faiss) [https://lucene.apache.org/](https://lucene.apache.org/)ユースケースに基づいてアルゴリズムを変更できます。OpenSearch Service を使用してベクトル検索をカスタマイズするためのオプションの詳細については、[「Amazon OpenSearch Service のベクトルデータベース機能の説明](https://aws.amazon.com/blogs/big-data/amazon-opensearch-services-vector-database-capabilities-explained/)」(AWS ブログ記事) を参照してください。
+ OpenSearch Serverless は、ベクトルインデックスとして Amazon Bedrock ナレッジベースと統合されます。

## Amazon Aurora PostgreSQL と pgvector
<a name="rag-custom-aurora"></a>

[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つフルマネージドのリレーショナルデータベースエンジンです。[pgvector](https://github.com/pgvector/pgvector/) は、ベクトル類似性検索機能を提供するオープンソースの PostgreSQL 拡張機能です。この拡張機能は、Aurora PostgreSQL 互換と Amazon Relational Database Service (Amazon RDS) for PostgreSQL の両方で使用できます。Aurora PostgreSQL 互換と pgvector を使用する RAG ベースのシステムを構築する方法の詳細については、次の AWS ブログ記事を参照してください。
+ [Amazon SageMaker AI と pgvector を使用して PostgreSQL で AI を活用した検索を構築する](https://aws.amazon.com/blogs/database/building-ai-powered-search-in-postgresql-using-amazon-sagemaker-and-pgvector/)
+ [pgvector と Amazon Aurora PostgreSQL を活用して自然言語処理、チャットボット、感情分析を行う](https://aws.amazon.com/blogs/database/leverage-pgvector-and-amazon-aurora-postgresql-for-natural-language-processing-chatbots-and-sentiment-analysis/)

pgvector と Aurora PostgreSQL 互換を使用する利点は次のとおりです。
+ 近傍検索と近似近傍検索をサポートしています。また、L2 距離、内部積、コサイン距離の類似度メトリクスもサポートしています。
+ [フラット圧縮 (IVFFlat) および階層ナビゲーション可能なスモールワールド (HNSW) インデックスを持つ反転ファイル](https://github.com/pgvector/pgvector#ivfflat)をサポートしています。 [https://github.com/pgvector/pgvector#hnsw](https://github.com/pgvector/pgvector#hnsw)
+ ベクトル検索を、同じ PostgreSQL インスタンスで利用可能なドメイン固有のデータに対するクエリと組み合わせることができます。
+ Aurora PostgreSQL 互換 は I/O 用に最適化されており、階層型キャッシュを提供します。使用可能なインスタンスメモリを超えるワークロードの場合、pgvector はベクトル検索のクエリを 1 秒あたり[最大 8 回](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.optimized.reads.html)まで増やすことができます。

## Amazon Neptune Analytics
<a name="rag-custom-neptune"></a>

[Amazon Neptune Analytics](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/what-is-neptune-analytics.html) は、分析用のメモリ最適化グラフデータベースエンジンです。グラフトラバーサル内の最適化されたグラフ分析アルゴリズム、低レイテンシーのグラフクエリ、ベクトル検索機能のライブラリをサポートしています。また、ベクトル類似度検索が組み込まれています。グラフの作成、データのロード、クエリの呼び出し、ベクトル類似度検索を実行する 1 つのエンドポイントを提供します。Neptune Analytics を使用する RAG ベースのシステムを構築する方法の詳細については、[「ナレッジグラフを使用して Amazon Bedrock と Amazon Neptune で GraphRAG アプリケーションを構築する](https://aws.amazon.com/blogs/database/using-knowledge-graphs-to-build-graphrag-applications-with-amazon-bedrock-and-amazon-neptune/)」(AWS ブログ記事) を参照してください。

Neptune Analytics を使用する利点は次のとおりです。
+ 埋め込みをグラフクエリに保存および検索できます。
+ Neptune Analytics を と統合する場合LangChain、このアーキテクチャは自然言語グラフクエリをサポートします。
+ このアーキテクチャは、大きなグラフデータセットをメモリに保存します。

## Amazon MemoryDB
<a name="rag-custom-memorydb"></a>

[Amazon MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/what-is-memorydb.html) は、超高速のパフォーマンスを提供する耐久性の高いインメモリデータベースサービスです。すべてのデータはメモリに保存され、マイクロ秒の読み取り、1 桁ミリ秒の書き込みレイテンシー、高スループットをサポートします。[MemoryDB のベクトル検索](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html)は MemoryDB の機能を拡張し、既存の MemoryDB 機能と組み合わせて使用できます。詳細については、GitHub の[「LLM および RAG リポジトリを使用した質問への回答](https://github.com/aws-samples/rag-with-amazon-bedrock-and-memorydb/tree/main)」を参照してください。

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



![\[MemoryDB ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/architecture-custom-memorydb.png)


MemoryDB を使用する利点は次のとおりです。
+ フラットインデックス作成アルゴリズムと HNSW インデックス作成アルゴリズムの両方をサポートしています。詳細については、「 AWS ニュースブログ」の[「Amazon MemoryDB のベクトル検索が一般公開されました](https://aws.amazon.com/blogs/aws/vector-search-for-amazon-memorydb-is-now-generally-available/)」を参照してください。
+ また、基盤モデルのバッファメモリとしても機能します。つまり、以前に回答した質問は、取得および生成プロセスを繰り返すのではなく、バッファから取得されます。以下の図はこのプロセスを示しています。  
![\[回答を MemoryDB データベースに保存して、バッファメモリから取得できるようにします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/memorydb-fm-buffer.png)
+ インメモリデータベースを使用するため、このアーキテクチャはセマンティック検索に 1 桁ミリ秒のクエリ時間を提供します。
+ 95～99% の再現率で 1 秒あたり最大 33,000 件のクエリを提供し、99% を超える再現率で 1 秒あたり最大 26,500 件のクエリを提供します。詳細については、[AWS 「re:Invent 2023 - Ultra-low latency vector search for Amazon MemoryDB](https://www.youtube.com/watch?v=AaMh3rdu-p0) video on 」を参照してくださいYouTube。

## Amazon DocumentDB
<a name="rag-custom-docdb"></a>

[Amazon DocumentDB (MongoDB 互換)](https://docs.aws.amazon.com/documentdb/latest/developerguide/what-is.html) は、高速で信頼性の高いフルマネージドデータベースサービスです。クラウドで MongoDB互換データベースを簡単にセットアップ、運用、スケーリングできます。[Amazon DocumentDB のベクトル検索](https://docs.aws.amazon.com/documentdb/latest/developerguide/vector-search.html)は、JSON ベースのドキュメントデータベースの柔軟性と豊富なクエリ機能とベクトル検索の能力を組み合わせています。詳細については、GitHub の[「LLM および RAG リポジトリを使用した質問への回答](https://github.com/aws-samples/rag-with-amazon-bedrock-and-documentdb/tree/main)」を参照してください。

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



![\[Amazon DocumentDB ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/architecture-custom-documentdb.png)


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

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

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

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

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

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

Amazon DocumentDB を使用する利点は次のとおりです。
+ HNSW と IVFFlat の両方のインデックス作成メソッドをサポートしています。
+ ベクトルデータで最大 2,000 のディメンションをサポートし、ユークリッド、コサイン、ドット積の距離メトリクスをサポートします。
+ ミリ秒の応答時間を提供します。

## Pinecone
<a name="rag-custom-pinecone"></a>

[https://www.pinecone.io/](https://www.pinecone.io/) は、本番稼働用アプリケーションにベクトル検索を追加するのに役立つフルマネージド型のベクトルデータベースです。これは、 から入手できます[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-xhgyscinlz4jk)。請求は使用量に基づいており、料金はポッド料金にポッド数を乗算して計算されます。を使用する RAG ベースのシステムを構築する方法の詳細についてはPinecone、次の AWS ブログ記事を参照してください。
+ [Amazon SageMaker AI JumpStart のPineconeベクトルデータベースと Llama-2 を使用して RAG を介してハルシネーションを軽減する](https://aws.amazon.com/blogs/machine-learning/mitigate-hallucinations-through-retrieval-augmented-generation-using-pinecone-vector-database-llama-2-from-amazon-sagemaker-jumpstart/)
+ [Amazon SageMaker AI Studio を使用して Llama 2、、 で RAG 質問への回答ソリューションを構築しLangChain、Pinecone迅速な実験を行う](https://aws.amazon.com/blogs/machine-learning/use-amazon-sagemaker-studio-to-build-a-rag-question-answering-solution-with-llama-2-langchain-and-pinecone-for-fast-experimentation/)

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



![\[Pinecone ベクトルデータベースからコンテキストを取得する生成 AI アプリケーション。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/architecture-custom-pinecone.png)


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

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

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

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

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

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

を使用する利点は次のとおりですPinecone。
+ これはフルマネージド型のベクトルデータベースであり、独自のインフラストラクチャを管理するオーバーヘッドを排除します。
+ フィルタリング、ライブインデックスの更新、キーワードブースト (ハイブリッド検索) の追加機能を提供します。

## MongoDB Atlas
<a name="rag-custom-mongodb-atlas"></a>

[https://www.mongodb.com/lp/cloud/atlas/try4](https://www.mongodb.com/lp/cloud/atlas/try4) は、デプロイのデプロイと管理の複雑さをすべて処理するフルマネージド型のクラウドデータベースです AWS。[のベクトル検索MongoDB Atlas](https://www.mongodb.com/products/platform/atlas-vector-search)を使用して、MongoDBデータベースにベクトル埋め込みを保存できます。Amazon Bedrock ナレッジベースは、ベクトルストレージMongoDB Atlasをサポートしています。詳細については、 MongoDBドキュメント[の「Amazon Bedrock ナレッジベース統合の開始](https://www.mongodb.com/docs/atlas/atlas-vector-search/ai-integrations/amazon-bedrock/)方法」を参照してください。

RAG のMongoDB Atlasベクトル検索の使用方法の詳細については、「 [を使用した検索拡張生成LangChain」、Amazon SageMaker AI JumpStart」、およびMongoDB Atlas「セマンティック検索](https://aws.amazon.com/blogs/machine-learning/retrieval-augmented-generation-with-langchain-amazon-sagemaker-jumpstart-and-mongodb-atlas-semantic-search/)」(AWS ブログ記事) を参照してください。次の図は、このブログ記事で詳しく説明されているソリューションアーキテクチャを示しています。



![\[MongoDB Atlas ベクトル検索を使用して、RAG ベースの生成 AI アプリケーションのコンテキストを取得します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/retrieval-augmented-generation-options/images/architecture-custom-mongodb-atlas.png)


MongoDB Atlas ベクトル検索を使用する利点は次のとおりです。
+ の既存の実装を使用してMongoDB Atlas、ベクトル埋め込みを保存および検索できます。
+ [MongoDB Query API ](https://www.mongodb.com/docs/manual/query-api/)を使用して、ベクトル埋め込みをクエリできます。
+ ベクトル検索とデータベースは個別にスケールできます。
+ ベクトル埋め込みはソースデータ (ドキュメント) の近くに保存されるため、インデックス作成のパフォーマンスが向上します。

## Weaviate
<a name="rag-custom-weaviate"></a>

[https://weaviate.io/](https://weaviate.io/) は、テキストや画像などのマルチモーダルメディアタイプをサポートする、一般的なオープンソースの低レイテンシーベクトルデータベースです。データベースにはオブジェクトとベクトルの両方が保存され、ベクトル検索と構造化フィルタリングが組み合わされます。Weaviate と Amazon Bedrock を使用して RAG ワークフローを構築する方法の詳細については、[「Build enterprise-ready generative AI solutions with Cohere foundation models in Amazon Bedrock and Weaviate vector database on AWS Marketplace](https://aws.amazon.com/blogs/machine-learning/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 クラスターとして にデプロイできます。