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