哈希分片用于测试Proxima CE端到端功能的正确性,本文为您介绍哈希分片全链路测试的结论及测试过程。
测试结论
Proxima CE哈希分片运行的召回结果与recall工具结果基本一致,正确性测试符合预期。
测试过程
- 方法设计。
- 数据准备:随机生产不同类型(包括FLOAT、BINARY和INT8)的数据集,对于Proxima CE需要将数据集转换成对应的ODPS表,对于C++ baseline则需要通过proxima内核自带的Bench性能测试工具的方法进行处理。说明 C++ baseline:表示将通过proxima内核测出的性能数据作为测试基准,proxima内核是用C++语言编写的。
- 算法对比:对每个数据集,通过执行不同算法(Graph、HC、Linear),得到Proxima CE结果和C++ baseline的结果,对比各自的召回率,此处设置的TopK为100。Proxima CE的recall是通过从query表中采样100条query数据做的召回,主要是与Linear方式进行对比,与proxima2 recall工具方法原则一致。
- 数据准备:随机生产不同类型(包括FLOAT、BINARY和INT8)的数据集,对于Proxima CE需要将数据集转换成对应的ODPS表,对于C++ baseline则需要通过proxima内核自带的Bench性能测试工具的方法进行处理。
- 测试准备。
- 数据准备。按类型生产随机数据集,数据集的基本信息如下表,其中每个数据集的query从doc数据中随机抽取100条。
数据类型 维数 数量 数值范围 FLOAT 128 10W (0,1)
INT8 128 10W (-128,127)
BINARY 512 10W 0/1 - 参数设置。
检索方式 参数 graph proxima.hnsw.searcher.ef: 400
proxima.hnsw.builder.efconstruction: 400
proxima.hnsw.builder.max_neighbor_count: 100
hc proxima.hc.builder.centroids_count: 2000
proxima.hc.searcher.max_scan_count: 80000
ssg proxima.hnsw.searcher.ef: 400
proxima.hnsw.builder.efconstruction: 400
proxima.hnsw.builder.max_neighbor_count: 100
gc proxima.gc.builder.centroid_count: 1000
proxima.gc.searcher.scan_ratio: 0.8
qc proxima.qc.builder.centroid_count: 1000
proxima.qc.searcher.scan_ratio: 0.8
linear -
- 数据准备。
- 运行结果。
- 数据类型:FLOAT,距离计算方法:SquaredEuclidean
检索方式 ProximaCE recall 工具 graph 89.03% 88.62% hc 98.91% 98.14% ssg 96.00% 95.76% gc 97.87% 97.64% qc 97.70% 97.77% linear 100% 100% - 数据类型:INT8,距离计算方法:SquaredEuclidean
检索方式 ProximaCE recall 工具 graph 89.89% 89.93% hc 98.27% 97.69% ssg 95.58% 95.75% gc 97.72% 97.36% qc 97.68% 97.71% linear 100% 100% - 数据类型:BINARY,距离计算方法:Hamming
检索方式 ProximaCE recall 工具 graph 85.33% 88.09% hc 91.45% 95.27% ssg 75.89% 77.83% gc 90.01% 93.99% qc 90.51% 93.78% linear 100% 100%
- 数据类型:FLOAT,距离计算方法:SquaredEuclidean
- 结果分析。
Proxima CE在各算法及数据类型上的召回情况与recall工具基本对齐。