當你想給 AI 應用加上「以文搜圖」「語意搜尋」「相似度推薦」功能時,第一個想到的是什麼?Chroma?Pinecone?還是 Weaviate?

今天介紹的這個開源專案,可能會讓你重新思考向量資料庫的選擇——它叫 Zvec,是阿里巴巴通義實驗室開源的嵌入式向量資料庫,被稱為「向量資料庫界的 SQLite」。

無需伺服器、無需 Docker、無需設定檔,pip install zvec 之後直接在你的 Python 行程中就能執行。就是這麼簡單。

專案簡介

Zvec 是阿里巴巴開源的一個輕量級、行程內(in-process)向量資料庫。它的設計理念和 SQLite 如出一轍——不依賴任何外部服務,直接嵌入到你的應用程式中

特性 說明
GitHub Stars 10,400+(2026 年 6 月 GitHub Trending 上榜)
授權條款 Apache 2.0
語言 C++ 核心,多語言 SDK(Python / Node.js / Go / Rust / Dart)
最新版本 v0.5.0(2026-06-12)
底層引擎 Proxima(阿里巴巴內部使用的向量搜尋引擎)

Zvec vs 傳統向量資料庫

特性 Zvec Chroma Pinecone Milvus
部署方式 行程內(嵌入式) 需要服務 雲端託管 需要部署
安裝 pip install zvec 需要 Docker 註冊帳號 複雜部署
記憶體佔用 低(DiskANN 索引支援磁碟儲存) 中等 不適用
適用場景 本機應用、Edge、中小規模 RAG 原型開發 生產雲端服務 大規模叢集

一句話總結: 如果你需要一個「開箱即用」的向量資料庫,不想折騰伺服器和設定,Zvec 是最輕量、最快速的選擇。

安裝

Zvec 支援多個作業系統和程式語言,安裝非常簡單。

Python(推薦)

pip install zvec

要求 Python 3.10 - 3.14。

Node.js

npm install @zvec/zvec

Go

go get github.com/zvec-ai/zvec-go

Rust

# Cargo.toml
[dependencies]
zvec = "0.5"

系統需求

平台 架構
Linux x86_64, ARM64
macOS ARM64 (Apple Silicon)
Windows x86_64

快速上手

第一個向量搜尋

只需幾行程式碼,就能建立一個完整的向量資料庫並完成相似度搜尋:

import zvec

# 1. 定義集合結構(Schema)
schema = zvec.CollectionSchema(
    name="my_collection",
    vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 4),
)

# 2. 建立並開啟集合(自動持久化到本機)
collection = zvec.create_and_open(path="./my_zvec_data", schema=schema)

# 3. 插入向量資料
collection.insert([
    zvec.Doc(id="doc_1", vectors={"embedding": [0.1, 0.2, 0.3, 0.4]}),
    zvec.Doc(id="doc_2", vectors={"embedding": [0.2, 0.3, 0.4, 0.1]}),
    zvec.Doc(id="doc_3", vectors={"embedding": [0.9, 0.1, 0.1, 0.2]}),
])

# 4. 執行向量相似度搜尋
results = collection.query(
    zvec.VectorQuery("embedding", vector=[0.2, 0.3, 0.3, 0.1]),
    topk=2
)

# 輸出結果
for r in results:
    print(f"ID: {r['id']}, 相似度得分: {r['score']:.4f}")

執行結果:

ID: doc_2, 相似度得分: 0.9899
ID: doc_1, 相似度得分: 0.9798

建構一個簡單的 RAG 應用

結合 OpenAI 的 embedding 模型,快速搭建一個文件問答系統:

import zvec
import openai

# 初始化 embedding 模型
client = openai.OpenAI(api_key="your-api-key")

def get_embedding(text: str) -> list[float]:
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

# 建立集合
schema = zvec.CollectionSchema(
    name="rag_docs",
    vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 1536),
    fields=[
        zvec.FieldSchema("content", zvec.DataType.STRING),
        zvec.FieldSchema("source", zvec.DataType.STRING),
    ],
)

collection = zvec.create_and_open(path="./rag_data", schema=schema)

# 索引文件
documents = [
    ("Zvec 是阿里巴巴開源的輕量級向量資料庫", "doc1.md"),
    ("向量資料庫用於儲存和檢索高維向量資料", "doc2.md"),
    ("RAG 技術結合了檢索和生成,是目前 LLM 應用的主流方案", "doc3.md"),
]

for content, source in documents:
    embedding = get_embedding(content)
    collection.insert([
        zvec.Doc(
            vectors={"embedding": embedding},
            fields={"content": content, "source": source},
        )
    ])

# 搜尋最相關的文件
question = "什麼是向量資料庫?"
query_embedding = get_embedding(question)

results = collection.query(
    zvec.VectorQuery("embedding", vector=query_embedding),
    topk=2
)

print("相關文件:")
for r in results:
    print(f"- [{r['fields']['source']}] {r['fields']['content']}")
    print(f"  相似度: {r['score']:.4f}\n")

進階功能

v0.5.0 引入了原生全文搜尋功能,無需引入 Elasticsearch 或其他外部搜尋引擎:

import zvec

schema = zvec.CollectionSchema(
    name="ft_search",
    vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 384),
    fields=[
        zvec.FieldSchema("title", zvec.DataType.STRING),
        zvec.FieldSchema("body", zvec.DataType.STRING),
    ],
)

collection = zvec.create_and_open(path="./fts_data", schema=schema)

# 為 body 欄位建立全文搜尋索引
collection.create_fts_index("body_fts", field="body")

# 插入資料
collection.insert([
    zvec.Doc(
        id="1",
        vectors={"embedding": [0.1] * 384},
        fields={"title": "Python 教學", "body": "Python 是一門強大的程式語言,廣泛用於 AI 和資料分析。"},
    ),
    zvec.Doc(
        id="2",
        vectors={"embedding": [0.2] * 384},
        fields={"title": "JavaScript 入門", "body": "JavaScript 是前端開發的核心語言,支援 Web、Node.js 等場景。"},
    ),
])

# 全文搜尋
results = collection.query(
    zvec.FTSQuery("body_fts", "Python 資料分析"),
    topk=5
)

for r in results:
    print(f"[{r['fields']['title']}] {r['fields']['body'][:30]}...")

Zvec 最強大的功能之一是將向量搜尋、全文搜尋和純量過濾組合在一起,一次查詢獲得最精確的結果:

# 混合搜尋:向量 + 全文 + 純量過濾
results = collection.query(
    zvec.MultiQuery([
        # 向量相似度
        zvec.VectorQuery("embedding", vector=[0.15] * 384, weight=0.7),
        # 全文搜尋
        zvec.FTSQuery("body_fts", "程式語言 教學", weight=0.3),
    ]),
    topk=3
)

for r in results:
    print(f"[{r['id']}] 混合得分: {r['score']:.4f}")

DiskANN 磁碟索引

當你的向量資料量很大時,記憶體可能不夠。Zvec 的 DiskANN 索引可以將大部分索引儲存在磁碟上,大幅降低記憶體佔用:

schema = zvec.CollectionSchema(
    name="large_collection",
    vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 768),
)

# 使用 DiskANN 索引建立集合
collection = zvec.create_and_open(
    path="./diskann_data",
    schema=schema,
    index_options=zvec.IndexOptions(
        index_type=zvec.IndexType.DISKANN,  # 磁碟索引
    )
)

# 插入大量資料(百萬級也不怕)
for i in range(100000):
    collection.insert([zvec.Doc(
        id=f"doc_{i}",
        vectors={"embedding": [0.1 * (i % 768)] * 768},
    )])

純量過濾

在向量搜尋的基礎上,加上結構化欄位過濾:

results = collection.query(
    zvec.ScalarQuery("category = 'AI' AND published_year >= 2025"),
    topk=10
)

持久化與併發

Zvec 使用 WAL(Write-Ahead Logging)保證資料持久化,即使行程崩潰或斷電也不會遺失資料。同時支援多個行程同時讀取同一個集合(寫入時獨佔):

# 行程 A:寫入
collection_a = zvec.open("./shared_data", mode="write")
collection_a.insert([zvec.Doc(id="new_1", vectors={"embedding": [0.5] * 4})])
collection_a.flush()

# 行程 B:讀取(與行程 A 並行)
collection_b = zvec.open("./shared_data", mode="read")
results = collection_b.query(
    zvec.VectorQuery("embedding", vector=[0.5] * 4),
    topk=5
)

效能表現

根據官方基準測試,Zvec 在多個維度上表現出色:

  • 搜尋延遲: 毫秒級回應,即使在數十億向量資料集上
  • 記憶體效率: DiskANN 索引比傳統記憶體索引節省 10 倍以上的記憶體
  • 吞吐量: 支援高併發查詢場景
  • 對比競品: 在相同硬體下,Zvec 的 QPS(每秒查詢數)和延遲均優於 Chroma 和 Milvus

詳細基準測試資料請參考 官方 Benchmarks 文件

視覺化除錯工具:Zvec Studio

如果你不喜歡寫程式碼來除錯向量資料,Zvec 官方提供了視覺化工具 Zvec Studio

git clone https://github.com/zvec-ai/zvec-studio
cd zvec-studio
npm install && npm run dev

開啟瀏覽器即可瀏覽集合資料、除錯查詢語句、檢視索引狀態——無需編寫任何程式碼。

適用場景

場景 為什麼適合 Zvec
個人 RAG 應用 無需部署外部服務,pip install 即用
桌面端 AI 應用 嵌入式設計,不增加額外行程
行動端/Edge 裝置 輕量、低記憶體佔用
原型快速驗證 零設定,5 分鐘跑通完整流程
中小規模生產 WAL 持久化 + DiskANN 保證可靠性
多語言專案 Python / Node.js / Go / Rust / Dart SDK

總結

Zvec 的出現填補了一個重要的空白——在 Chroma 等需要 Docker 部署的向量資料庫,和 Pinecone 等雲端服務之間,Zvec 提供了一個真正輕量、真正嵌入式的替代方案。

如果你是以下類型的開發者,Zvec 值得你花 5 分鐘試試:

  • 想在本機跑一個 RAG 應用,不想折騰 Docker
  • 需要一個簡單的向量資料庫做語意搜尋原型
  • 在開發桌面/行動端 AI 應用,需要輕量級嵌入方案
  • 厭倦了複雜設定,想要 pip install 就能用的工具

專案位址: github.com/alibaba/zvec
官方文件: zvec.org

如果你也在用 Zvec,歡迎在留言區分享你的使用體驗。或者你已經在用其他向量資料庫了?歡迎聊聊 Zvec 和其他方案的對比。