研究與評測
pg_vectorsearch 推出 PRISM 索引,宣稱在 1 億向量與四分之一記憶體下勝過 pgvector HNSW
Hacker News單一來源
核實資料不足
目前依單一來源整理,這是來源數量描述,不是對消息真假的判定。
本次未取得足夠原文證據
PostgreSQL 擴充套件 pg_vectorsearch 推出 PRISM(Partitioned Routing Index for Similarity Matching)近似最近鄰搜尋索引,專案宣稱其查詢與建置速度都顯著優於 pgvector 的 IVFFlat 與 HNSW。材料中的比較指出,在 1 億個向量資料集、使用四分之一記憶體的執行個體上,PRISM 以相同召回率超越圖式 HNSW;這些效能主張目前來自專案說明,材料未提供獨立佐證。
PRISM 採用階層式質心樹進行分群與路由,向量以具理論誤差界限的 RaBitQ 量化後存入 posting list,再透過兩階段篩選估算距離、套用誤差界限並對候選項目重新排序。索引以 C 實作,距離計算支援 AVX2、AVX512 與 NEON SIMD,並可在插入、更新、刪除資料時,透過 prism_rebalance 分割 posting list。查詢流程會先遍歷質心樹,再掃描 posting list、進行 RaBitQ 篩選,最後從資料表取出完整精度向量重新排序。
擴充套件目前仍是 alpha 版本,文件明確表示僅供測試、不適合生產環境;預發行版本之間可能無法直接升級,升級時應預期刪除並重建擴充套件與索引。它可使用自身的 vec32 或 vec16 欄位,也能直接對既有 pgvector 的 vector 或 halfvec 欄位建立 PRISM 索引,不需改寫或複製資料表,查詢仍可使用 <->、<#> 與 <=> 運算子。vec16 可將向量在資料表中占用的空間減半。
文件指出,prism.nprobe 設為 0 時會自動調整,目標約為 0.95 召回率;提高該值可換取召回率,降低則可追求速度。PRISM 支援 L2、內積與餘弦距離,並提供對應的 vec32、vec16 operator class。
讀原始報導背景
近似最近鄰(ANN)搜尋用於在大量向量資料中快速找出相近項目,通常會以較少的計算換取可接受的搜尋準確度。pg_vectorsearch 提供的 PRISM 是原生整合 PostgreSQL 的索引存取方法,以 C 實作,概念上類似 pgvector 的 IVFFlat,但採用量化、路由與分割技術。
社群討論
整體對 pg_vectorsearch 的 PRISM index 持正面期待,留言引用其在 1 億 vectors 上達到 6 ms 查詢延遲、僅需 HNSW 四分之一記憶體,且建置速度快逾 20 倍,並讚賞其可在 PostgreSQL 內維持簡單的開發體驗。主要疑慮是目前要求 PostgreSQL 18 以上、向量上限 1968 維、似乎僅支援 post-filtering,且 managed PostgreSQL 尚未普及;社群也要求補充 QPS、precision/recall,並釐清與 pgvectorscale、VectorChord、RoarGraph 及其他索引的差異。