雜湊分區用於測試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: 400proxima.hnsw.builder.efconstruction: 400proxima.hnsw.builder.max_neighbor_count: 100
hc proxima.hc.builder.centroids_count: 2000proxima.hc.searcher.max_scan_count: 80000
ssg proxima.hnsw.searcher.ef: 400proxima.hnsw.builder.efconstruction: 400proxima.hnsw.builder.max_neighbor_count: 100
gc proxima.gc.builder.centroid_count: 1000proxima.gc.searcher.scan_ratio: 0.8
qc proxima.qc.builder.centroid_count: 1000proxima.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工具基本對齊。