

# S3 Vectors 最佳实践
<a name="s3-vectors-best-practices"></a>

Amazon S3 Vectors 提供专门构建的、经过成本优化的向量存储，供支持人工智能的应用程序使用，也可以对存储在 Amazon S3 中的内容进行语义搜索。S3 Vectors 旨在为存储向量数据集提供 S3 级别的弹性和持久性，冷查询的查询性能为亚秒级，热查询的查询性能低至 100 毫秒，非常适合需要构建和扩展向量索引的应用程序。借助 S3 Vectors，可以使用一组专用的 API 操作来存储、访问向量数据并对向量数据执行相似性查询，而无需预置任何基础设施。有关更多信息，请参阅 [使用 S3 Vectors 和向量存储桶](s3-vectors.md)。

 为最大限度地利用 S3 Vectors 的优势，建议您执行以下最佳实践。

**插入和删除向量**  
对于每个向量索引，您的应用程序每秒可处理最多 1000 个 [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) 请求，或者每秒最多可插入或删除最多 2500 个向量（以先达到的限制为准）。如果超过请求速率，则可能会收到 `429 TooManyRequestsException` 错误。  
为优化成本，我们建议您大批量插入和删除向量，每个 API 请求的批量大小上限为 500 个向量。如果您的工作负载需要较小的批量，您可以发送并发请求，请求速率限制为最高每秒 1000 个。要达到每秒 2500 个向量的最大吞吐量，您可以每秒发送 5 个批量（每个批量 500 个向量），或每秒发送 1000 个批量（每个批量平均 2.5 个向量）。

**访问和查询 S3 向量索引中的向量**  
 应用程序对于每个 S3 向量索引，每秒可以实现数百个 [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)。

**使用单独的向量索引实现多租赁**  
可以通过为每个租户使用单个向量索引来组织向量数据，从而实现多租赁。可以使用 IAM 策略和存储桶策略，来限制每个租户只能访问其指定的向量索引。这种方法无需为每个租户创建单独的存储桶，从而有助于保持数据隔离并简化管理。有关更多信息，请参阅 [S3 Vectors 中的身份和访问权限管理](s3-vectors-access-management.md)。

**为向量索引配置不可筛选的元数据字段**  
创建向量索引时，将不需要筛选的元数据字段配置为不可筛选的元数据键。例如，可将向量嵌入的文本分块存储为不可筛选的元数据字段（当这些字段只是供参考时）。有关更多信息，请参阅 [不可筛选的元数据](s3-vectors-metadata-filtering.md#s3-vectors-metadata-filtering-non-filterable)。