meilisearch/arroy
An Approximate Nearest Neighbors library in Rust, based on random projections and LMDB and optimized for memory usage :boom:
解決的問題
Arroy 是一個用於近似最近鄰(ANN)搜尋的 Rust 庫。它允許使用者在高維空間中找到與目標向量最接近的向量,特別解決了在處理數百萬個高維文件(例如 768 或 1536 維)時,記憶體受限的搜尋問題。
工作原理
Arroy 使用隨機投影來建立樹的森林。在每個節點上,一個隨機超平面將空間分成兩個子空間。此過程重複多次以建立森林。為了處理點積距離,它將向量從點積空間轉換為查詢友好的餘弦空間。
適用對象
適用於需要高效、低記憶體向量搜尋的開發者,特別是使用 Rust 且需要透過 LMDB 在多個流程間共用索引的開發者。
特色亮點
- 基於 LMDB 的儲存:使用記憶體映射的鍵值儲存,允許多個流程共用相同資料並執行原子修改。
- 低記憶體佔用:針對小記憶體使用進行優化,可對超出可用 RAM 的大型資料集進行索引。
- 多種距離度量:支援歐幾里得、曼哈頓、餘弦與點積(內積)距離。
- 並行存取:支援使用
rayon進行多執行緒樹建構,並允許在另一個索引被修改時進行查詢。 - 增強功能:查詢時支援過濾,並可在不完全重建的情況下增量更新樹。
相關
- 專案
- 專案
- 專案
- 專案