ZVec 是阿里巴巴开源的一款轻量级、高性能、进程内向量数据库
ZVec 是阿里巴巴开源的一款轻量级、高性能、进程内向量数据库。它支持密集和稀疏向量、全文搜索(FTS)以及混合搜索,并提供了丰富的多语言SDK。
以下是一份详细的部署与使用教程,涵盖了从安装到运行的各个环节。
📋 部署前准备
ZVec 以进程内库(in-process library)的形式运行,无需单独部署服务器,因此准备工作的核心是确定你的编程语言和开发环境。
- 支持的语言:ZVec 提供官方 SDK 的语言包括 Python、Node.js、Go、Rust 和 Dart/Flutter。
- 支持的操作系统与架构:
- Linux: x86_64 和 ARM64 (支持 glibc 和 musl,如 Alpine Linux)
- macOS: ARM64 (Apple Silicon)
- Windows: x86_64
- Python 特别注意: 需要 64位 Python 3.10 至 3.14 版本。
📦 第二步:安装 SDK
根据你的项目使用的编程语言,选择对应的包管理器进行安装。
Python
1 | pip install zvec |
Node.js
1 | npm install @zvec/zvec |
Rust
1 | cargo add zvec-rust |
Go
从源码或官方发布的预编译二进制文件引入,具体参考官方文档。
Dart/Flutter
1 | flutter pub add zvec |
⚡ 第三步:一分钟快速上手 (Python 示例)
安装完成后,你可以通过一个简单的Python示例来验证安装并了解基本用法。
创建或打开一个 Python 文件 (例如
zvec_demo.py)。编写以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29import zvec
# 1. 定义集合(Collection)的模式(Schema)
schema = zvec.CollectionSchema(
name="example", # 集合名称
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 4), # 向量字段:名称、类型、维度
)
# 2. 创建并打开集合(数据将持久化到 ./zvec_example 目录)
collection = zvec.create_and_open(path="./zvec_example", 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.8, 0.7, 0.6]}),
])
# 4. 执行向量相似性搜索
query_vector = [0.4, 0.3, 0.3, 0.1]
results = collection.query(
zvec.Query(field_name="embedding", vector=query_vector),
topk=2 # 返回最相似的2个结果
)
# 5. 打印结果
print("搜索结果(按相似度降序):")
for res in results:
print(f"ID: {res['id']}, 得分 (相似度): {res['score']:.4f}")运行代码:
1
python zvec_demo.py
如果一切正常,你将看到类似如下的输出,
doc_2和doc_1与查询向量更相似:1
2
3搜索结果(按相似度降序):
ID: doc_2, 得分 (相似度): 0.9999
ID: doc_1, 得分 (相似度): 0.7999
🔍 第四步:探索高级功能
ZVec 的核心能力远不止基础向量搜索,你可以根据自己的需求逐步探索:
- 全文搜索 (FTS): 支持对字符串字段进行关键词查询。你可以在 Schema 中定义全文索引字段,然后使用
Query的text参数进行搜索。 - 混合搜索 (Hybrid Search): 结合向量相似度和全文/过滤条件进行查询。例如,先通过向量找到语义相近的文档,再用关键词或过滤器(如时间、类别)进行精确筛选。这通过在
Query中组合vector和filter等参数实现。 - 持久化与并发: ZVec 默认使用预写日志 (WAL) 保证数据持久化。它支持多进程并发读取同一个集合,但写入操作需要单进程独占。
- zvec-grep (
zg): 这是一个集成了 ripgrep、BM25 和向量搜索的统一命令行搜索工具,非常适合在代码或文档库中进行本地优先的搜索。
🛠️ 第五步:从源码构建 (高级)
如果你需要定制编译或为不支持的平台构建,可以参考以下步骤(以Linux/macOS为例):
克隆仓库
1
2git clone https://github.com/alibaba/zvec.git
cd zvec构建
项目使用 CMake。你需要安装 CMake 和 C++ 编译器。1
2
3mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)运行测试 (可选)
1
make test
构建产物(库文件和头文件)会生成在
build/目录下。具体构建选项(如启用特定指令集)请查阅官方 Building from Source Guide(目前链接在README中指向文档,具体内容需查看仓库)。
🧪 第六步:验证与下一步
- 运行示例代码: 确保你的第一个程序成功运行,这是验证安装和基础环境的最快方式。
- 查阅官方文档: 项目的 GitHub 仓库提供了丰富的 文档 链接,包括 Benchmarks (性能基准)、DeepWiki (深入的技术细节) 等,可以帮助你深入了解其内部机制和最佳实践。
- 使用可视化工具: 官方提供了 Zvec Studio,一个用于浏览数据和调试查询的可视化工具,无需编写代码即可体验。
❗ 常见问题
- Python 安装失败: 请确认你的 Python 版本是 3.10-3.14 且为 64 位架构。可以运行
python -c "import struct; print(struct.calcsize('P') * 8)"检查位数。 - 性能调优: 对于生产环境,建议根据数据规模和内存/磁盘情况选择合适的索引类型(如 HNSW、DiskANN、IVF-RaBitQ 等)。新版本的索引(如 IVF-RaBitQ)支持运行时 AVX2/AVX512 自动调度,能充分利用 CPU 性能。
- 数据持久化: 确保在创建集合时指定了有效的
path,ZVec 会将数据持久化到该目录。
至此,你已经成功部署并运行了 ZVec。建议从 Python 示例开始,快速验证核心流程,然后根据你的应用场景(如RAG系统、推荐引擎、语义搜索等),深入学习其索引优化和混合查询功能。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 极客的赛博空间 | 专注 AI 与技术分享!
评论

