本文档是基于 Milvus 0.11.0 的性能测试结果。
CPU: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (12 Cores)
GPU: GeForce GTX 1060 6GB 、 GeForce GTX 1660 6GB
本次测试所使用的数据集为 SIFT1B ,共有十亿条128维的向量。关于该数据集的详细信息请参考:http://corpus-texmex.irisa.fr/。
本文中用到的一些符号及专用名词说明如下:
专用名词 | 解释 |
---|---|
nq | 查询的目标向量条目数,在搜索时定义。 |
topk | 与查询的目标向量最相似的 topk 个结果。 |
time | 批量查询时的总查询时间 |
nprobe | 查询时需要搜索的分桶数目,在搜索时定义。 |
(注:测试性能与nprobe值相关,性能随着nprobe增大而降低,但是精确率会随之增加。用户可根据具体场景要求设置nprobe. )
各类型索引如何选择可参考:https://milvus.io/cn/blogs/2019-12-03-select-index.md
测试参数设置:nlist=4096, sift1m 、segment_row_limit =1000000
sift10m、sift100m、segment_row_limit=2000000
sift1m测试结果: 该测试中,选取了sift1B数据集中的前1,000,000条向量。
sift10m测试结果: 该测试中,选取了sift1B数据集中的前10,000,000条向量。
sift100m测试结果: 该测试中,选取了sift1B数据集中的前100,000,000条向量。
本次测试过程中,数据每10万为一个批次导入milvus中,10万条128维的向量导入约耗时:2S。
(索引建立耗时:8s)
(nprobe:256)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
topk=1 | 98.2% | 98.0% | 98.8% |
topk=10 | 98.9% | 97.8% | 97.5% |
topk=100 | 98.2% | 97.8% | 97.7% |
topk=500 | 98.4% | 96.9% | 98.4% |
性能:
Time(s) | Topk =1 | Topk=10 | Topk=100 | Topk =500 |
---|---|---|---|---|
nq =1 | 0.0086 | 0.0063 | 0.0065 | 0.0082 |
nq =10 | 0.0159 | 0.0138 | 0.0153 | 0.0187 |
nq =100 | 0.0285 | 0.0318 | 0.0336 | 0.0422 |
nq =500 | 0.0976 | 0.0988 | 0.1154 | 0.1590 |
(cpu查询)
(索引建立耗时:7.8s)
(nprobe:256)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
Topk =1 | 99.4% | 98.8% | 99.0% |
Topk =10 | 98.7% | 98.7% | 98.4% |
Topk =10 | 98.7% | 98.7% | 98.4% |
Topk =500 | 98.0% | 98.1% | 98.0% |
性能:
time(S) | topk=1 | topk=10 | topk=100 | topk=500 |
---|---|---|---|---|
nq=1 | 0.0163 | 0.0062 | 0.0065 | 0.0076 |
nq=10 | 0.0141 | 0.0142 | 0.0152 | 0.0168 |
nq=100 | 0.0332 | 0.0334 | 0.0369 | 0.0495 |
nq=500 | 0.1093 | 0.1054 | 0.1235 | 0.1713 |
(索引建立耗时:64s)
(nprobe:128)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
topk=1 | 98.0% | 98.4% | 98.6% |
topk=10 | 98.2% | 97.7% | 98.2% |
topk=100 | 98.3% | 98.0% | 98.1% |
topk=500 | 97.8% | 97.5% | 97.4% |
性能:
(cpu查询)
time(S) | topk=1 | topk=10 | topk=100 | topk=500 |
---|---|---|---|---|
nq=1 | 0.0189 | 0.0176 | 0.0183 | 0.0253 |
nq=10 | 0.0594 | 0.0570 | 0.0598 | 0.0638 |
nq=100 | 0.0982 | 0.1011 | 0.1056 | 0.1234 |
nq=500 | 0.3526 | 0.3371 | 0.3712 | 0.4370 |
(nprobe:128)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
topk=1 | 97.0% | 98.6% | 97.6% |
topk=10 | 98.1% | 98.0% | 97.7% |
topk=100 | 98.1% | 98.2% | 98.0% |
topk=500 | 97.6% | 97.7% | 97.6% |
性能:
time(S) | topk=1 | topk=10 | topk=100 | topk=500 |
---|---|---|---|---|
nq=1 | 0.0180 | 0.0187 | 0.0189 | 0.0369 |
nq=10 | 0.0584 | 0.0684 | 0.0603 | 0.0692 |
nq=100 | 0.0971 | 0.1038 | 0.1033 | 0.1203 |
nq=500 | 0.3494 | 0.3496 | 0.0382 | 0.4585 |
nq=1000 | 0.7034 | 0.6702 | 0.7381 | 0.8805 |
(索引建立耗时:300s)
(nprobe:64)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
topk=1 | 97.2% | 97.2% | 97.6% |
topk=10 | 97.3% | 97.5% | 97.4% |
topk=100 | 97.2% | 97.5% | 97.5% |
topk=500 | 96.6% | 96.8% | 96.9% |
性能:
(cpu查询)
time(S) | topk=1 | topk=10 | topk=100 | topk=500 |
---|---|---|---|---|
nq=1 | 0.1293 | 0.1388 | 0.148 | 0.2495 |
nq=10 | 0.3315 | 0.3185 | 0.3366 | 0.3716 |
nq=100 | 0.5495 | 0.5313 | 0.5587 | 0.6257 |
nq=500 | 1.7314 | 1.8109 | 2.119 | 2.1481 |
nq=1000 | 3.3412 | 3.3696 | 3.5066 | 4.1944 |
(nprobe:64)
准确率:
本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。
accuracy | 第一次 | 第二次 | 第三次 |
---|---|---|---|
topk=1 | 98.2% | 96.0% | 98.2% |
topk=10 | 97.4% | 97.2% | 97.3% |
topk=100 | 97.7% | 97.3% | 97.5% |
topk=500 | 97.1% | 96.7% | 97.0% |
性能:
time(S) | topk=1 | topk=10 | topk=100 | topk=500 |
---|---|---|---|---|
nq=1 | 0.1499 | 0.1477 | 0.1415 | 0.2358 |
nq=10 | 0.3340 | 0.3572 | 0.3330 | 0.4376 |
nq=100 | 0.5142 | 0.5120 | 0.6066 | 0.6223 |
nq=500 | 1.6685 | 1.6852 | 1.7850 | 2.0676 |
nq=1000 | 3.2482 | 3.2930 | 3.2112 | 3.8729 |