勵志

勵志人生知識庫

hnsw算法

HNSW(Hierarchical Navigable Small World)算法是一種用於近似最近鄰搜尋的算法,適用於高維度數據的快速搜尋。它通過構建一個多層次的圖結構來工作,每個節點代表數據集中的一個數據點,並通過建立具有隨機連線的高維空間的圖來保持每個節點與一組「近鄰」節點相連。這種「近鄰」連線的不規則性使得HNSW能夠在高維度空間中進行高效的最近鄰搜尋,而無需在整個數據集上執行昂貴的線性搜尋。

HNSW算法的執行過程包括圖的構建和搜尋兩部分。圖的構建是算法的主要時間開銷部分,適合使用並行執行來最佳化,但需妥善管理數據競爭和並發問題以保證結果的正確性。搜尋部分對於並行執行有著比較好的適應性,指的是對多個不同詢問的並行,而非一個詢問執行內部的並行。就算法原理來說,單一詢問幾乎沒有並行執行的空間,其中的主要執行接近於單執行緒的搜尋算法。

在搜尋過程中,從最高層開始,每當在各層節點中貪心找到當前最近鄰居時,就向下搜尋一層。最終,在最底層找到的近鄰就是查詢的答案。與NSW類似,HNSW也可以通過使用多個入口點來提高搜尋質量。與在每一層只尋找一個近鄰不同,會尋找與查詢向量最近的efSearch(一個超參數)近鄰,並將這些近鄰中的每一個作為下一層的切入點。

HNSW算法在大數據量的情況下,性能提升相比其他算法更加明顯,但鄰居點的存儲會占用一部分存儲空間,同時召回精度達到一定水平後難以通過簡單的參數控制來提升。