效果评估

基准

本文档显示了我们做的实验和得到的结果。我们做了两个系列的实验。首先,我们在单个节点上进行了基于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结果。

结果

Architecture

可以看到当nprobe超过25后,召回基本上没有明显的变化了。

Ncentroids 实验

实验在VGG10M进行。其中nprobe = 50,nbytes = 32, ncentroids∈{64,128,256,512,1024,2048,4096,8192} 。图中数据为recall@1结果。

结果

Architecture

可以看到召回基本不随ncentroids变化而变化,但是ncentroids越大,QPS越高。

Nbytes 实验

实验在VGG10M进行。其中nprobe = 50,ncentroids = 256, nbytes ∈{4,8,16,32,64}。图中数据为recall@1结果。

结果

Architecture

当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 recall@10 recall@100
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 recall@10 recall@100
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 recall@10 recall@100
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