评估 Amazon S3 Vectors 在 RAG 中的性能与精度

本次我想为大家介绍在 2025 年纽约 AWS 峰会上发布的 S3 Vectors,并对比其与现有向量存储的差异。

1. 引言

什么是 S3 Vectors

S3 Vectors 是 AWS S3 提供的新功能,属于向量存储服务。

由于基于 S3 提供,它与 AWS 上原有的向量存储服务(如 OpenSearch Serverless、Aurora 等)不同,无需承担运行成本,仅需根据数据量和 API 请求量支付费用。

因此,在部分使用场景下,可实现大幅成本削减。

aws.amazon.com

2. 与其他向量存储的成本对比

假设每月使用 1GB 存储容量并执行 30,000 次检索,以下为 S3 Vectors 与其他向量存储的成本对比示例。※AWS 区域按美国弗吉尼亚州北部计算。

向量存储名称月总费用明细
S3 Vectors$2.06存储:$2.00,请求:$0.06
OpenSearch Serverless$175.221 个 OCU:$175.2,存储:$0.02
Aurora Serverless v2$87.831 个 ACU:$87.60,存储:$0.10,I/O:$0.13
Pinecone$0(入门版)/$50(标准版)使用 5 个及以上索引时需选择标准版

可见,S3 Vectors 的成本远低于其他向量存储。

2. 功能层面的限制事项

尽管 S3 Vectors 是低成本的实用服务,但在以下功能上存在限制。

向量存储名称元数据过滤检索功能块大小(Chunk Size)限制分层块处理(Hierarchical Chunking)
S3 Vectors仅支持完全匹配、范围检索500tokens△(默认设置下不支持)
OpenSearch Serverless支持部分匹配等灵活检索无限制○(支持)

元数据过滤检索功能

进行元数据过滤检索时,无法像 OpenSearch Serverless 那样实现部分匹配等灵活检索,仅支持完全匹配、范围检索等基础方式。

docs.aws.amazon.com

块大小(Chunk Size)限制

可创建的最大块大小限制为 500tokens。

docs.aws.amazon.com

基于 Bedrock 知识库的分层块处理使用

在 Bedrock 知识库的默认设置下,同步时会出现以下错误,导致无法使用分层块处理。

Filterable metadata must have at most 2048 bytes (Service: S3Vectors, Status Code: 400, Request ID:XXXXXX)

若要从 Bedrock 知识库使用分层块处理,需预先在 S3 Vectors 中创建以下配置的索引。

aws s3vectors create-index \
  --vector-bucket-name "bucket-name" \
  --index-name "index-name" \
  --data-type "float32" \
  --dimension 256 \
  --distance-metric "cosine" \
  --metadata-configuration '{"nonFilterableMetadataKeys":["AMAZON_BEDROCK_METADATA"]}'

这是因为存储分层块处理的父块的元数据在默认情况下最多只能容纳 2048 字节。因此,需通过上述方式将包含父块的元数据指定为不可过滤的元数据。

docs.aws.amazon.com

此外,由于 S3 Vectors 仅支持向量检索,自然无法实现 OpenSearch Serverless 等支持的混合检索功能。

3. S3 Vectors 的最佳实践

官方文档中介绍了以下最佳实践:

最佳实践要点
重试处理推荐采用带退避策略的重试机制,以避免系统过载
通过索引拆分实现扩展按租户或用途拆分多个索引,可提升吞吐量
元数据设计将仅用于参考的文本等设为不可过滤的元数据,优化性能
访问控制可通过索引级别的 IAM 控制,灵活设计租户级访问限制等权限机制

docs.aws.amazon.com

尤其在访问控制方面,推荐使用 IAM 角色,这在实际运营中也具有较高的参考价值。

与其他向量存储的速度对比

接下来,我们对比大家最关心的检索速度,将 S3 Vectors 与 OpenSearch Serverless 进行比较。

检索条件如下,均基于 Bedrock 知识库进行检索对比:

  • 数据源:包含以下 IPA(独立行政法人信息处理推进机构)PDF 在内的约 800MB、1000 个文件
    • 《软件开发数据白皮书 2018-2019 信息通信业篇》
    • 《面向安全网站运营》
    • 《软件开发数据白皮书 2018-2019》
    • 《软件开发数据白皮书 2018-2019 金融保险业篇》
  • 嵌入模型(Embedding Model):Titan Text Embeddings v2
  • 嵌入类型(Embedding Type):1024 维浮点数向量嵌入
  • 块处理策略(Chunking Strategy):固定块处理
  • 块大小(Chunk Size):300

检索查询共准备了 100 种不同类型的问题(考虑了缓存生效的情况)。

问题示例

  • “制造业中新开发项目的工时与工期的关系”
  • “制造业改良开发中 FP 规模与工时的关系”

对比结果

向量存储名称平均时间(秒)最大时间(秒)最小时间(秒)
S3 Vectors0.6881.5990.553
OpenSearch Serverless0.4330.5070.383

结果显示,S3 Vectors 的平均速度比 OpenSearch Serverless 慢 0.2 秒左右,最大速度慢 1 秒左右。

但从实际表现来看,基本能达到文档中提及的 “1 秒内响应”,因此对于大部分 RAG 场景来说,这个速度是可接受的。

docs.aws.amazon.com

与其他向量存储的精度对比

接下来我们对比精度,分别测试 “仅向量检索” 以及 “使用 OpenSearch Serverless 的混合检索” 两种场景。

精度评估采用 Bedrock Evaluations 工具。

1. 基于向量检索的精度对比

首先验证仅使用向量检索的精度。与前文测试相同,采用相同的知识库配置进行对比。

评估指标如下:

  • Context relevance(上下文相关性):衡量获取的文本与问题在上下文层面的关联程度
  • Context coverage(上下文覆盖率):衡量获取的文本对正确数据中全部信息的覆盖程度

对比结果

S3 Vectors 的精度

OpenSearch Serverless(仅向量检索)的精度

由于采用相同的检索方式,两者精度基本持平。可见,仅使用向量检索时,S3 Vectors 的精度与 OpenSearch Serverless 等现有向量存储相比并无差异。

2. 与混合检索的精度对比

接下来,使用包含 ID 等信息的数据集,对比 S3 Vectors 与 “使用 OpenSearch Serverless 的混合检索” 的精度。

新数据集采用按用户整理的亚马逊评论数据

混合检索验证用数据集

  1. Amazon Reviews 2023

该数据集包含约 28,000 条 “产品 ID + 评论” 的组合数据,示例如下:

amazon-reviews-2023.github.io

product/productId: B000GKXY4S
product/title: Crazy Shape Scissor Set
product/price: unknown
review/userId: A1QA985ULVCQOB
review/profileName: Carleen M. Amadio "Lady Dragonfly"
review/helpfulness: 2/2
review/score: 5.0
review/time: 1314057600
review/summary: Fun for adults too!
review/text: I really enjoy these scissors for my inspiration books that I am making (like collage, but in books) and using these different textures these give is just wonderful, makes a great statement with the pictures and sayings. Want more, perfect for any need you have even for gifts as well. Pretty cool!

评估用的 “问题 – 答案” 示例如下,评估重点关注混合检索的核心优势 —— 关键词检索精度。

评估数据集示例

  • 问题:请告诉我商品 ID B000GKXY4S 的评论摘要。
  • 答案:Fun for adults too!

知识库配置与前文一致,仅将 OpenSearch Serverless 的检索方式指定为混合检索进行验证。

精度验证结果

S3 Vectors(向量检索)的精度

OpenSearch Serverless(混合检索)的精度

结果显示,在 Context relevance(上下文相关性)和 Context coverage(上下文覆盖率)两项指标上,使用混合检索的 OpenSearch Serverless 的精度均优于仅使用向量检索的 S3 Vectors。

以下为 “混合检索可获取正确结果,但 S3 Vectors 向量检索未能成功获取” 的问题示例:

问题示例

请告诉我商品 ID B000GKXY4S 的评论摘要。

S3 Vectors(向量检索)的检索结果

⇒ 未获取到问题中包含的 ID:B000GKXY4Sproduct/

productId: B000FP553C product/title: Kinesio Scissors

OpenSearch Serverless(混合检索)的检索结果

⇒ 成功获取到问题中包含的 ID:B000GKXY4Sproduct/

productId: B000GKXY4S product/title: Crazy Shape Scissor Set

由此可知,由于 S3 Vectors 仅支持向量检索,在指定 ID、单个单词等关键词进行检索时,可能会出现精度下降的情况。

总结

我们介绍了 S3 的新功能 S3 Vectors,并将其与现有的向量存储进行了比较。

尽管 S3 Vectors 在功能上存在限制,但对于仅需向量检索的场景,其功能已足够满足需求;加之其极具优势的低成本特性,非常值得采用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注