往下拉回到首頁
你的人臉辨識系統在浪費資料庫空間?把 ArcFace 嵌入從 32 位降到 16 位試試

你的人臉辨識系統在浪費資料庫空間?把 ArcFace 嵌入從 32 位降到 16 位試試

ArcFace embeddings quantized to 16-bit pgvector HALFVEC — does precision actually matter?

欸你知道嗎,如果你用 PostgreSQL 存人臉辨識的嵌入向量(就是那些數字陣列),512 個維度用 32 位浮點數存的話,會佔 2048 位元組。這個數字超過了 PostgreSQL 的 TOAST 臨界值(2040 位元組),所以資料庫會自動把你的向量丟到另一個地方存,不是放在主表裡。結果呢?每次查詢都要多做一次指標查詢,再讀一次資料,I/O 效能直接翻倍變差。雖然用 HNSW 索引可以完全避免這個問題,但有個更簡單的想法:ArcFace 嵌入真的需要 32 位的精度嗎?如果降到 16 位(HALFVEC)也能用,那不就直接省一半的空間,還能解決 TOAST 問題?這篇文章就在探討這個想法是不是真的可行。

相關標籤

embeddingsquantizationHALFVECTOASTHNSWface recognitionvector databasesperformance optimization