AMD 最近发布了一篇文章,用于推广其新推出的 Amazon S3 Vectors 向量查询功能,相当不错的介绍,相比其它向量数据库,S3 Vectors 成本能减少 90%。
从 AI 兴起后,催生了各种 RAG 应用,比如知识检索、生成式AI、推荐系统都会用到向量查询,并出现了一些新的数据库,即向量数据库,包括 Pinecone、Weaviate、Milvus。
但这些向量数据库成本非常大。
首先就是存储成本,原始数据要存储,向量也要存储,1000个字的文件大概5KB,而1536维的向量大概6KB,可见高纬度向量的容量并不小。
而且为了保障毫秒级的查询性能,向量数据库可能要使用高速SSD,在S3中,SSD存储成本是标准存储的 10-20 倍。
其次索引维护成本,各种索引结构( HNSW、IVF)更新的时候也要成本,新增一条记录,需要大量的运算资源。
第三数据增长带来的非线性成本,比如向量数量从100万增到1000万时,增加的成本并不是10倍,要考虑向量数据库的冗余、分片架构。
AWS 也做了一个计算。
比如一个项目中要存储500万个数据(2TB容量)转换后需要50亿个向量(每个文件切分多段),每个月的成本如下:
-
• 50亿个向量 × 向 量 月 = $ 20000 -
• 计算资源,16个独立的计算资源 = $48000 -
• 索引维护和备份,每天新增10万个文件 = $15000 -
• 数据跨区传输 = $8000
也就是说每个月大概10万美元。
那 S3 Vectors 是如何做的呢?
S3 是全球最著名的对象存储服务,如果你的数据本来就存储在 S3,那么使用 S3 Vectors 非常合适,这也是 Pinecone 这样的向量数据库无法比拟的。
S3 Vectors 有几个特性。
首先单个索引可以支持20亿个向量,挺夸张的。
其次查询性能上,分冷查询和热查询,后者响应时间基本上100毫秒以内,已经很及时了。
第三写入性能上,每秒支持最多 1000 次 PUT,基本能满足大部分需求了。
那 S3 Vectors 如何能压缩 90% 成本呢,假设向量存储容量 20TB?
-
• 向量存储成本,20TB × 460 -
• 查询飞跃,每月1000万此查询 = $3000 -
• PUT 费用,每日10万个文件,每个月 1TB 容量 = $ 200
当然这里面AWS没有算原始数据存储成本,需要注意。
个人的收获就是向量数据库的成本确实不小,所以容量、成本规划很重要。
S3 Vectors 的优势在于如果你本身有大量文档存储在 S3 上,那么使用它确实很合适。

