-
Notifications
You must be signed in to change notification settings - Fork 317
Vearch召回评测
SIFT数据:http://corpus-texmex.irisa.fr/
VGG数据:使用深度学习模型vgg获得
表1 实验数据
dataset | file size | dimension | nb base vector | nb query vector |
---|---|---|---|---|
Sift 1M | 492M | 128 | 1,000,000 | 10,000 |
Sift 10M | 4.8G | 128 | 10,000,000 | 10.000 |
Vgg 1M | 2G | 512 | 1,000,000 | 10.000 |
Vgg 10M | 20G | 512 | 10,000,000 | 10.000 |
配置1:
3master + 5router + 1ps
表2 实验机器配置1
类型 | CPU | GPU型号 | 内存 |
---|---|---|---|
master | 2核 Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz | 无 | 4G |
router | 8核 Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz | 无 | 16G |
ps | 16核 Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz | Tesla P40 | 32G |
配置2:
1master + 1router + 1ps布置在同一台机器上,性能:56C、256G、Intel(R) Xeon(R) CPU E5-2680 v4 @2.40GHz,显卡数量及型号:4张 Tesla P40。
配置3:
3master + 5router + 1ps
表3 实验机器配置3
类型 | CPU | GPU型号 | 内存 |
---|---|---|---|
master | 2核 Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz | 无 | 4G |
router | 8核 Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz | 无 | 16G |
ps | 8核 Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz | 无 | 16G |
使用的机器为配置1,数据集使用的是SIFT1M,ivfpq使用CPU计算时,建表中retrieval_type设为IVFPQ,使用GPU计算时,建表中retrieval_type设为GPU,两种计算方式召回相同,测试结果如下表,并发性能测试如下图所示:
表4 SIFT1M并发实验召回及性能
ncen | nsub | nprobe | recall@1 | recall@10 | recall@100 | 并发 | cpu-QPS | cpu- tp99 | gpu-QPS | gpu-tp99 |
---|---|---|---|---|---|---|---|---|---|---|
256 | 32 | 1 | 0.5236 | 0.5255 | 0.5255 | 30 | 3522 | 27 | 4402 | 10 |
256 | 32 | 5 | 0.8849 | 0.8912 | 0.8912 | 30 | 3318 | 32 | 4157 | 11 |
256 | 32 | 10 | 0.9588 | 0.9658 | 0.9658 | 30 | 2994 | 32 | 4000 | 12 |
256 | 32 | 20 | 0.9876 | 0.9942 | 0.9942 | 30 | 2507 | 40 | 4050 | 12 |
256 | 32 | 30 | 0.9925 | 0.9994 | 0.9994 | 30 | 1834 | 43 | 4079 | 12 |
256 | 32 | 40 | 0.9933 | 0.9998 | 0.9998 | 30 | 1585 | 48 | 4115 | 11 |
256 | 32 | 50 | 0.9934 | 0.9999 | 0.9999 | 30 | 1431 | 52 | 4093 | 12 |
256 | 32 | 80 | 0.9935 | 1 | 1 | 30 | 1089 | 63 | 3958 | 12 |
256 | 32 | 100 | 0.9935 | 1 | 1 | 30 | 925 | 68 | 3786 | 12 |
256 | 32 | 200 | 0.9936 | 1 | 1 | 30 | 475 | 93 | 3212 | 14 |
图1 SIFT1M CPU并发实验折线图
可以看出对于本集群不同参数下,30并发量下QPS较高。不同的建表参数、不同配置的电脑和不同数据量最佳的并发量可能有所变化。
图2 SIFT1M GPU并发实验折线图
和CPU实验结果相似,30并发量下QPS较高。
使用的机器为配置2,数据集使用的是SIFT1M,使用GPU计算,建表中retrieval_type设为GPU,nsubvector=64,单条搜索,测试结果曲线图如下图所示,详细结果如下表所示:
表5 SIFT1M实验recall@1结果
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 0.5901 | 0.5319 | 0.4801 | 0.4235 | 0.7366 | 0.3358 | 0.3015 | 0.2781 |
5 | 0.9306 | 0.8973 | 0.848 | 0.7868 | 0.7366 | 0.6848 | 0.6314 | 0.5818 |
10 | 0.9799 | 0.9666 | 0.9333 | 0.8957 | 0.86 | 0.8138 | 0.7603 | 0.7114 |
20 | 0.9918 | 0.9883 | 0.977 | 0.9584 | 0.9371 | 0.9024 | 0.8618 | 0.8173 |
30 | 0.9924 | 0.992 | 0.9867 | 0.9745 | 0.963 | 0.9377 | 0.9066 | 0.8718 |
40 | 0.9924 | 0.992 | 0.989 | 0.9814 | 0.9749 | 0.9534 | 0.9326 | 0.9004 |
50 | 0.9928 | 0.9925 | 0.9914 | 0.9861 | 0.9801 | 0.9663 | 0.9473 | 0.9218 |
80 | 0.9928 | 0.9925 | 0.9923 | 0.9898 | 0.9892 | 0.9814 | 0.9711 | 0.9535 |
100 | 0.9928 | 0.9925 | 0.9925 | 0.9913 | 0.9905 | 0.9852 | 0.9783 | 0.9642 |
200 | - | 0.9926 | 0.9925 | 0.9915 | 0.9931 | 0.9919 | 0.9885 | 0.9835 |
表6 上表对应的QPS
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 171 | 173 | 176 | 174 | 172 | 173 | 177 | 194 |
5 | 174 | 176 | 175 | 179 | 177 | 177 | 172 | 172 |
10 | 173 | 176 | 175 | 176 | 177 | 176 | 176 | 175 |
20 | 173 | 179 | 176 | 179 | 178 | 174 | 176 | 175 |
30 | 174 | 175 | 171 | 180 | 175 | 178 | 176 | 174 |
40 | 172 | 174 | 176 | 177 | 177 | 177 | 176 | 177 |
50 | 173 | 175 | 174 | 179 | 176 | 176 | 175 | 174 |
80 | 170 | 174 | 173 | 177 | 175 | 174 | 175 | 171 |
100 | 166 | 171 | 172 | 176 | 174 | 174 | 173 | 169 |
200 | - | 165 | 170 | 174 | 171 | 171 | 167 | 168 |
若将召回率大于96%设置为合格,表中粗体字表示ncentroids一定的情况下,召回超过96%时最小的nprobe。观察QPS结果中的加粗字体,不难发现当ncentroids设置在1024左右时,QPS较大。
图3 SIFT1M实验曲线图
使用的机器为配置2,数据集使用的是VGG1M,使用GPU计算,建表中retrieval_type设为GPU,nsubvector=64,单条搜索,实验结果曲线图如下图所示,详细结果如下表所示:
表7 VGG1M实验recall@1结果
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 0.578 | 0.5119 | 0.4861 | 0.4347 | 0.3999 | 0.3679 | 0.3411 | 0.3127 |
5 | 0.8953 | 0.8535 | 0.8159 | 0.7633 | 0.7223 | 0.6804 | 0.6382 | 0.5971 |
10 | 0.9584 | 0.9322 | 0.9008 | 0.8642 | 0.8246 | 0.7873 | 0.7549 | 0.7144 |
20 | 0.9824 | 0.9706 | 0.9529 | 0.9298 | 0.9001 | 0.8736 | 0.8422 | 0.8113 |
30 | 0.9871 | 0.9811 | 0.9711 | 0.9532 | 0.9299 | 0.9083 | 0.8846 | 0.8571 |
40 | 0.9887 | 0.9853 | 0.9796 | 0.9651 | 0.9456 | 0.929 | 0.9081 | 0.886 |
50 | 0.9896 | 0.9872 | 0.984 | 0.9733 | 0.9567 | 0.9432 | 0.9259 | 0.9061 |
80 | 0.9898 | 0.9897 | 0.9886 | 0.9826 | 0.9734 | 0.9648 | 0.951 | 0.9346 |
100 | 0.9899 | 0.9903 | 0.9895 | 0.9852 | 0.9787 | 0.9719 | 0.9657 | 0.9468 |
200 | - | 0.9905 | 0.99 | 0.988 | 0.9877 | 0.9857 | 0.9786 | 0.9724 |
表8 对应的单条搜索QPS
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 141 | 137 | 139 | 140 | 140 | 139 | 142 | 145 |
5 | 141 | 139 | 141 | 143 | 140 | 139 | 140 | 138 |
10 | 140 | 137 | 141 | 141 | 141 | 140 | 139 | 136 |
20 | 140 | 138 | 140 | 141 | 143 | 140 | 139 | 137 |
30 | 141 | 137 | 141 | 140 | 139 | 141 | 140 | 136 |
40 | 139 | 138 | 139 | 141 | 140 | 138 | 141 | 137 |
50 | 138 | 137 | 140 | 142 | 138 | 140 | 140 | 137 |
80 | 137 | 134 | 141 | 141 | 140 | 138 | 139 | 137 |
100 | 135 | 134 | 140 | 140 | 139 | 137 | 138 | 138 |
200 | - | 134 | 139 | 137 | 135 | 137 | 136 | 133 |
若将召回率大于96%设置为合格,表中粗体字表示ncentroids一定的情况下,召回率超过96%时最小的nprobe。观察QPS结果中的加粗字体,不难发现当ncentroids设置在1024左右时,QPS较大。
图4 VGG1M实验曲线
使用的机器为配置2,数据集使用的是SIFT10M,使用GPU计算,建表中retrieval_type设为GPU,nsubvector=64,单条搜索,测试结果如下表,曲线图如下图所示:
表9 SIFT10M数据recall@1结果
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 0.469 | 0.439 | 0.355 | 0.333 | 0.285 | 0.234 | 0.192 | 0.160 |
5 | 0.853 | 0.817 | 0.741 | 0.696 | 0.622 | 0.547 | 0.473 | 0.422 |
10 | 0.944 | 0.917 | 0.865 | 0.825 | 0.762 | 0.693 | 0.614 | 0.573 |
20 | 0.985 | 0.973 | 0.941 | 0.916 | 0.868 | 0.817 | 0.752 | 0.708 |
30 | 0.995 | 0.989 | 0.967 | 0.952 | 0.915 | 0.870 | 0.819 | 0.779 |
40 | 0.998 | 0.995 | 0.981 | 0.967 | 0.939 | 0.906 | 0.860 | 0.823 |
50 | 0.999 | 0.998 | 0.988 | 0.976 | 0.953 | 0.930 | 0.888 | 0.854 |
80 | 1 | 1 | 0.997 | 0.991 | 0.977 | 0.960 | 0.932 | 0.908 |
100 | 1 | 1 | 0.999 | 0.995 | 0.985 | 0.970 | 0.948 | 0.928 |
200 | - | 1 | 1 | 0.999 | 0.997 | 0.991 | 0.981 | 0.972 |
SR | 15.63% | 7.81% | 5.86% | 3.91% | 3.91% | 1.95% | 2.44% | 1.22% |
注;SR表示数据均匀分布的情况下,搜索的数据占总数的比例。
表10 对应的单条搜索的QPS
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 169 | 173 | 172 | 174 | 173 | 170 | 172 | 171 |
5 | 170 | 170 | 171 | 173 | 173 | 169 | 177 | 174 |
10 | 163 | 168 | 169 | 174 | 174 | 173 | 176 | 171 |
20 | 159 | 165 | 170 | 173 | 171 | 174 | 178 | 172 |
30 | 152 | 161 | 166 | 171 | 171 | 171 | 171 | 175 |
40 | 153 | 162 | 166 | 170 | 173 | 173 | 174 | 173 |
50 | 151 | 163 | 167 | 173 | 170 | 171 | 172 | 171 |
80 | 141 | 154 | 164 | 169 | 171 | 170 | 169 | 169 |
100 | 132 | 150 | 162 | 167 | 168 | 170 | 168 | 170 |
200 | - | 133 | 150 | 160 | 163 | 165 | 164 | 164 |
观察QPS值,不难发现当ncentroids设置为2048时,recall比较高,SR在2% - 5%之间。根据实验结果表的定量分析和根据曲线图的定性分析得出的规律一致。保证了结论的可靠性。
图5 SIFT10M实验结果曲线
图片中显示,当ncentroids为256时,召回率较高,但QPS较差。当ncentroids为2048和8192时,QPS差异较小,但ncentroids为2048时,召回率较高。对于图像中的3条召回曲线(3条实线),截取3条曲线中的recall=0.95的点,这三点A、B、C对应QPS中B点的QPS较大,因此,ncentroids为256、2048和8196中2048较好。类似地,VGG10M数据也符合这个规则。
使用的机器为配置2,数据集使用的是VGG10M,使用GPU计算,建表中retrieval_type设为GPU,nsubvector=64,单条搜索,测试结果如下表,曲线图如下图所示:
表11 VGG10M recall@1结果
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 0.634 | 0.648 | 0.565 | 0.536 | 0.500 | 0.461 | 0.434 | 0.405 |
5 | 0.907 | 0.892 | 0.850 | 0.816 | 0.784 | 0.746 | 0.715 | - |
10 | 0.949 | 0.943 | 0.915 | 0.887 | 0.861 | 0.838 | 0.807 | 0.782 |
20 | 0.966 | 0.962 | 0.950 | 0.932 | 0.914 | 0.896 | 0.874 | 0.856 |
30 | 0.970 | 0.968 | 0.962 | 0.950 | 0.938 | 0.921 | 0.909 | - |
40 | 0.971 | 0.971 | 0.966 | 0.958 | 0.948 | 0.937 | 0.925 | - |
50 | 0.971 | 0.973 | 0.968 | 0.964 | 0.954 | 0.942 | 0.935 | 0.919 |
80 | 0.971 | 0.973 | 0.971 | 0.968 | 0.965 | 0.957 | 0.949 | 0.941 |
100 | 0.971 | 0.973 | 0.972 | 0.969 | 0.967 | 0.961 | 0.955 | 0.947 |
200 | - | 0.973 | 0.973 | 0.972 | 0.972 | 0.969 | 0.968 | 0.962 |
SR | 15.63% | 7.81% | 5.86% | 4.88% | 3.91% | 2.44% | 2.44% | 1.22% |
注;SR表示数据均匀分布的情况下,搜索的数据占总数的比例。
表12 对应的QPS结果
npr\ncen | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|---|---|---|
1 | 131 | 135 | 135 | 136 | 135 | 134 | 138 | 130 |
5 | 135 | 135 | 135 | 136 | 135 | 136 | 136 | - |
10 | 132 | 134 | 135 | 137 | 136 | 138 | 136 | 136 |
20 | 128 | 129 | 133 | 135 | 137 | 137 | 136 | 133 |
30 | 124 | 128 | 133 | 136 | 133 | 137 | 135 | - |
40 | 123 | 132 | 133 | 137 | 135 | 135 | 133 | - |
50 | 121 | 132 | 132 | 136 | 135 | 137 | 134 | 133 |
80 | 114 | 123 | 129 | 134 | 132 | 135 | 132 | 134 |
100 | 109 | 122 | 127 | 133 | 133 | 136 | 132 | 133 |
200 | - | 109 | 118 | 128 | 128 | 132 | 130 | 130 |
若将召回率大于96%设置为合格,表中粗体字表示ncentroids一定的情况下,召回率超过96%时最小的nprobe。观察QPS结果中的加粗字体,不难发现当ncentroids设置在2048左右时,QPS较高,SR在2% - 5%之间。
图6 VGG10实验结果曲线图
我们可以看到,在其他参数保持不变的情况下,当nprobe超过一定值时,其recall基本保持不变。在其他参数一定条件下,nprobe与QPS呈一定的线性关系,且QPS随nprobe的增大而减小。在256、2048、8192三个ncentroid值中,2048 ncentroid的召回率和QPS效果较好。
使用的机器为配置1,数据集使用的是SIFT1M,并发量为50,测试结果如下。
表13 召回和性能测试结果
nlinks | efCon | efSearch | Time | Memory | CPU | recall@1 | recall@10 | recall@1 00 | recall@1 300 | QPS | TP99 |
---|---|---|---|---|---|---|---|---|---|---|---|
32 | 40 | 64 | 135.2s | 960M | 100% | 0.9794 | 0.9868 | 0.9868 | 0.9868 | 1415 | 73ms |
32 | 40 | 128 | 132.3s | 898M | 100% | 0.9888 | 0.9968 | 0.9968 | 0.9968 | 1352 | 74ms |
32 | 40 | 256 | 133.2s | 875M | 100% | 0.9913 | 0.9984 | 0.9984 | 0.9984 | 1066 | 84ms |
32 | 40 | 512 | 132.3s | 842M | 100% | 0.9926 | 0.9995 | 0.9995 | 0.9995 | 690 | 102ms |
32 | 50 | 64 | 144.6s | 960M | 100% | 0.9811 | 0.9886 | 0.9886 | 0.9886 | 1476 | 70ms |
32 | 50 | 128 | 143.3s | 855M | 100% | 0.9899 | 0.9974 | 0.9974 | 0.9974 | 1319 | 76ms |
32 | 50 | 256 | 147.1s | 878M | 100% | 0.9926 | 0.9994 | 0.9994 | 0.9994 | 1066 | 85ms |
32 | 50 | 512 | 143.2s | 845M | 100% | 0.9926 | 0.9999 | 0.9999 | 0.9999 | 687 | 101ms |
32 | 80 | 64 | 143.6s | 881M | 100% | 0.9741 | 0.9806 | 0.9806 | 0.9806 | 1565 | 71ms |
32 | 80 | 128 | 142.7s | 901M | 100% | 0.9877 | 0.9950 | 0.9950 | 0.9950 | 1446 | 77ms |
32 | 80 | 256 | 144.7s | 875M | 100% | 0.9921 | 0.9990 | 0.9990 | 0.9990 | 1170 | 81ms |
32 | 80 | 512 | 143.6s | 875M | 100% | 0.9928 | 0.9999 | 0.9999 | 0.9999 | 882 | 92ms |
32 | 128 | 64 | 191.3s | 875M | 100% | 0.9812 | 0.9884 | 0.9884 | 0.9884 | 1589 | 70ms |
32 | 128 | 128 | 188.4s | 875M | 100% | 0.9900 | 0.9973 | 0.9973 | 0.9973 | 1369 | 75ms |
32 | 128 | 256 | 189.7s | 859M | 100% | 0.9927 | 0.9996 | 0.9996 | 0.9996 | 1101 | 83ms |
32 | 128 | 512 | 141.3s | 813M | 100% | 0.9918 | 0.9997 | 0.9997 | 0.9997 | 884 | 92ms |
32 | 256 | 64 | 311.6s | 859M | 100% | 0.9860 | 0.9929 | 0.9929 | 0.9929 | 1493 | 70ms |
32 | 256 | 128 | 309.9s | 865M | 100% | 0.9915 | 0.9990 | 0.9990 | 0.9990 | 1331 | 75ms |
32 | 256 | 256 | 314.6s | 845M | 100% | 0.9934 | 0.9999 | 0.9999 | 0.9999 | 1072 | 84ms |
32 | 256 | 512 | 324.3s | 950M | 100% | 0.9934 | 0.9999 | 0.9999 | 0.9999 | 718 | 102ms |
使用的机器为配置1,数据集使用的是SIFT1M,并发量为30,测试结果如下表,性能曲线图如下图:
表14 30并发量实验
nlinks | efConstruction | efSearch | Recall@1 | QPS | tp99 |
---|---|---|---|---|---|
32 | 40 | 4 | 0.6789 | 4328.3 | 11ms |
32 | 40 | 8 | 0.8195 | 4257.29 | 13ms |
32 | 40 | 16 | 0.9089 | 3870.71 | 20ms |
32 | 40 | 32 | 0.9588 | 3664.41 | 19ms |
32 | 40 | 64 | 0.9798 | 3187.75 | 25ms |
32 | 40 | 128 | 0.9885 | 2768.65 | 31ms |
32 | 40 | 256 | 0.991 | 1807.98 | 46 |
32 | 40 | 512 | 0.9883 | 950.59 | 65 |
图7 性能测试折线图
使用的机器为配置1,数据集使用的是SIFT1M,并发量为30,测试结果如下表:
表15 IVFFLAT测试结果
ncentroid | nprobe | recall@1 | recall@10 | recall@100 | QPS | tp99 |
---|---|---|---|---|---|---|
256 | 1 | 0.5229 | 0.5255 | 0.5255 | 3713.01 | 21ms |
256 | 5 | 0.8848 | 0.8912 | 0.8912 | 3098.09 | 33ms |
256 | 10 | 0.9588 | 0.9658 | 0.9658 | 2341.46 | 43ms |
256 | 20 | 0.9881 | 0.9942 | 0.9942 | 1220.72 | 59ms |
256 | 40 | 0.9924 | 0.9998 | 0.9998 | 576.44 | 82ms |
256 | 50 | 0.9927 | 0.9999 | 0.9999 | 445.53 | 96ms |
256 | 60 | 0.9934 | 1.000 | 1.000 | 351.23 | 114ms |
使用的机器为配置3,数据集使用的是SIFT10M,并发量为10,测试结果如下表:
表16 IVFHNSWPQ/IVFHNSWOPQ索引参数
Index | metric_type | ncentroid | nsubvector | nlinks | efConstruction | efSearch | opq_nsubvector |
---|---|---|---|---|---|---|---|
IVF+HNSW+PQ | L2 | 65536 | 64 | 32 | 200 | 64 | - |
IVF+HNSW+OPQ | L2 | 65536 | 64 | 32 | 200 | 64 | 64 |
测试结果如下表:
表17 IVFHNSWPQ/IVFHNSWOPQ评测结果
Index | ncentroid | nprobe | recall@1 | recall@10 | recall@100 | QPS | tp99 |
---|---|---|---|---|---|---|---|
IVF+HNSW+PQ | 65536 | 1 | 0.2331 | 0.2507 | 0.2507 | 1069.29 | 13ms |
IVF+HNSW+PQ | 65536 | 16 | 0.6599 | 0.7644 | 0.7644 | 1011.13 | 13ms |
IVF+HNSW+PQ | 65536 | 32 | 0.7299 | 0.8593 | 0.8593 | 956.82 | 14ms |
IVF+HNSW+PQ | 65536 | 64 | 0.7742 | 0.9249 | 0.9249 | 855.72 | 15ms |
IVF+HNSW+PQ | 65536 | 128 | 0.8017 | 0.9671 | 0.9671 | 679.69 | 19ms |
IVF+HNSW+PQ | 65536 | 256 | 0.8141 | 0.9883 | 0.9884 | 468.35 | 33ms |
IVF+HNSW+PQ | 65536 | 512 | 0.8189 | 0.9961 | 0.9961 | 286.90 | 51ms |
IVF+HNSW+PQ | 65536 | 1024 | 0.8202 | 0.9989 | 0.9991 | 163.88 | 79ms |
IVF+HNSW+OPQ | 65536 | 1 | 0.2362 | 0.2469 | 0.2469 | 1022.10 | 13ms |
IVF+HNSW+OPQ | 65536 | 16 | 0.7035 | 0.7699 | 0.7699 | 839.90 | 15ms |
IVF+HNSW+OPQ | 65536 | 32 | 0.7776 | 0.8613 | 0.8613 | 798.20 | 15ms |
IVF+HNSW+OPQ | 65536 | 64 | 0.8294 | 0.9256 | 0.9256 | 724.68 | 17ms |
IVF+HNSW+OPQ | 65536 | 128 | 0.8581 | 0.9663 | 0.9663 | 590.12 | 20ms |
IVF+HNSW+OPQ | 65536 | 256 | 0.8727 | 0.9878 | 0.9878 | 427.82 | 28ms |
IVF+HNSW+OPQ | 65536 | 512 | 0.8788 | 0.9968 | 0.9968 | 281.12 | 50ms |
IVF+HNSW+OPQ | 65536 | 1024 | 0.8805 | 0.9995 | 0.9995 | 161.56 | 82ms |
使用的机器为配置1,SIFT1M数据,各模型的参数见表4、表14和表15。
索引构建性能,目前IVFFLAT集成在IVFPQ中,故IVFFLAT跟IVFPQ的索引构建的性能是一样。
表18 建索引时间
模型 | 参数 | 时间 | CPU使用率 |
---|---|---|---|
HNSW | nlinks=32,efConstruction=40 | 3m28s | 78% |
IVFPQ | ncentriod=256,nsubvector=32 | 3m26s | 100% |
GPU | ncentriod=256,nsubvector=32 | 4m22s | 100% |
图8 vearch中各模型性能对比
表19 各模型使用的参数
model | ncentroids of 1M | ncentroids of 10M | nprobe of 1M | nprobe of 10M | nsubvector | links | efSearch | efConstruction |
---|---|---|---|---|---|---|---|---|
pq | 64 | |||||||
ivfpq | 1024 | 2048 | 40 | 80 | 64 | |||
imipq | 2^(2*10) | 2^(2*10) | 2048 | 2048 | 64 | |||
opq+pq | 64 | |||||||
hnsw | 32 | 64 | 40 | |||||
ivfhnsw | 1024 | 2048 | 40 | 80 | 32 | 64 | 40 | |
Vearch | 1024 | 2048 | 40 | 80 | 64 |
表20 VGG1M数据的召回
model | recall@1 | recall@10 | recall@100 |
---|---|---|---|
pq | 0.5134 | 0.9003 | 0.9939 |
ivfpq | 0.5234 | 0.8916 | 0.9707 |
imipq | 0.5185 | 0.8837 | 0.9420 |
opq+pq | 0.5269 | 0.9211 | 0.9986 |
hnsw | 0.9515 | 0.9563 | 0.9563 |
ivfhnsw | 0.9652 | 0.9704 | 0.9705 |
Vearch | 0.9651 | 0.9702 | 0.9703 |
表21 SIFT1M数据的召回
model | recall@1 | recall@10 | recall@100 |
---|---|---|---|
pq | 0.8288 | 0.9999 | 1 |
ivfpq | 0.8201 | 0.9899 | 0.9901 |
imipq | 0.8344 | 0.9834 | 0.9834 |
opq+pq | 0.8234 | 0.9998 | 1 |
hnsw | 0.9795 | 0.9872 | 0.9872 |
ivfhnsw | 0.9825 | 0.9896 | 0.9896 |
Vearch | 0.9814 | 0.9902 | 0.9902 |
表22 VGG10M数据的召回
model | recall@1 | recall@10 | recall@100 |
---|---|---|---|
pq | 0.5957 | 0.9009 | 0.9906 |
ivfpq | 0.6068 | 0.9014 | 0.9833 |
imipq | 0.6023 | 0.8955 | 0.9605 |
opq+pq | 0.6102 | 0.9223 | 0.9954 |
hnsw | 0.8847 | 0.9045 | 0.905 |
ivfhnsw | 0.9617 | 0.9825 | 0.9829 |
Vearch | 0.9649 | 0.9829 | 0.9832 |
表23 SIFT10M数据的召回
model | recall@1 | recall@10 | recall@100 |
---|---|---|---|
pq | 0.7237 | 0.9976 | 1 |
ivfpq | 0.7189 | 0.9794 | 0.9811 |
imipq | 0.7 | 0.9086 | 0.9091 |
opq+pq | 0.7512 | 0.9988 | 1 |
hnsw | 0.8425 | 0.8426 | 0.8426 |
ivfhnsw | 0.9625 | 0.9626 | 0.9626 |
Vearch | 0.977 | 0.9774 | 0.9774 |