RyanCodrai/turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
解決的問題
向量資料庫通常需要大量的 RAM 來儲存高維嵌入(例如,儲存 1,000 萬個文件需要 31 GB)。Turbovec 透過使用先進的量化技術來壓縮這些向量,在保持高搜尋速度與召回率的同時,將記憶體使用量降低高達 16 倍,從而解決了這個問題。
工作原理
該引擎使用 Rust 構建並帶有 Python 綁定,利用 TurboQuant 演算法在無需單獨訓練階段的情況下壓縮向量。其工作步驟如下:
- Normalization: 去除向量長度並單獨儲存。
- Random Rotation: 應用隨機正交矩陣,使座標遵循可預測的分布。
- Calibration (TQ+): 使標量符合數據的經驗分布,從而實現無需重新訓練即可量化。
- Lloyd-Max Quantization: 使用預計算的最佳桶,將座標壓縮為 2 位或 4 位整數。
- SIMD Search: 使用手寫的 SIMD 核心(x86 的 AVX-512/AVX2 與 ARM 的 NEON)直接對壓縮後的向量進行評分,無需完全解壓縮。
適用對象
專為構建檢索增強生成 (RAG) 應用的開發人員設計,在這些應用中,記憶體效率、低延遲與數據隱私(本地/離線執行)至關重要。
亮點
- 極致壓縮:使用 2 位量化將 1536 維向量從 6,144 位元組減少到 384 位元組。
- 無需訓練:支援線上攝取,向量可以立即建立索引,無需單獨的訓練或重建步驟。
- 高性能:在 ARM 上優於 FAISS,並在 x86 的各種配置下達到或超過 FAISS 的性能。
- 框架就緒:為 LangChain、LlamaIndex、Haystack 與 Agno 提供即插即用的替代方案。