什麼是向量資料庫?核心定義一次搞懂

向量資料庫是一種專門設計用於儲存、索引和檢索高維度向量(embedding)的資料庫系統。與傳統關係型資料庫不同,它不依賴精確匹配,而是透過語義相似性來找到最相關的結果。當你輸入「蘋果」時,它能理解你可能指的是水果或科技公司,並根據上下文返回正確的結果。這種能力來自於將文字、圖像或音頻轉換為數值向量的過程,稱為 embedding。

為什麼現代應用需要向量資料庫?

傳統資料庫採用精確關鍵字匹配,無法理解語義差异。舉例來說,搜尋「手機」時,傳統資料庫不會自動找到「行動電話」的相關資料。向量資料庫解決了這個痛點,支援:

向量資料庫的核心概念詳解

1. Embedding(向量嵌入)

Embedding 是將複雜數據(文字、圖像)轉換為固定維度向量(通常 128-2048 維)的技術。例如,「貓」和「狗」的向量會因為語義相似而距離較近,而「貓」和「汽車」的距離則較遠。

2. 相似性度量

向量資料庫使用數學公式計算向量間的相似度,常見方法包括:

3. 索引技術

為加速搜尋,向量資料庫使用 HNSW、IVF 等索引演算法,在保證結果精確度的同時大幅提升效能。

實作練習:使用 Python 建立向量資料庫

以 Chroma 為例,這是一個輕量級的開源向量資料庫:

# 安裝 Chroma
pip install chromadb

# 建立向量資料庫
import chromadb

# 初始化客戶端
client = chromadb.Client()

# 建立集合(類似資料表)
collection = client.create_collection(name="articles")

# 新增向量資料
collection.add(
    documents=["這是關於 AI 的文章", "這是關於美食的文章"],
    ids=["doc1", "doc2"],
    metadatas=[{"category": "科技"}, {"category": "生活"}]
)

# 語義搜尋
results = collection.query(
    query_texts=["人工智慧技術"],
    n_results=1
)

print(results)

主流向量資料庫選擇指南

根據不同場景需求,選擇適合的向量資料庫:

  1. Milvus:開源、功能完整,適合大規模企業應用
  2. Pinecone:托管服務,易於上手,適合快速原型開發
  3. Weaviate:支援 GraphQL,適合需要靈活查詢的專案
  4. Chroma:輕量級,適合學習和小型專案

下一步:建立你的向量搜尋系統

掌握向量資料庫後,你可以進一步整合大型語言模型(LLM),建立智能問答系統、推薦引擎或圖像搜尋應用。建議從小型專案開始,例如將本地文件轉為向量並實現語義搜尋,逐步累積實戰經驗。