您的位置:首頁 > 軟件教程 > 教程 > CAGRA:一種高性能、GPU加速的ANN向量索引算法

CAGRA:一種高性能、GPU加速的ANN向量索引算法

來源:好特整理 | 時間:2024-06-17 08:57:47 | 閱讀:67 |  標簽: Gra v C 算法 高性能 數(shù)據庫   | 分享到:

本文連接:https://wanger-sjtu.github.io/CARGA/ CAGRA 是 N社在RAFT項目中 最新的 ANN 向量索引。這是一種高性能的、 GPU 加速的、基于圖的方法,尤其是針對小批量情況進行了優(yōu)化,其中每次查找只包含一個或幾個查詢向量。 與其他像HNSW、S

本文連接: https://wanger-sjtu.github.io/CARGA/

CAGRA是N社在RAFT項目中最新的ANN(近似最近鄰)向量索引算法。它是一種高性能的、GPU加速的、基于圖的方法,特別針對小批量情況進行了優(yōu)化,其中每次查找只包含一個或幾個查詢向量。與其他基于圖的方法(如HNSW、SONG等)類似,CAGRA在索引訓練階段構建了一個經過優(yōu)化的k-最近鄰(k-NN)圖。這個圖具備多種優(yōu)良特性,能夠在保持合理召回率的同時實現(xiàn)高效的搜索。與NSW、HNSW算法不同的是,CARGA算法是單層的圖,在構建和查詢階段做了特殊的優(yōu)化以適應GPU計算加速。

代碼示例:

using namespace raft::neighbors;
// use default index parameters based on shape of the dataset
ivf_pq::index_params build_params =   ivf_pq::index_params::from_dataset(dataset);
ivf_pq::search_params search_params;
auto knn_graph      = raft::make_host_matrix(dataset.extent(0), 128);

// create knn graph
cagra::build_knn_graph(res, dataset, knn_graph.view(), 2, build_params, search_params);
auto optimized_gaph = raft::make_host_matrix(dataset.extent(0), 64);
cagra::optimize(res, dataset, knn_graph.view(), optimized_graph.view());
// Construct an index from dataset and optimized knn_graph

auto index = cagra::index(res, build_params.metric(), dataset,
                                   optimized_graph.view());

CAGRA構建的圖有幾個不同之處:

  • 每個節(jié)點有固定的出度
  • 構建的圖是一個有向圖
  • 不同于HNSW,CAGRA構建的圖是單層的
小編推薦閱讀

好特網發(fā)布此文僅為傳遞信息,不代表好特網認同期限觀點或證實其描述。

相關視頻攻略

更多

掃二維碼進入好特網手機版本!

掃二維碼進入好特網微信公眾號!

本站所有軟件,都由網友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網安備:43070202000427號© 2013~2025 haote.com 好特網