
阿里出品,C++ 编写,无需独立服务器,毫秒级检索十亿级向量。
写在前面
向量数据库已经成为 RAG 应用的基础设施。大多数团队的第一反应是:上 Milvus、上 Qdrant、上 Pinecone。服务端部署、集群配置、运维成本——一套完整方案下来,光 ” 搭建环境 ” 就可能花掉你半个周。
Zvec 的切入角度不一样:把向量检索能力做成一个库,像 SQLite 一样嵌入你的代码。不需要独立的服务器进程,不需要网络通信,一个 import zvec 就能跑。
如果你在跑 RAG 原型、构建边缘 AI 应用、或者写一个需要本地向量检索的 CLI/ 桌面工具,这篇文章值得花 5 分钟。
一、它解决什么问题
问题:传统向量数据库(Milvus / Weaviate / Qdrant)需要独立部署、运维成本高、资源消耗大;Chroma 轻量但性能在百万级向量以上明显下降;FAISS 是库但没有持久化和并发访问。
Zvec 的解法:以嵌入式库的形式提供生产级向量检索,零运维、零配置、毫秒级延迟。
| 维度 | 数值 |
|---|---|
| 开源协议 | Apache-2.0 |
| GitHub | alibaba/zvec |
| Stars / Forks | 11,963 / 705 |
| Issues | 60 open |
| 首次发布 | 2025-12-05 |
| 最新稳定版 | v0.5.0(2026-06-12) |
| 核心语言 | C++ |
| 支持平台 | Linux / macOS / Windows / RISC-V |
二、支持范围:多语言 SDK + 多平台
语言绑定
| 语言 | 安装 |
|---|---|
| Python | pip install zvec(3.10–3.14) |
| Node.js | npm install @zvec/zvec |
| Go | github.com/zvec-ai/zvec-go |
| Rust | github.com/zvec-ai/zvec-rust |
| Dart/Flutter | flutter pub add zvec |
5 个官方 SDK,覆盖从服务端到移动端的全场景。Flutter 意味着 端侧 AI 应用可以直接在手机上跑向量检索。
操作系统
- Linux x86_64 / ARM64
- macOS ARM64
- Windows x86_64
- RISC-V(v0.5.0 新增)
RISC-V 支持对嵌入式 / 物联网场景意义重大——在国内工业控制和边缘计算中 RISC-V 芯片正在普及。
可视化工具
Zvec Studio:独立可视化调试工具,无需编写代码即可浏览数据、调试查询。比 Chroma 自带的 Dashboard 更轻。
三、核心能力:混合检索 + 全文本搜索 + DiskANN 索引
3.1 稠密 + 稀疏双向量
大多数向量数据库只支持稠密向量(dense embedding)。Zvec 原生支持稠密 + 稀疏双向量:
- 稠密向量:来自 BGE / E5 等语义 embedding 模型
- 稀疏向量:BM25 风格关键词向量(v0.5.0 支持 BM25)
- 混合查询:在单个
MultiQuery中同时查询稠密向量、稀疏向量、标量过滤和文本
这种组合是 混合检索(Hybrid Retrieval)的基础设施,让你不用自建两套索引。
3.2 原生全文本搜索(FTS)
v0.5.0 大版本新增了 Full-Text Search 能力。在任意字符串字段上附加 FTS 索引,即可用自然语言或结构化表达式查询。不需要搭配 Elasticsearch。
这意味着 Zvec 同时覆盖了三种检索方式:
语义检索 ← dense vector
关键词检索 ← sparse vector / FTS
过滤 ← scalar filter
三种能力在一个库、一个查询里完成,这比 ” 向量库 + Elasticsearch” 的组合方案轻量得多。
3.3 DiskANN 索引
v0.5.0 引入 DiskANN——把索引主体放在磁盘上,大幅降低大规模数据集的内存占用。原本 HNSW 索引完全在内存中,10 亿向量 × 768 维需要 TB 级内存;DiskANN 把冷数据留在磁盘,按需加载,内存需求降到原来的 1/5 到 1/10。
3.4 WAL 持久化 + 并发访问
- WAL(Write-Ahead Logging):崩溃或断电不丢数据,写操作先写日志再落盘
- 并发访问:多进程同时读,写操作独占锁
- 零服务:数据就是磁盘上的文件,用 git 管理都不成问题
3.5 向量索引类型
支持多种索引策略,从内存到磁盘自适应:
| 索引类型 | 特点 |
|---|---|
| HNSW | 近似最近邻,速度快,内存密集 |
| IVF | 倒排文件,可控内存 |
| Flat | 暴力精确搜索,用于小数据集验证 |
| DiskANN | 磁盘驻留,超大规模首选 |
四、3 步跑通:Python 最小示例
第一步:安装
pip install zvec
第二步:创建集合 + 写入数据
import zvec
# 定义 Schema
schema = zvec.CollectionSchema(
name="my_docs",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 768),
)
# 创建并打开集合
collection = zvec.create_and_open(path="./my_db", schema=schema)
# 写入文档
collection.insert([
zvec.Doc(
id="doc_1",
vectors={"embedding": [0.1, 0.2, ..., 0.5]}, # 768 维向量
fields={"title": "AI 安全 ", "content": "RAG 的安全风险..."}
),
zvec.Doc(
id="doc_2",
vectors={"embedding": [0.3, 0.4, ..., 0.1]},
fields={"title": " 向量检索 ", "content": "HNSW 的工作原理..."}
),
])
第三步:查询
# 向量相似性检索
results = collection.query(zvec.VectorQuery("embedding", vector=[0.4, 0.3, ..., 0.2]),
topk=10
)
# 混合检索:向量 + 文本过滤
results = collection.query(
zvec.MultiQuery(vectors=[zvec.VectorQuery("embedding", vector=[...])],
texts=["AI 安全 风险评估 "],
filters=zvec.ScalarFilter("category", "==", "security"),
),
topk=10
)
print(results)
# [{'id': 'doc_1', 'score': 0.92, ...}, ...]
整个安装到第一次检索,不超过 5 分钟。
五、对比:Zvec vs Chroma vs Milvus vs Qdrant vs LanceDB
| 维度 | Zvec | Chroma | Milvus | Qdrant | LanceDB |
|---|---|---|---|---|---|
| 部署方式 | 嵌入式 | 嵌入式 / 服务端 | 集群 | 服务端 | 嵌入式 / 服务端 |
| 核心语言 | C++ | Python/Rust | Go/C++ | Rust | Rust |
| 混合检索 | ✅ 原生 | ⚠️ 有限 | ✅ | ✅ | ✅ |
| FTS | ✅ v0.5 | ❌ 需配合 | ⚠️ 有限 | ✅ | ✅ |
| 磁盘索引 | ✅ DiskANN | ❌ | ✅ | ✅ | ✅ |
| WAL 持久化 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 许可证 | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
| 体积 | KB 级 | MB 级 | GB 级 | GB 级 | MB 级 |
| 适用规模 | 个人 → 十亿级 | 个人 → 百万级 | 十亿级 + | 亿级 + | 个人 → 千万级 |
| RISC-V | ✅ | ❌ | ❌ | ❌ | ❌ |
| Flutter SDK | ✅ | ❌ | ❌ | ❌ | ❌ |
| 中文社区 | 丰富 | 一般 | 一般 | 一般 | 一般 |
| 运维成本 | 零 | 低 | 高 | 高 | 低 |
结论 :如果你需要一个 ” 零运维、天生嵌入 ” 的向量库,Zvec 是当前最完整的选项。Chroma 门槛最低但性能天花板不够,Milvus/Qdrant 功能全但太重。Zvec 填补了这个中间地带—— 写代码即用,性能不妥协,规模不设限。
LanceDB 是最接近的竞争品(同为嵌入式 Rust/C++),但 Zvec 的混合检索 + FTS + RISC-V 是多出来的差异化优势。
六、决策表:按场景选谁
| 场景 | 推荐 | 理由 |
|---|---|---|
| RAG 原型 / 实验 | Zvec | 3 行安装,无运维,够用 |
| 本地 AI 工具(CLI/ 桌面) | Zvec | 嵌入式库,输出就是文件 |
| 边缘设备 / 端侧 AI | Zvec | 体积小 + RISC-V 支持 |
| 手机 App 向量检索 | Zvec | Flutter SDK 直接嵌入 |
| 超大规模(10 亿 + 向量) | Milvus / Zvec DiskANN | Milvus 生态更成熟;Zvec 小数据集体验更好 |
| 多租户 SaaS 平台 | Qdrant / Zvec | Qdrant 云服务成熟;Zvec 轻量 |
| 简单 Python notebook | Chroma | 最省事,无需 schema |
| 和 Arrow 数据流集成 | LanceDB | Arrow native,数据分析更顺 |
七、风险与注意事项
1. 生态还不够成熟
项目始于 2025-12,到 2026-06 只有约 7 个月。Go/Rust/Flutter SDK 是 v0.5 才有的新生态。生产部署前值得多测一轮。
2. 缺少完整的 SQL 接口
不像 PostgreSQL + pgvector 可以走 SQL 查询,Zvec 要走自己的 API。如果你的堆栈是 SQL-first 的,可能需要做一层抽象。
3. 分布式能力有限
目前官方聚焦单机嵌入,分布式方案不在路线图里。如果你需要多节点共享一个向量索引,Milvus 或 Qdrant 更合适。
4. BM25/FTS 是 v0.5 新增
官方发布才 10 天(2026-06-12),实际测试用例还不够丰富。混合检索的权重调参可能需要自己摸索。
5. Elixir SDK 还在进行中
GitHub Issues 有社区在提 Elixir SDK 需求(#403),目前尚未合并,Erlang/Elixir 生态要等一下。
八、总结
最值得装 Zvec 的三个理由:
- 零运维——
import zvec就能跑,不搭服务器、不配集群、不调参数 - 混合检索原生——稠密 / 稀疏 /FTS/ 过滤一次查询搞定,不用自己拼技术栈
- 边缘可用——体积小 + RISC-V + Flutter,端侧和物联网场景独一份
先试一周:在你下一个 RAG 小项目里把 Chroma/LanceDB 替换成 Zvec,3 分钟迁移代码,看看检索质量和启动速度有什么不同。API 设计足够 Pythonic,换起来几乎没有成本。