📌 项目地址:alibaba/zvec | ⭐ 10,372 颗星 | 🔧 C++ | 📜 未标注
为什么需要一个新的向量数据库?
向量搜索已成为现代应用(推荐系统、RAG、语义搜索)的核心组件。但大多数向量数据库要么是独立服务(如 Milvus、Qdrant),部署和维护成本高;要么是纯索引库(如 FAISS),缺乏持久化、并发控制和丰富的数据管理能力。zvec 填补了这个中间地带:它是一个嵌入式(in-process)进程内向量数据库,可以直接链接到应用进程中,无需独立服务器,却同时提供持久化存储、多进程并发读取、WAL 日志保护,以及罕见的原生全文搜索与混合检索能力。
核心特性:不再只是“向量搜索”
- 嵌入式、零运维:安装即用,纯本地无服务、无配置。无论是 Jupyter Notebook、后端服务还是边缘设备,只要代码能运行的地方 zvec 就能运行。
- Dense + Sparse + Full-Text:除了常规的稠密向量和稀疏向量索引,zvec 从 v0.5.0 起支持原生全文搜索(FTS)和混合查询(
MultiQuery),可在一条请求中融合向量相似度、全文关键词和结构化过滤条件。 - 生产级持久化:基于 Write-Ahead Logging(WAL)确保数据不丢失;支持多进程并发读、单进程独占写。
- 跨语言支持:官方提供 Python、Node.js、Go、Rust、Dart/Flutter SDK,以及可视化管理工具 Zvec Studio。
实际用法:从安装到混合搜索
根据官方文档,接入 zvec 只需要几行代码。以下以 Python 为例,展示基本流程(完整 API 请参考 官方文档):
# 安装
pip install zvec
- 创建或打开一个集合(Collection):集合类似于关系数据库的表,用于存储向量、属性和文本字段。
- 插入数据:可同时带有密集向量、稀疏向量、字符串字段和数值标量。
- 构建索引:支持 HNSW、IVF、DiskANN(v0.5.0 新增,适合大规模磁盘索引)等类型。
- 查询:使用
query方法进行向量近邻搜索;或者使用multi_query同时执行向量搜索 + 全文搜索 + 标量过滤,返回混合排序结果。
例如,假设你有一个商品描述数据集,可以这样实现混合检索:
# 伪代码示意,真实 API 以官方文档为准
collection = zvec.Collection("products")
collection.insert([
{"id": 1, "title": "红色连衣裙", "vector": [0.1, 0.2, ...], "price": 199},
{"id": 2, "title": "蓝色牛仔裤", "vector": [0.3, 0.4, ...], "price": 299},
])
# 混合查询:语义相似搜索 + 全文匹配“连衣裙” + 价格 < 250
result = collection.multi_query(
dense_vector=[0.15, 0.25, ...],
text="连衣裙",
filter={"price": {"$lt": 250}},
)
zvec 会自动融合向量距离分数和全文相关度分数,返回精确结果。所有操作都在进程内完成,数据持久化到本地文件,无需任何外部依赖。
与同类工具的对比
| 功能 | zvec | Chroma | LanceDB | FAISS |
|---|---|---|---|---|
| 嵌入式(无服务器) | ✅ | ✅ | ✅ | ❌(仅索引) |
| 全文搜索(FTS) | ✅ 原生 | ❌(需外部) | ❌ | ❌ |
| 混合检索 | ✅ MultiQuery | ❌ | ❌ | ❌ |
| 稀疏向量 | ✅ | ✅ | ❌ | ✅ |
| 持久化(WAL) | ✅ | ✅ | ✅ | ❌ |
| 多进程并发读 | ✅ | ❌(单进程) | ✅ | ❌ |
| 生产验证 | ✅ 阿里巴巴内部使用 | 社区为主 | 社区为主 | 学术界/工业界 |
zvec 最大的差异化能力就是一键同时做向量+全文+过滤,这在其他嵌入式方案中几乎看不到。如果你的业务需要同时理解语义和关键词(比如电商搜索、企业内部文档检索),zvec 可以节省集成 Elasticsearch 或 PostgreSQL 全文索引的巨大成本。
注意事项
- v0.5.0 仍在快速迭代中:FTS 和 DiskANN 都是全新特性,API 可能随版本调整,建议绑定具体版本号(如
zvec>=0.5,<0.6)并关注 Release Notes。 - C++ 运行时依赖:虽然使用 Python/Node.js SDK 无需编译,但底层是 C++ 库,某些环境(如极小容器)可能需要确保 glibc 版本兼容。
- 单进程写入限制:WAL 模型下写入是单进程独占,如果多个进程同时写入会冲突——这符合大多数嵌入场景(一个应用实例一个写入者),但若需要分布式写入,需自行设计分片。
- 许可证:项目采用 Apache 2.0 许可证,可自由商用,但请注意阿里巴巴官方未提供商业支持,社区可参考 Discord 和 GitHub Issues。
谁应该关注这个项目?
如果你的应用需要本地化、低延迟、不需要额外部署搜索引擎的向量 + 文本搜索能力——比如桌面软件、移动端本地推荐、IoT 设备上的语义检索,或者你希望将一个多模型的 RAG 系统直接嵌入到简单的 Python 服务中,zvec 是目前最轻量、功能最全面的选择之一。
这篇文章对你有帮助吗?