什麼是向量資料庫?核心定義一次搞懂
向量資料庫是一種專門設計用於儲存、索引和檢索高維度向量(embedding)的資料庫系統。與傳統關係型資料庫不同,它不依賴精確匹配,而是透過語義相似性來找到最相關的結果。當你輸入「蘋果」時,它能理解你可能指的是水果或科技公司,並根據上下文返回正確的結果。這種能力來自於將文字、圖像或音頻轉換為數值向量的過程,稱為 embedding。
為什麼現代應用需要向量資料庫?
傳統資料庫採用精確關鍵字匹配,無法理解語義差异。舉例來說,搜尋「手機」時,傳統資料庫不會自動找到「行動電話」的相關資料。向量資料庫解決了這個痛點,支援:
- 語義搜索:理解查詢的深層含義
- 相似性匹配:找出最相近的向量
- 大規模數據處理:支援百萬甚至億級向量檢索
向量資料庫的核心概念詳解
1. Embedding(向量嵌入)
Embedding 是將複雜數據(文字、圖像)轉換為固定維度向量(通常 128-2048 維)的技術。例如,「貓」和「狗」的向量會因為語義相似而距離較近,而「貓」和「汽車」的距離則較遠。
2. 相似性度量
向量資料庫使用數學公式計算向量間的相似度,常見方法包括:
- 餘弦相似度(Cosine Similarity):測量向量夾角
- 歐氏距離(Euclidean Distance):直線距離
- 點積(Dot Product):考慮方向和大小
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)
主流向量資料庫選擇指南
根據不同場景需求,選擇適合的向量資料庫:
- Milvus:開源、功能完整,適合大規模企業應用
- Pinecone:托管服務,易於上手,適合快速原型開發
- Weaviate:支援 GraphQL,適合需要靈活查詢的專案
- Chroma:輕量級,適合學習和小型專案
下一步:建立你的向量搜尋系統
掌握向量資料庫後,你可以進一步整合大型語言模型(LLM),建立智能問答系統、推薦引擎或圖像搜尋應用。建議從小型專案開始,例如將本地文件轉為向量並實現語義搜尋,逐步累積實戰經驗。