

# S3 Vectors のベストプラクティス
<a name="s3-vectors-best-practices"></a>

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

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

**ベクトルの挿入と削除**  
アプリケーションは、ベクトルインデックスごとに 1 秒あたり最大 1,000 の [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) または [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) リクエストを実行できます。または、ベクトルインデックスごとに 1 秒あたり最大 2,500 個のベクトルを挿入または削除できます。どちらかの制限値に先に達した場合、その制限値が適用されます。リクエストレートを超えると、`429 TooManyRequestsException` エラーが表示されることがあります。  
コストを最適化するには、API リクエストごとに最大 500 個のベクトルまで、大きなバッチでベクトルを挿入および削除することをお勧めします。ワークロードでより小さなバッチが必要な場合は、1 秒あたり最大 1,000 リクエストの制限まで同時リクエストを送信できます。1 秒あたり 2,500 個のベクトルの最大スループットを実現するには、それぞれ 500 個のベクトルで 1 秒あたり 5 バッチ、またはそれぞれ平均 2.5 個のベクトルで 1 秒あたり 1,000 バッチを送信します。

**S3 ベクトルインデックス内のベクトルへのアクセスとクエリ**  
 アプリケーションは、S3 ベクトルインデックスごとに 1 秒あたり数百の [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html)、[GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html)、または [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) リクエストを達成できます。リクエストレートを超えると、`429 TooManyRequestsException` エラーが表示されることがあります。再試行メカニズムを使用し、より少ないリクエストを送信するようにアプリケーションを設定することをお勧めします。

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

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

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