向量資料庫儲存高維向量(通常為 384 到 3072 個浮點數,視嵌入模型而定),並支援在數百萬或數十億個向量中快速進行最近鄰搜尋。基本操作是:給定一個查詢向量,找出資料庫中與其最接近的 k 個向量,以餘弦相似度、點積或歐幾里得距離來衡量。暴力搜尋(將查詢與所有儲存的向量逐一比較)雖然精確,但在大規模時速度過慢。因此向量資料庫使用近似最近鄰(ANN)演算法,以微小的準確度損失換取巨大的速度提升——通常在搜尋索引的一小部分時,就能找到 95–99% 的真實最近鄰。
最常見的 ANN 演算法是 HNSW(階層可導航小世界),由 Qdrant、Weaviate、pgvector 等許多工具使用。HNSW 建立一個多層次的圖,其中每個向量都是節點,並與其最近鄰相連。搜尋從頂層開始(稀疏、長距離連接),逐步深入到底層(密集、短距離連接),就像在地圖上縮放一樣。它速度快、準確度高,適合處理數百萬個向量的資料集。代價是記憶體:HNSW 將圖儲存在 RAM 中,因此需要足夠的記憶體來存放向量加上圖的開銷。以一百萬個 1536 維向量(OpenAI 的 ada-002 輸出)為例,約需 6–8 GB。IVF(反向文件索引)和 ScaNN 等替代方案記憶體使用較少,但需要更多調整。Pinecone 和某些 Qdrant 設定使用量化——將向量從 float32 壓縮為 int8 或二進位——以在相同記憶體中存放更多向量,但會略微損失準確度。
在主要向量資料庫之間的選擇取決於你的限制。Qdrant 和 Weaviate 是開源且可自行部署的,這對資料隱私和成本控制很重要——你可以在自己的基礎設施上執行它們,僅支付計算費用。Pinecone 是完全托管(無需操作基礎設施),但廠商鎖定且按向量計價,在大規模時會變得昂貴。ChromaDB 輕量且內嵌(在進程中執行,儲存至磁碟),適合原型設計和小資料集,但未針對生產環境的數百萬向量工作負載進行設計。如果你已經使用 PostgreSQL,使用 pgvector 擴展的 PostgreSQL 會很有吸引力,因為可以避免在堆疊中新增資料庫,但其查詢效能在大規模時會落後於專門設計的向量資料庫。對於大多數生產級 RAG 系統,Qdrant 或 Weaviate 提供最佳的效能、功能和操作控制平衡。
金屬資料過濾是區分嚴肅向量資料庫與玩具實現的特徵。實際上,你幾乎從不希望搜尋整個資料集——你希望搜尋「此用戶上傳的所有文件」或「僅最近 30 天的文件」或「特定 PDF 的片段」。向量資料庫允許你將金屬資料與每個向量一起儲存,並在相似度搜尋前或期間應用過濾。這稱為預過濾(先過濾,再搜尋縮減後的集合)或後過濾(搜尋所有內容,再丟棄不符合的結果)。預過濾更有效率,但需要索引支援;目前大多數生產資料庫都支援。在索引時正確設定金屬資料結構可以節省後續大量麻煩——在未設計過濾的資料集上後期加入過濾通常意味著需要重新索引所有內容。
向量資料庫在當前 AI 波潮之前就已存在——Spotify 幾年前就使用近似最近鄰搜尋來推薦音樂,而 Facebook 的 Faiss 套件自 2017 年起就已存在。但 2023–2024 年嵌入模型和 RAG 的爆發使其從利基技術轉變為關鍵基礎設施。這個領域仍在快速成熟:多租戶(在共用部署中高效隔離客戶資料)、混合搜尋(在單一查詢中結合向量和關鍵字搜尋)、以及磁碟索引(處理大於記憶體的資料集)都是產品間差異顯著且快速改進的領域。如果你今天開始一個專案,選擇一個能處理當前規模、支援金屬資料過濾和混合搜尋,且有活躍維護軌跡的資料庫。你總是可以之後遷移——嵌入向量是可移植的。