一款轻量级、超高性能的进程内向量数据库,基于阿里巴巴 Proxima 引擎,支持混合检索与零配置部署,可毫秒级完成十亿级向量检索。
项目简介#
zvec 是由阿里巴巴开源的进程内向量数据库,旨在提供极致的检索性能和极简的部署体验。它无需独立服务器,可直接嵌入 Python 应用中,支持十亿级数据的毫秒级查询。底层依托阿里 Proxima 引擎,保证了工业级的稳定性。
核心特性#
- 高性能搜索:毫秒级完成十亿级向量检索
- 零配置部署:安装即用,无需服务器、无需配置文件
- 混合检索:结合语义相似性与结构化过滤
- 多向量类型支持:同时支持 Dense vectors 和 Sparse vectors
- 进程内运行:直接作为库嵌入宿主程序,零网络延迟
安装与快速开始#
环境要求:Python 3.10 - 3.12
支持平台:
- Linux (x86_64, ARM64)
- macOS (ARM64)
安装命令:
pip install zvec
使用示例#
import zvec
# 定义 Schema
schema = zvec.CollectionSchema(
name="example",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 4),
)
# 创建并打开 Collection
collection = zvec.create_and_open(path="./zvec_example", schema=schema)
# 插入文档
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]}),
])
# 向量检索
results = collection.query(
zvec.VectorQuery("embedding", vector=[0.4, 0.3, 0.3, 0.1]),
topk=10
)
print(results) # [{'id': str, 'score': float, ...}, ...]
核心概念#
- Collection:数据集合容器
- CollectionSchema:集合元数据定义,包含向量字段类型(如 VECTOR_FP32)和维度
- Doc:文档对象,包含 ID 和向量数据
- VectorQuery:查询对象,封装查询向量和 TopK 参数
典型应用场景#
- RAG / 检索增强生成:作为 LLM 的本地知识库检索层
- 边缘计算 / 端侧 AI:在资源受限或无网环境下运行向量搜索
- 语义搜索与推荐系统:结合元数据过滤的高性能向量检索
- 快速原型开发:在 Notebook 中无需搭建服务器即可测试向量模型
架构特点#
- In-process 架构:编译为原生机器码,通过语言绑定直接加载到应用进程空间
- 本地文件存储:通过
path参数指定数据持久化目录 - 底层引擎:基于 Proxima(阿里巴巴久经考验的向量搜索引擎)