S3 Vectors のベストプラクティス - Amazon Simple Storage Service

S3 Vectors のベストプラクティス

Amazon S3 Vectors は、AI 対応アプリケーションや Amazon S3 に保存されているコンテンツのセマンティック検索で使用できるように、専用のコスト最適化ベクトルストレージを提供します。S3 Vectors は、ベクトルデータセットを 1 秒未満のクエリパフォーマンスで保存するための S3 レベルの伸縮性と耐久性を提供するように設計されており、ベクトルインデックスを構築および拡張する必要があるアプリケーションに最適です。S3 Vectors を使用すると、専用の API オペレーションのセットを使用して、インフラストラクチャをプロビジョニングすることなく、ベクトルデータに対して類似度クエリを保存、アクセス、実行できます。詳細については、「S3 Vectors とベクトルバケットの操作」を参照してください。

S3 Vectors の利点を最大限に高めるために、以下のベストプラクティスを実践することをお勧めします。

ベクトルの挿入と削除

アプリケーションは、ベクトルインデックスごとに 1 秒あたり少なくとも 5 つの PutVectors および DeleteVectors リクエストを達成できます。リクエストレートを超えると、429 TooManyRequestsException エラーが表示されることがあります。リクエストスループットを最大化し、速度と効率を最適化するには、API リクエストごとに最大 500 個のベクトルまで、大規模なバッチでベクトルを挿入および削除することをお勧めします。詳細については、「ベクトルインデックス」を参照してください。

S3 ベクトルインデックス内のベクトルへのアクセスとクエリ

アプリケーションは、S3 ベクトルインデックスごとに 1 秒あたり数百の QueryVectorsGetVectors、または ListVectors リクエストを達成できます。リクエストレートを超えると、429 TooManyRequestsException エラーが表示されることがあります。再試行メカニズムを使用し、より少ないリクエストを送信するようにアプリケーションを設定することをお勧めします。

ベクトルインデックス間のスケーリング

ベクトルインデックスあたりのクエリパフォーマンスを向上させるには、可能であれば複数のベクトルインデックス間でベクトルを分割するようにアプリケーションを設定することを検討してください。例えば、マルチテナントワークロードがあり、アプリケーションが各テナントを個別にクエリする場合は、各テナントのベクトルを個別のベクトルインデックスに保存することを検討してください。詳細については、「ベクトルインデックス」を参照してください。

個別のベクトルインデックスを使用したマルチテナンシーの実装

マルチテナンシーを実現するには、テナントごとに 1 つのベクトルインデックスを使用してベクトルデータを整理します。IAM ポリシーとバケットポリシーを使用して、各テナントのアクセスを指定されたベクトルインデックスのみに制限できます。このアプローチにより、テナントごとに個別のバケットを作成する必要がなくなり、データの分離を維持し、管理を簡素化できます。詳細については、「S3 Vectors での ID およびアクセス管理」を参照してください。

ベクトルインデックスのフィルタリング不可能なメタデータフィールドの設定

ベクトルインデックスを作成する際は、フィルタリング不可能なメタデータキーとしてフィルタリングを必要としないメタデータフィールドを設定します。例えば、ベクトル埋め込みのテキストチャンクは、参照のみが必要な場合、フィルタリング不可能なメタデータフィールドとして保存します。詳細については、「フィルタリング不可能なメタデータ」を参照してください。