效果评估
基准
本文档显示了我们做的实验和得到的结果。我们做了两个系列的实验。首先,我们在单个节点上进行了基于faiss的改进的Vearch ivfpq模型的召回率实验。其次,基于Vearch 集群进行了实验。
我们使用检索返回的k个候选值(k∈{1,10,100})是否包含最近邻的结果来计算召回,其中标签通过暴力搜索获得。
实验数据会因为实现、不同机器等的变化而略有变化。
数据集
实验分别在128维SIFT特征和512维VGG特征上进行。
数据集SIFT1M
可以从如下网址下载ANN_SIFT1M
http://corpus-texmex.irisa.fr/
数据集VGG1M 和 VGG10M
分别收集100万和1000万的图片数据提取VGG特征得到VGG1M (100万)和VGG10M(1000万),其中VGG1M 和VGG10M并不相关。
数据集VGG100M , VGG500M 和 VGG1B
另外收集了10亿图片数据来构建VGG100M(1亿) , VGG500M(5亿) 和 VGG1B(10亿)。
Nprobe 实验
实验分别在SIFT1M, VGG1M 和 VGG10M上进行。其中ncentroids =256,nbytes = 32,nprobe ∈{1,5,10,20,30,40,50,80,100,200}。图中数据为recall@1结果。
结果
可以看到当nprobe超过25后,召回基本上没有明显的变化了。
Ncentroids 实验
实验在VGG10M进行。其中nprobe = 50,nbytes = 32, ncentroids∈{64,128,256,512,1024,2048,4096,8192} 。图中数据为recall@1结果。
结果
可以看到召回基本不随ncentroids变化而变化,但是ncentroids越大,QPS越高。
Nbytes 实验
实验在VGG10M进行。其中nprobe = 50,ncentroids = 256, nbytes ∈{4,8,16,32,64}。图中数据为recall@1结果。
结果
当nbytes越大,召回越高,当然QPS随之降低。
对比实验
实验在 SIFT1M, VGG1M 和 VGG10M 上进行,并与faiss中的一些模型进行对比。
模型参数
表格中参数为空,则对应模型不包含该参数。其中 links, efSearch 和 efConstruction 为 faiss 中的 hnsw 定义的参数。
model | ncentroids | nprobe | bytes of SIFT | bytes of VGG | links | efSearch | efConstruction |
---|---|---|---|---|---|---|---|
pq | | 32 | 64 | |||||
ivfpq |256 | 20 | 32 | 64 | ||||
imipq | 2^(2*10) | 2048 | 32 | 64 | |||
opq+pq | 32 | 64 | |||||
hnsw | 32 | 64 | 40 | ||||
ivfhnsw | 256 | 20 | 32 | 64 | 40 | ||
Vearch | 256 | 20 | 32 | 64 |
结果
SIFT1M的召回:
model | recall@1 | ||
---|---|---|---|
pq | 0.6274 | 0.9829 | 0.9999 |
ivfpq | 0.6167 | 0.9797 | 0.9960 |
imipq | 0.6595 | 0.9775 | 0.9841 |
opq+pq | 0.6250 | 0.9821 | 1.0000 |
hnsw | 0.9792 | 0.9867 | 0.9867 |
ivfhnsw | 0.9888 | 0.9961 | 0.9961 |
Vearch | 0.9581 | 0.9645 | 0.9645 |
VGG1M的召回 :
model | recall@1 | ||
---|---|---|---|
pq | 0.5079 | 0.8922 | 0.9930 |
ivfpq | 0.4985 | 0.8792 | 0.9704 |
imipq | 0.5077 | 0.8618 | 0.9248 |
opq+pq | 0.5213 | 0.9105 | 0.9975 |
hnsw | 0.9496 | 0.9550 | 0.9551 |
ivfhnsw | 0.9690 | 0.9744 | 0.9745 |
Vearch | 0.9536 | 0.9582 | 0.9585 |
VGG10M的召回 :
model | recall@1 | ||
---|---|---|---|
pq | 0.5842 | 0.8980 | 0.9888 |
ivfpq | 0.5913 | 0.8896 | 0.9748 |
imipq | 0.5925 | 0.8878 | 0.9570 |
opq+pq | 0.6126 | 0.9160 | 0.9944 |
hnsw | 0.8877 | 0.9069 | 0.9074 |
ivfhnsw | 0.9638 | 0.9839 | 0.9843 |
Vearch | 0.9272 | 0.9464 | 0.9468 |