向量資料庫已成為檢索增強生成、語義搜尋與推薦系統的基礎設施。但選型時最容易犯的錯誤,是把廠商公佈的標準榜單當作決策依據。本文給出一套面向企業環境的評估框架:從基準測試方法、成本構成、索引策略到安全與運營風險,幫助你在2025年的技術格局中做出可驗證的選擇。
核心要點:向量資料庫的成本由記憶體而非儲存主導;索引選擇是槓桿最高的技術決策;而真正決定上線後表現的,是在你自己的向量、你自己的查詢分佈與你自己的併發下做基準測試,而不是在公開資料集上看召回率。
2025年,向量資料庫的格局是怎樣的?
2025年的向量資料庫市場大致分為四類選擇,而它們的差異並不像營銷材料暗示的那樣在於"是不是原生向量庫",而在於運維模型與擴展上限。第一類是傳統關係型或文件型資料庫的向量擴展,例如PostgreSQL上的向量擴展;第二類是獨立的原生向量資料庫;第三類是搜尋引擎在其倒排索引之上疊加向量能力;第四類是雲廠商提供的託管向量檢索服務。對多數企業而言,第一類是合理的起點。
判斷標準很實際:如果你的向量規模在千萬級以下、併發適中、且已經有一套執行良好的PostgreSQL運維體系,那麼引入一個全新的分散式系統所增加的安全模型、備份策略與故障模式,往往超過它帶來的效能收益。獨立向量資料庫真正變得必要,通常出現在三個條件之一滿足時:需要水平擴展到單機記憶體無法承載的規模、需要特定的索引類型或過濾能力、或者需要多租戶隔離而現有擴展無法提供。
選擇向量資料庫時應該評估什麼?
評估應當圍繞六個維度展開,且每個維度都要在你自己的資料上驗證。功能清單最容易比較,也最不具備區分度——幾乎所有主流產品都支援近似最近鄰檢索、後設資料過濾與水平擴展。真正產生差異的是在你自己的向量分佈與查詢模式下,這些能力的實際表現。
| 評估維度 | 需要驗證的問題 | 常見誤判 |
|---|---|---|
| 召回率 | 在你的生產k值下,與你自己的暴力檢索基線相比表現如何 | 直接引用廠商在公開資料集上的召回數字 |
| 延遲 | 在預期峯值併發下的p95延遲是多少 | 只測單條查詢延遲,忽略併發 |
| 過濾檢索 | 加上真實業務過濾條件後召回率是否保持 | 只測無過濾的純向量檢索 |
| 索引構建 | 全量重建需要多久,能否在維護視窗內完成 | 忽略重建時間,上線後才發現無法改引數 |
| 寫入吞吐 | 批次寫入期間查詢延遲是否劣化 | 只測離線寫入,不測讀寫混合 |
| 故障行為 | 節點宕機時是優雅降級還是雪崩 | 只看可用性指標,不看降級曲線 |
如何為向量資料庫做基準測試?
廠商的基準測試在乾淨硬體上用公開資料集測召回率,這是有用的健全性檢查,卻是糟糕的選型依據。你真正需要知道的,是候選產品在你的向量、你的查詢分佈、你的延遲預算,以及你的應用真實併發下的表現。這是另一個實驗,認真做大約需要兩週。
| 維度 | 測試方法 | 什麼算好結果 |
|---|---|---|
| 目標k值下的召回率 | 用真實查詢樣本與暴力最近鄰結果對比 | 所選索引在生產k值下高於95% |
| 併發下的延遲 | 按預期峯值每秒查詢數壓測,而非單條查詢 | 三倍預期峯值時p95仍在預算內 |
| 索引構建時間 | 從零構建全量索引並計時 | 重建能放進維護視窗 |
| 過濾檢索 | 使用應用實際會施加的後設資料過濾條件查詢 | 過濾條件很嚴格時召回率依然保持 |
| 寫入吞吐 | 在查詢併發執行的同時按真實速率寫入 | 批次寫入期間查詢延遲不劣化 |
| 故障行為 | 在負載中殺掉一個節點 | 優雅降級,延遲上升有界 |
其中兩項值得特別強調。過濾檢索是多數生產部署受挫的地方:為純向量相似度調優的索引,一旦後設資料過濾掉大部分候選集,表現往往急劇劣化,而前置過濾與後置過濾是真實的架構決策,不是配置項。故障行為幾乎不會出現在廠商材料中,卻決定了你的事故長什麼樣。
大規模執行向量檢索的成本由什麼構成?
向量檢索的成本由記憶體主導,而不是儲存——這一點常讓按資料量做預算的團隊措手不及。嵌入是稠密浮點向量,為了讓檢索低延遲,它們必須常駐記憶體,而記憶體正是最貴的一項。理解下面三個槓桿,是估算與猜測之間的分界線。
第一個槓桿是維度。一個1536維的float32嵌入,在計入索引開銷之前大約佔用6KB;一千萬條向量就是約60GB原始向量資料,而索引通常再增加40%到100%,取決於索引類型。量化——標量量化或乘積量化——可以把這個數字壓縮四倍甚至更多,通常的代價是召回率下降一到三個百分點,這在多數場景下是划算的交易。
第二個槓桿是索引選擇。扁平索引給出完美召回與線性掃描成本;基於圖的索引(如HNSW)以次線性成本給出優秀召回,但更喫記憶體;倒排檔案與量化變體則以召回換取更小的記憶體佔用。正確的選擇取決於你的召回下限與延遲預算,而不是哪個索引最新。
第三個槓桿是副本與可用性。單副本便宜但不可用;兩個副本使記憶體成本翻倍;三個可用區使跨區網路出口流量增加。團隊常常只預算了索引,卻忘了可用性目標所要求的副本,然後在第一張賬單上發現缺口。一個實用的規劃經驗是:按原始向量大小的2到3倍預算記憶體,假設2到3份副本,並在承諾平台之前用真實壓測驗證。
應該如何選擇索引策略?
索引選擇是向量部署中槓桿最高的技術決策,卻通常是按預設值做出的。下面的順序可以讓它變成一個自覺的選擇。
- 先確定召回下限。與業務負責人一起,而不是在技術上孤立地,確定生產k值下可接受的召回率。其餘一切都是圍繞這個數字做交換。
- 從能滿足要求的最簡單索引開始。如果語料在幾十萬條以內,配合量化的扁平索引可能無需任何圖結構就能同時滿足延遲與成本目標。
- 當召回與延遲同時重要時再上HNSW。圖索引是互動式檢索的主流選擇,代價是更高記憶體與更慢構建。要基於自己的資料調構建與檢索引數,而不是接受預設值。
- 在超大規模時考慮量化或磁碟輔助索引。當記憶體成本佔主導時,乘積量化或磁碟輔助索引能顯著壓縮佔用,其召回與延遲代價應當實測而非假設。
- 單獨測試帶過濾的查詢。確認所選索引在真實過濾模式下仍能保持召回;如果不能,重新審視過濾應當前置執行,還是以更大的候選集做後置過濾。
- 規劃重建路徑。索引引數很難原地修改。要清楚全量重建需要多久、能否在重建期間由並行索引對外服務,因為你遲早會想改引數。
需要避免的錯誤,是在理解查詢分佈之前就最佳化索引。生產的向量檢索負載很少是均勻的:少數查詢佔了大部分流量,過濾選擇性差異極大,而把所有情況平均起來的基準測試不會告訴你p95的表現。先對真實查詢埋點兩週,再調參。
哪些架構模式最適合向量檢索?
在企業環境中,向量檢索很少作為獨立系統存在,而是嵌入一條檢索流水線。三種模式覆蓋了絕大多數場景,而它們的差別在於"向量負責什麼"。
- 純向量檢索:適合語義相似為主、關鍵詞匹配不重要的場景,例如以圖搜圖、重複工單歸併。優點是實現簡單,缺點是對專有名詞與精確編碼(如訂單號、SKU)表現很差。
- 混合檢索:向量與關鍵詞檢索並行執行,再對兩路結果融合排序。這是企業搜尋與多數RAG場景的預設選擇,因為它同時處理了"意思相近"與"字面精確"兩類需求,代價是需要調融合權重。
- 向量作為重排的前置召回:先用關鍵詞或結構化條件取回較大的候選集,再用向量或交叉編碼器重排。這種模式在候選集可控、精度要求高的場景中表現最好,代價是流水線更復雜。
無論選哪種模式,都建議把檢索層封裝在統一介面之後。嵌入模型會換、索引引數會調、供應商會變,而把這份變化關在一個介面裡,是讓這些必然發生的遷移不至於變成重寫的關鍵。
有哪些安全與運營風險需要提前規劃?
向量資料有一個容易被忽略的特性:嵌入在多數實際場景下是可逆的,即可以從向量中恢復出接近原始文字的資訊。這意味著向量庫不是"脫敏後的資料",它繼承了原始文件的全部敏感級別,並按此標準納入治理。
| 風險類別 | 具體表現 | 應對方式 |
|---|---|---|
| 資料敏感性 | 嵌入可近似還原原文,向量庫實際承載原始敏感級別 | 與源文件同一分類分級,同樣的訪問控制與加密要求 |
| 跨租戶洩漏 | 多租戶共用索引時過濾條件寫錯,導致跨客戶檢索 | 優先使用物理或邏輯隔離的名稱空間,並在檢索層強制注入租戶過濾 |
| 提示注入 | 被檢索文件中的惡意指令影響下游模型行為 | 把檢索內容標記為資料而非指令,並對輸出做校驗 |
| 模型漂移 | 嵌入模型更換後新舊向量混用,召回質量靜默下降 | 向量與模型標識、維度一同儲存,模型變更按全量重嵌專案管理 |
| 成本失控 | 語料增長與副本疊加使記憶體賬單超預算 | 按名稱空間統計向量量與查詢量,設定增長告警 |
運營上還有一項必做準備:重嵌。團隊往往預算了索引與叢集,卻沒有預算嵌入模型會升級、分塊策略會改進,而兩者都會觸發全量重嵌。在上千萬文件的規模上,這是一筆可觀的算力賬單和一條數天的流水線。因此從第一天起就應當把模型標識與原文一同儲存,並讓嵌入流水線具備冪等與斷點續跑能力。