有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文提供了腾讯云向量数据库(Tencent Cloud VectorDB)采用开源工具 ann-benchmark 进行性能测试的详细数据。吞吐量 QPS 是指系统在单位时间内能够处理的查询请求数量,是衡量系统查询处理能力的重要指标。该性能测试集中测试不同维度的 QPS 数据、不同召回率下的 QPS 数据、不同数据规模的 QPS 数据。

不同维度最大 QPS 对比

测试目标:检索不同维度的数据集,向量索引选择 HNSW 类型,在召回率达到 99% 的情况下,获取最相似的 Top10的文档,对比某开源向量数据库与腾讯云向量数据库的 QPS 数据。
测试规格:向量数据库 P.MEDIUM(4CPU、8GB内存)、节点数量为 3。
测试数据集:数据量级100w,128、768、960三档维度的数据集
测试结论:数据集128维与768维某开源向量数据库与腾讯云向量数据库的 QPS 对比测试数据,如下所示。通过如下对比视图,可看出腾讯云的 QPS 性能具有显著优势。通过该项测试,可得出如下结论:
在不同维度的数据集下,HNSW 索引都可以达到99%以上的召回率。
在数据量相同的情况下,随着向量维度的增加,检索时资源开销增加,腾讯云向量数据库 QPS 会有所降低。
同一数据集,与某开源自建向量数据库对比,腾讯云向量数据库的 QPS 有36%到279%的提升。对比视图,如下所示。
?
数据集
分片和副本
索引类型
召回率
QPS
某开源向量数据库
腾讯云向量数据库
sift-128-euclideam
shardNum=1
replicaNum=2
HNSW(m=16,efConstruntion=200)
99%
3653
13843 (↑279%)
chinese100w-768-angular
2166
3346 (↑54%)
gist-960-euclidean
480
651 (↑36%)

不同召回率下的 QPS 对比

测试目标:检索100w数据量级,向量索引类型为 HNSW,设置不同的查询参数 ef(指定寻找节点邻居遍历的范围),分析召回率的变化,对比 QPS 数据。
测试规格:向量数据库 P.MEDIUM(4CPU、8GB内存)、节点数量为 3。
测试数据集:chinese100w-768-angular,数据量级100w,768维度的数据集。
测试结论:测试数据,如下表所示。分析可得出如下结论。
同一数据集,召回率要求越高,即 ef 参数设置越大时,QPS越低。 不同召回率 QPS 的对比视图,如下所示。
同一数据集,在其他配置不变的情况下,若需提高召回率,可适当增加查询参数 ef
?
数据集
分片和副本
索引类型
查询参数
召回率
QPS
chinese100w-768-angular
shardNum=1
replicaNum=2
HSNW(m=16,efConstruction=200)
ef=85
95%
6708
ef=149
98%
4671
ef=200
99%
3346

不同数据规模 QPS 对比

测试目标:检索不同数据规模的数据集,在召回率达到95%的情况下,获取最相似的 Top10的文档,分析不同数据量级的 QPS 数据。
测试规格:向量数据库 P.LARGE(8CPU、16GB内存)、节点数量为 3。
测试数据集:chinese100w-768-angular、chinese500w-768-angular、chinese1000w-768-angular 768维度不同数据量级的数据集。
测试结论:测试数据,如下表所示。分析可得出如下结论。
向量维度相同时,随着数据规模量级增加,检索时资源开销增加,QPS 有所降低。具体对比视图,如下所示。
从数据中可以看出,数据量越大,达到相同召回率时,需要设置的查询参数 ef 就会越大,检索过程中便需要遍历更大的搜索范围。因此,在实际应用HNSW 索引时,需要根据业务规模和召回率要求,提前测试并设置合理的 ef 参数。
?
数据集
数据量
分片和副本
索引类型
查询参数
召回率
QPS
chinese100w-768-angular
1,000,000
shardNum=1
replicaNum=2
HNSW(m=16,efConstruntion=500)
ef=112
95%
9891
chinese500w-768-angular
5,000,000
HNSW(m=16,efConstruntion=500)
ef=193
4223
chinese1000w-768-angular
10,000,000
HNSW(m=16,efConstruntion=500)
ef=224
2864
?


http://www.vxiaotou.com