facebookresearch/faiss

A library for efficient similarity search and clustering of dense vectors.

解決的問題

Faiss 能夠高效地進行密集向量的搜尋與聚類,讓使用者能在任何規模的資料集中找到相似項目,包含超出可用記憶體的資料集。它解決了高維向量相似性搜尋的問題,當擴展到數十億個向量時,這種搜尋在計算上非常昂貴。

工作原理

Faiss 使用基於索引的系統,向量以 L2(歐幾里得)距離或點積(包含餘弦相似度)進行儲存與比較。為了在搜尋速度、準確性與記憶體使用之間取得平衡,它提供多種索引結構:

  • 精確搜尋:高精度的簡單基準。
  • 壓縮表示:使用二進位向量與緊湊的量化碼,以壓縮格式儲存向量,使數十億個向量能放入單一伺服器的主記憶體中。
  • 圖形基礎索引:實作 HNSW 與 NSG,在原始向量之上添加索引結構,以實現更快的檢索。
  • 硬體加速:以 C++ 寫成,並提供 Python 包裝器,提供高效率的 GPU 實作,支援精確與近似最近鄰搜尋、k-means 聚類與 k-選擇演算法。

適用對象

從事高維嵌入、大規模相似性搜尋與聚類任務的 AI 與機器學習領域的開發者與研究人員。

主要特色

  • 數十億規模可擴展性:透過壓縮表示處理無法放入 RAM 的資料集。
  • GPU 加速:支援單一與多 GPU 環境,大幅加快搜尋與聚類速度。
  • C++ 與 Python 支援:核心邏輯以 C++ 實作,透過 Python/numpy 介面提供高效率。
  • 彈性索引機制:在搜尋時間、品質與記憶體使用之間提供多種權衡選擇。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • Dispatch