storing-and-querying-vectors
aws/agent-toolkit-for-aws
使用 Amazon S3 Vectors 存储和查询向量嵌入,这是一种经济高效的长期向量存储服务,拥有独立的 API 命名空间(s3vectors)。 适用场景:创建 S3 向量存储桶、向量索引、存储嵌入向量、语义搜索、RAG 向量存储、相似度搜索、向量数据库、从其他向量数据库迁移。 请勿用于:查询表格数据(请使用 querying-data-lake)、S3 对象存储,或需要持续处理数百/数千 QPS 的场景(请使用 OpenSearch)。
...展开全部关于storing-and-querying-vectors
storing-and-querying-vectors 是一份关于使用 Amazon S3 Vectors 的任务指南,该服务是 AWS 提供的一项高性价比服务,可在其专属的 s3vectors API 命名空间下,大规模存储和查询向量嵌入。 该服务针对长期存储进行了优化,冷查询的延迟低于一秒,热查询时延低至 100 毫秒,因此非常适合 RAG 及其他查询频率较低的工作负载。 决策指南会在适当情况下引导用户选择其他方案:若需每秒处理数百或数千次持续查询,或进行混合搜索和聚合(可选将 S3 Vectors 作为存储引擎),则推荐使用 OpenSearch;若需实时处理,则推荐采用 S3 Vectors 与 OpenSearch Serverless 组合的分层架构。
该工作流包括创建向量存储桶、创建索引、可选地使用 Amazon Bedrock 生成嵌入向量、写入向量以及执行查询,优先使用 AWS MCP 服务器端工具,并在必要时回退到 AWS CLI。其中一个核心主题是不可变性: 存储桶加密(SSE-S3 或 SSE-KMS)以及所有索引参数——包括维度(1 至 4096)、距离度量(余弦或欧几里得)以及最多十个不可过滤的元数据键——在创建后均无法更改,因此必须在前期确认无误。 嵌入维度必须与索引匹配,且存储和查询必须使用同一模型。
文中特别指出了操作限制:每次 put-vectors 调用最多 500 个向量;遇到 429 限流错误时需采用退避策略重试;通过 --filter 或 --return-metadata 进行元数据过滤需同时具备 s3vectors:QueryVectors 和 s3vectors:GetVectors 权限。 故障排除表将 DimensionMismatch、403 和 AccessDenied 等错误(该服务使用 s3vectors 命名空间,而非 s3)与具体的解决方法相对应,配套参考资料涵盖了限制、多租户模式以及元数据过滤。
常见问题
在何种情况下应选择 S3 Vectors 而不是 OpenSearch?
S3 Vectors 适用于查询频率较低且涉及 RAG 的经济高效的长期存储;对于需要维持数百或数千 QPS 的场景、混合搜索或聚合操作,本指南建议使用 OpenSearch,并可选地将 S3 Vectors 作为存储引擎。
哪些索引参数是不可变的?
所有索引参数在创建后均为不可变:维度(1 至 4096)、距离度量(余弦或欧几里得),以及最多十个不可过滤的元数据键,桶加密亦属此类。
每次调用最多可写入多少个向量?
每次 put-vectors 调用最多可写入 500 个向量;建议采用批处理方式,且批量操作应使用 SDK 而非 CLI。
元数据过滤器需要哪些 IAM 权限?
使用 --filter 或 --return-metadata 需要同时具备 s3vectors:QueryVectors 和 s3vectors:GetVectors 权限;若缺少 GetVectors 权限,这些选项将返回 403 错误。该服务使用 s3vectors 命名空间,而非 s3。
嵌入向量是如何生成和匹配的?
通过 Bedrock 的 invoke-model 调用(例如 Titan 或 Cohere);嵌入向量的维度必须与索引匹配,且存储和查询必须使用同一个模型。





首页
