Faiss庫系列1 概述

2021-09-02 17:48:29 字數 1358 閱讀 4837

使用教程:

faiss由facebook ai research開發,是乙個用於相似性搜尋和密集向量聚類的高效能庫,支援十億級別向量的搜尋,是目前最為成熟的近似近鄰搜尋庫。它包含多種搜尋任意大小向量集(備註:向量集大小由ram記憶體決定)的演算法,以及用於演算法評估和引數調整的支援**。faiss用c++編寫,並提供與numpy完美銜接的python介面。除此以外,對一些核心演算法提供了gpu實現。

faiss庫包含相似性搜尋的多種方法。它假設例項被表示為向量,並用整數標識,同時向量可以與l2距離或點積進行比較。與查詢向量類似的向量是那些與查詢向量具有最低l2距離或具有最高點積的向量。它還支援余弦相似性,因為這是歸一化向量上的點積。

大多數方法,如基於二進位制向量和緊湊量化碼的方法,僅使用向量的壓縮表示,而不需要保留原始向量。這通常以不太精確的搜尋為代價,但是這些方法可以在單個伺服器的主記憶體中進行數十億向量集的搜尋。

gpu實現支援單gpu或多gpu,可以接受來自cpu或gpu儲存器的輸入。在具有gpu的伺服器上,可以使用gpu索引作為cpu索引的替換(例如:使用gpuindexflatl2替換indexflatl2),並且自動處理gpu記憶體與cpu記憶體間的索引複製。當然,如果輸入和輸出都駐留在gpu上,結果將更快。

faiss庫主要用c++進行編碼實現,通過cuda提供可選的gpu支援,同時也提供了可選的python介面。在編譯構建時,cpu版本需要依賴blas庫,利用makefile檔案或cmakelists.txt檔案編譯,並可以打包到docker映象。詳情見install.md。

faiss庫圍繞儲存一組向量的索引型別進行構建,提供使用l2距離和(或)點積運算進行向量比較的搜尋功能,不同的索引型別對應不同的搜尋方法,其中一些索引型別能提供評價基線,例如indexflatl2。faiss庫。大多數索引型別是搜尋時間、搜尋質量、索引向量記憶體占用、訓練時間、無監督訓練依賴外部資料等指標的均衡。可選的gpu版faiss實現了floyd』s k-means以及k-selection演算法,能夠為高維向量提供精確或近似最近鄰搜尋的功能。

faiss庫使用相關文件,包括教程、常見問題解答、bug修復;

faiss庫學術**結果復現資料,**:polysemous codes、billion-scale similarity search with gpus;實驗結果:benchmarks readme。

TCP IP系列文章(1) 概述

圖1.6展示了鏈路層自底向上如何進行分解,這裡使用乙太網作為例子 乙太網幀包含乙個48位的目的位址 又稱mac位址 和乙個16位的乙太網型別字段。0x0800表示這個幀包含ipv4資料報 0x0806表示arp 0x86dd表示ipv6。假設目的位址與接收方的乙個位址匹配,這個幀將被接收並校驗差錯,...

NLucene研究系列 1 概述

lucene是apache軟體 會jakarta專案組的乙個子專案,是乙個開放源 的全文檢索引擎工具包,即它不是乙個完整的全文檢索引擎,而是乙個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文字分析引擎 英文與德文兩種西方語言 lucene的目的是為軟體開發人員提供乙個簡單易用的工具包,以...

倉庫管理系統系列 1 概述

自己搭建的倉庫管理系統,模擬日常小超市的業務邏輯實施的系統,包括 1 使用者管理 註冊 登入 許可權管理 精確到每乙個方法 2 商品分類管理 3 商品管理 商品錄入 商品 等 4 商品質量異議,進行商品封鎖和商品返修 5 商品盤庫 6 成本核算 專案設計採用spring springmvc hibe...