跳轉至

建立 2026-09-15 更新 2026-09-15

Weaviate

Weaviate 是開源向量資料庫,特色是內建 vectorizer:匯入原文時由資料庫(或連上的模型服務)產生向量,查詢可用 near_text 直接丟句子,不必在應用層先呼叫 embedding API。也可完全自備向量。

本機可用 Docker 或 Embedded;正式環境可用 Weaviate Cloud。影片見 Weaviate 影音

什麼時候選它

  • 希望「匯入文字就能搜」,少寫一層 embedding 程式。
  • 同一套 API 要做語意搜尋、hybrid search 與 RAG(generative search)。
  • 需要 GraphQL 或官方 Python/TS/Go/Java client。

若你已經有穩定的 embedding pipeline、只缺儲存與 ANN,Qdrantpgvector 也可能更單純。

核心物件

名稱 作用
Collection 一類物件(舊文件稱 class)。設定 vectorizer 與生成模型。
Object 屬性(properties)+ 向量。向量可自動產生。
near_text / near_vector 語意搜尋。前者由 Weaviate 幫你嵌入查詢字串。
Hybrid 向量 + 關鍵字(BM25)混合。
Generative 把命中物件送到 LLM,也就是內建 RAG。

最小流程(Embedded)

Embedded 會在 Python 行程裡起一個 Weaviate,資料存在本機,重開程式還在。適合跟官方一分鐘影片對照。

import os
import weaviate
from weaviate.classes.config import Configure, Property, DataType

client = weaviate.connect_to_embedded(
    headers={"X-OpenAI-Api-Key": os.environ["OPENAI_API_KEY"]},
)

collection = client.collections.create(
    name="Doc",
    vector_config=Configure.Vectors.text2vec_openai(),
    properties=[Property(name="text", data_type=DataType.TEXT)],
)

collection.data.insert({"text": "退貨請於七日內提出申請。"})

hits = collection.query.near_text(query="怎麼寄回商品", limit=2)
for obj in hits.objects:
    print(obj.properties["text"])

client.close()

Cloud 改用 connect_to_weaviate_cloud(cluster_url=..., auth_credentials=...)。不想依賴 OpenAI 時,本機 Docker quickstart 可搭配 Ollama 的 text2vec-ollama。逐步指令見 Cloud QuickstartLocal Quickstart

官方學習資源

官方 YouTube

Weaviate vector database 頻道 有 Embedded 一分鐘示範、meetup 入門與會議演講。內嵌見 Weaviate 影音

官方課程/證照

Weaviate Academy 是原廠學習路徑(Academy 頁面註明認證核發仍在建置)。另有 LinkedIn Learning 的 Vector Databases Professional Certificate by Weaviate,由 Weaviate 背書。