S3 Vectors 架构分析:无服务器向量存储如何实现 85% 成本优化
背景
RAG(Retrieval Augmented Generation)系统中,向量存储是核心组件之一。传统方案使用专用向量数据库,性能优异但运维成本高——集群需要 7×24 运行,不管是否有查询请求。
Amazon S3 Vectors 提供了一种不同的思路:将向量存储能力作为 S3 的原生 feature,按使用量计费,无需预置计算资源。本文分析其架构特点和适用边界。
架构设计
存储模型
S3 Vectors 引入两个新概念:
- Vector Bucket:向量数据的容器,类似 S3 Bucket
- Vector Index:在 Bucket 内创建的索引,指定维度和距离度量
s3v = boto3.client('s3vectors', region_name='cn-northwest-1')
s3v.create_vector_bucket(vectorBucketName='knowledge-base')
s3v.create_vector_index(
vectorBucketName='knowledge-base',
vectorIndexName='documents',
dimension=1024,
distanceMetric='cosine' # 支持 cosine / euclidean / dot_product
)
每个向量记录包含三部分:
key:唯一标识data:向量数据(float32)metadata:任意 JSON 元数据
查询模型
results = s3v.query_vectors(
vectorBucketName='knowledge-base',
vectorIndexName='documents',
queryVector={'float32': query_vector},
topK=10,
filter={'source': {'eq': 'confluence'}} # 元数据过滤
)
检索延迟约 50ms,支持基于 metadata 的过滤条件。
写入模型
支持批量写入:
s3v.put_vectors(
vectorBucketName='knowledge-base',
vectorIndexName='documents',
vectors=[
{'key': f'doc-{i}', 'data': {'float32': vec}, 'metadata': meta}
for i, (vec, meta) in enumerate(batch)
]
)
成本模型分析
S3 Vectors 的定价结构与传统向量库有本质区别:
传统方案:固定成本(集群实例)+ 变动成本(存储)
S3 Vectors:零固定成本 + 变动成本(存储 + 查询)
以 100 万文档、1000 万向量、日均 1 万查询为基准:
| 成本项 | OpenSearch 3节点 | S3 Vectors |
|---|---|---|
| 计算 | $600/月 | $0 |
| 存储 | $200/月 | $10/月 |
| 查询 | 含在计算费 | $90/月 |
| 总计 | $800/月 | $100/月 |
成本降低 87.5%。核心差异在于:S3 Vectors 没有"空闲成本"。
多模态支持
配合 Amazon Nova Multimodal Embeddings,S3 Vectors 支持跨模态检索:
# 文本向量和图片向量在同一空间
text_vec = nova_embed.embed_text("产品包装图")
image_vec = nova_embed.embed_image(image_bytes)
# 文本搜图片
results = s3v.query_vectors(
vectorBucketName='kb',
vectorIndexName='multimodal',
queryVector={'float32': text_vec},
topK=5
)
文档处理管线设计
完整的 RAG 管线架构:
数据源 → Sync Service → SQS → Process Service → S3 Vectors
↓
Bedrock Embedding
关键设计:
- 事件驱动:SQS 解耦同步和处理,Process Service 按队列深度自动扩缩
- Provider 模式:每个数据源一个 Provider 类,新增数据源只需实现接口
- 增量同步:通过 change detection 只处理变更文件,减少重复计算
性能边界
- 检索延迟:~50ms(P99),满足 RAG 场景,不满足实时推荐
- 写入吞吐:批量写入,适合离线处理,不适合高频实时更新
- 索引规模:原生支持大规模向量集,无需手动分片
- 并发查询:自动扩展,无需预估流量
与 Bedrock Knowledge Bases 的关系
S3 Vectors 可以作为 Bedrock Knowledge Bases 的后端存储。Bedrock KB 提供更高层次的抽象(自动分块、自动 Embedding、自动索引),S3 Vectors 提供存储层。
如果需要更细粒度的控制(自定义分块策略、自定义 Embedding 模型、自定义检索逻辑),直接使用 S3 Vectors API 更灵活。
总结
S3 Vectors 的核心价值是将向量存储从"固定成本"模式转变为"按需付费"模式。
适用场景:RAG 系统、企业知识库、语义搜索、多模态检索。
不适用场景:需要个位数 ms 延迟的实时系统。
对于大多数 RAG 应用,50ms 检索延迟和 85% 的成本降低,是一个值得认真考虑的 trade-off。
Amazon S3 Vectors:https://aws.amazon.com/cn/s3/features/vectors/
Amazon Bedrock:https://aws.amazon.com/cn/bedrock/
Amazon Nova Embeddings:https://aws.amazon.com/cn/ai/generative-ai/nova/

浙公网安备 33010602011771号