turbovec: 這是什麼、解決什麼問題以及為什麼它正受到關注
turbovec: 這是什麼、解決什麼問題以及為什麼它正受到關注
它解決了什麼問題
turbovec 是一個高效能向量索引,旨在減少大規模向量搜尋對龐大 RAM 的需求。它允許使用者在極少量的記憶體中容納數百萬份文件(例如:在 4 GB 記憶體中容納 1000 萬份文件,而非 31 GB),同時保持高搜尋速度與召回率,使其成為離線環境(air-gapped)或記憶體受限的 RAG 架構的理想選擇。
運作原理
該專案基於 Google Research 的 TurboQuant 演算法,使用一種不需要獨立訓練階段的數據無關量化器(data-oblivious quantizer)。其流程包含:
- 正規化與旋轉 (Normalization and Rotation):向量被正規化為單位方向,並乘以一個隨機正交矩陣,使座標分佈變得可預測。
- 校準 (Calibration (TQ+)):在首次攝取數據時,會對每個座標進行位移與縮放,將經驗數據映射到標準的 Beta 分佈。
- Lloyd-Max 量化:使用預先計算的最佳邊界,將座標分桶(bucketed)為 2-bit 或 4-bit 整數。
- 長度重新正規化 (Length-Renormalization):每個向量會儲存一個純量,用以修正因量化導致的內積系統性低估,確保評分不偏不倚。
- SIMD 搜尋:使用手寫的 NEON (ARM) 與 AVX-512BW (x86) 核心進行搜尋,直接針對碼本(codebook)值進行評分,無需進行完整解壓縮。
適合對象
正在開發檢索增強生成 (RAG) 應用程式的開發者,且對於隱私、低延遲與記憶體效率有高度要求,特別是使用本地或離線環境的使用者。
重點特色
- 線上攝取 (Online Ingest):隨著語料庫增長,不需要進行訓練步驟、參數調整或重建索引。
- 極致壓縮:高達 16 倍的壓縮率(例如:從 FP32 壓縮至 2-bit),且召回率損失極小。
- 高效率能:在 ARM 架構上優於 FAISS IndexPQFastScan 10–19%,且在 x86 上仍具競爭力。
- 過濾搜尋 (Filtered Search):支援透過允許清單(allowlist)進行搜尋時過濾,該功能直接整合進 SIMD 核心中,以避免不必要的計算。
- 框架整合:可直接替換 LangChain、LlamaIndex、Haystack 與 Agno 中的記憶體內向量儲存器。
- 純本地化 (Pure Local):無託管服務;數據保留在本地機器或 VPC 中。
Sources
- undefinedRyanCodrai/turbovec