EN

2.5 向量資料庫簡介

專門用來存向量、並且能快速找出最接近的那幾個的資料庫。

RAG下一篇 →

文字轉成向量之後,這些向量要存在哪裡?每次提問都從頭算一遍太慢,所以我們需要一個專門為向量設計的儲存和搜尋系統,這就是向量資料庫(vector database)。

它做什麼

向量資料庫的核心功能是:

  1. 儲存向量,以及對應的原始文字和附加資訊(metadata)。
  2. 建立索引,讓大量向量之間的相似度搜尋可以很快完成(用的就是 2.4 講的 ANN)。
  3. 查詢:給一個問題向量,回傳最接近的 k 筆,附上分數。
  4. 過濾:可以加條件,例如「只在 2024 年之後的文件裡找」「只找某個部門的文件」。
  5. 管理資料:新增、更新、刪除。

和一般資料庫有什麼不同

傳統資料庫 向量資料庫
查詢方式 精確比對,例如「年齡大於 30」 相似度搜尋,例如「找最像這句話的 5 筆」
資料型態 數字、文字、日期等欄位 高維向量,通常再加原文和 metadata
結果 符合就是符合,不符合就不是 一份依相似度排序的清單
索引 B-tree 等 HNSW、IVF 等近似搜尋結構

存進去的長什麼樣子

一筆資料通常包含這幾個部分:

id        :chunk-0017
vector    :[0.012, -0.53, 0.88, ... ]
text      :員工年資滿六個月,可享有三天特別休假……
metadata  :{ "來源": "人事規章.pdf", "頁數": 12, "更新日期": "2026-01-15" }

為什麼要連原文一起存?因為檢索找到的是向量,但最後要交給模型的是文字。metadata 則可以用來過濾,也可以在回答時標出處(第 4 章會用到)。

常見的類型

專用的向量資料庫

  • Chroma:輕量,適合在自己電腦上開發、做原型。
  • Qdrant、Weaviate、Milvus:功能完整,可以自己架設,也有雲端版本。
  • Pinecone:全託管的雲端服務,不用自己維運。

向量搜尋函式庫

  • FAISS(Meta 開發):是函式庫,不是完整的資料庫。搜尋速度快,但資料管理、過濾這些要自己處理。

在既有資料庫上加向量功能

  • PostgreSQL 的 pgvector 擴充套件:如果你本來就在用 PostgreSQL,可以直接在同一個資料庫裡存向量。

這些工具的功能和價格都在持續變動,選用前請以官方文件為準。

小提醒

  • 向量資料庫存的是你處理好的資料,資料怎麼切、怎麼加 metadata,會直接影響檢索品質。這是第 3 章的重點。
  • 資料更新後,對應的向量要跟著更新,不然檢索到的會是舊內容。
← 全部文章