当你想给 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(推荐)

BASH
pip install zvec

要求 Python 3.10 - 3.14。

Node.js

BASH
npm install @zvec/zvec

Go

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

Rust

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

系统要求

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

快速上手

第一个向量搜索

只需几行代码,就能创建一个完整的向量数据库并完成相似度搜索:

PYTHON
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 模型,快速搭建一个文档问答系统:

PYTHON
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 或其他外部搜索引擎:

PYTHON
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 最强大的功能之一是将向量搜索、全文搜索和标量过滤组合在一起,一次查询获得最精确的结果:

PYTHON
# 混合搜索:向量 + 全文 + 标量过滤
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 索引可以将大部分索引存储在磁盘上,大幅降低内存占用:

PYTHON
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},
    )])

标量过滤

在向量搜索的基础上,添加结构化字段过滤:

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

持久化与并发

Zvec 使用 WAL(Write-Ahead Logging)保证数据持久化,即使进程崩溃或断电也不会丢失数据。同时支持多个进程同时读取同一个集合(写入时独占):

PYTHON
# 进程 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:

BASH
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 和其他方案的对比。