哈希分片用于测试Proxima CE端到端功能的正确性,本文为您介绍哈希分片全链路测试的结论及测试过程。

测试结论

Proxima CE哈希分片运行的召回结果与recall工具结果基本一致,正确性测试符合预期。

测试过程

  1. 方法设计。
    1. 数据准备:随机生产不同类型(包括FLOAT、BINARY和INT8)的数据集,对于Proxima CE需要将数据集转换成对应的ODPS表,对于C++ baseline则需要通过proxima内核自带的Bench性能测试工具的方法进行处理。
      说明 C++ baseline:表示将通过proxima内核测出的性能数据作为测试基准,proxima内核是用C++语言编写的。
    2. 算法对比:对每个数据集,通过执行不同算法(Graph、HC、Linear),得到Proxima CE结果和C++ baseline的结果,对比各自的召回率,此处设置的TopK为100。Proxima CE的recall是通过从query表中采样100条query数据做的召回,主要是与Linear方式进行对比,与proxima2 recall工具方法原则一致。
  2. 测试准备。
    • 数据准备。
      按类型生产随机数据集,数据集的基本信息如下表,其中每个数据集的query从doc数据中随机抽取100条。
      数据类型维数数量数值范围
      FLOAT12810W(0,1)
      INT812810W(-128,127)
      BINARY51210W0/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-
  3. 运行结果。
    • 数据类型:FLOAT,距离计算方法:SquaredEuclidean
      检索方式ProximaCErecall 工具
      graph89.03%88.62%
      hc98.91%98.14%
      ssg96.00%95.76%
      gc97.87%97.64%
      qc97.70%97.77%
      linear100%100%
    • 数据类型:INT8,距离计算方法:SquaredEuclidean
      检索方式ProximaCErecall 工具
      graph89.89%89.93%
      hc98.27%97.69%
      ssg95.58%95.75%
      gc97.72%97.36%
      qc97.68%97.71%
      linear100%100%
    • 数据类型:BINARY,距离计算方法:Hamming
      检索方式ProximaCErecall 工具
      graph85.33%88.09%
      hc91.45%95.27%
      ssg75.89%77.83%
      gc90.01%93.99%
      qc90.51%93.78%
      linear100%100%
  4. 结果分析。

    Proxima CE在各算法及数据类型上的召回情况与recall工具基本对齐。