每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite

引言

"向量数据库的 SQLite------嵌进应用里跑,不需要外部服务器。"

这是"每日一个开源项目"系列的第134篇文章 。今天的主角是 Zvec------阿里巴巴通义实验室开源的进程内向量数据库。

构建 RAG 应用时,向量数据库是绕不开的一环。但传统向量数据库的部署方式是外部服务:Pinecone 是云服务,Milvus/Qdrant/Weaviate 是独立服务器。这意味着每个应用都要维护一个额外的基础设施组件,有网络调用开销,有运维负担,在 Notebook 或者边缘设备上根本跑不起来。

Zvec 的设计方向是"向量数据库的 SQLite":pip install zvec,进程内运行,没有 daemon,没有网络调用,没有服务器配置。底层是阿里巴巴在生产环境经过验证的 Proxima 向量搜索引擎。

v0.5.0(2026 年 6 月)加入了原生全文检索和混合查询,从纯向量搜索工具变成了可以替代多个基础设施组件的综合检索引擎。

你将学到什么

  • 进程内向量数据库的设计取舍:为什么 in-process 在很多场景比独立服务更合适
  • Zvec 的索引类型:HNSW、FAISS、DiskANN、稀疏向量各自适用什么场景
  • v0.5.0 的混合查询:如何把向量搜索 + 全文检索 + 标量过滤合并进一个查询
  • DiskANN 索引:如何把十亿规模的向量数据库装进内存有限的机器
  • 性能数据:VectorDBBench 上的实测 QPS 和与 Pinecone 等的对比
  • 五种语言 SDK 的覆盖:从服务端到移动端的全链路支持

前置知识

  • 了解向量嵌入和相似度搜索的基本概念
  • 有 RAG 应用开发或向量数据库使用经验
  • 熟悉 Python,其他语言 SDK 了解即可

项目背景

项目简介

Zvec 是一个开源的进程内向量数据库,定位是"轻量、极速、直接嵌入应用"。底层基于 Alibaba Proxima 引擎------阿里内部大规模图像搜索和推荐系统的生产级向量搜索基础。

进程内(in-process)是关键词。向量搜索发生在应用进程内部,和 SQLite 对关系数据的处理方式一样,不经过网络,不依赖外部守护进程。

作者/团队介绍

  • 团队: 阿里巴巴通义实验室(Tongyi Lab)
  • 底层引擎: Alibaba Proxima(阿里内部生产级向量搜索引擎)
  • License: Apache-2.0
  • 最新版本: v0.5.0(2026年6月)

项目数据

  • ⭐ GitHub Stars: 10,500+
  • 🍴 Forks: 607+
  • 🗓 首次发布: 2025年12月
  • 📄 License: Apache-2.0

主要功能

核心作用

markdown 复制代码
传统方式(外部服务):
应用进程  →  网络请求  →  向量数据库服务  →  返回结果
             ↓
          延迟增加 + 运维负担 + 不适合边缘场景

Zvec(进程内):
应用进程
  └── Zvec 库(进程内)
        ├── 向量索引(内存/磁盘)
        ├── 全文索引(v0.5.0)
        └── 标量过滤
  直接返回结果,无网络开销

使用场景

  1. 本地 RAG 应用:在笔记本或边缘设备上构建不依赖云服务的 RAG 系统
  2. Notebook 原型:数据科学工作流中直接使用,不需要配置外部服务
  3. 移动端 AI:Dart/Flutter SDK 支持 Android 和 iOS 上的设备端向量搜索
  4. 生产服务嵌入:把向量搜索能力直接嵌进 Python/Go/Rust 服务,减少基础设施组件
  5. Agent 知识库:通过 MCP 集成(v0.3.0)为 AI Agent 提供本地向量记忆

快速开始

安装

bash 复制代码
pip install zvec

# 带 Zvec Studio 可视化工具
pip install zvec-studio

基础用法

python 复制代码
import zvec

# 定义 Schema
schema = zvec.CollectionSchema(
    name="articles",
    vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 1536),
    fields=[
        zvec.FieldSchema("title", zvec.DataType.STRING),
        zvec.FieldSchema("content", zvec.DataType.STRING),
        zvec.FieldSchema("score", zvec.DataType.FLOAT),
    ]
)

# 创建并打开 Collection
collection = zvec.create_and_open(path="./my_rag_db", schema=schema)

# 插入文档
collection.insert([
    zvec.Doc(
        id="doc_1",
        vectors={"embedding": [0.1, 0.2, ...]},  # 1536 维向量
        fields={"title": "AI 基础", "content": "...", "score": 9.5}
    )
])

# 纯向量搜索
results = collection.query(
    zvec.VectorQuery("embedding", vector=query_embedding),
    topk=10
)

混合查询(v0.5.0)

python 复制代码
# 同时用向量相似度 + 全文检索 + 标量过滤
results = collection.query(
    zvec.MultiQuery(
        queries=[
            zvec.VectorQuery("embedding", vector=query_embedding, weight=0.7),
            zvec.FTSQuery("content", text="机器学习", weight=0.3),
        ],
        filter="score > 8.0",  # 标量过滤
        fusion=zvec.FusionType.RRF  # Reciprocal Rank Fusion 融合排序
    ),
    topk=10
)

全文检索

python 复制代码
# 为字段创建全文索引
collection.create_index("content", zvec.IndexType.FULL_TEXT)

# 纯全文搜索
results = collection.query(
    zvec.FTSQuery("content", text="向量数据库"),
    topk=10
)

Node.js

javascript 复制代码
import { createCollection, VectorQuery } from '@zvec/zvec';

const collection = await createCollection({
  path: './my_db',
  schema: { name: 'docs', vectors: { embedding: { dim: 1536 } } }
});

const results = await collection.query(
  new VectorQuery('embedding', queryVector),
  { topk: 10 }
);

多语言 SDK

语言 安装 适用场景
Python pip install zvec 数据科学、RAG 服务、Notebook
Node.js npm install @zvec/zvec Web 后端、全栈应用
Go go get github.com/alibaba/zvec-go 高性能后端服务
Rust crates.io: zvec 系统级应用、性能敏感场景
Dart/Flutter flutter pub add zvec Android / iOS 移动端

项目详细剖析

进程内架构的取舍

Zvec 的核心设计决策是放弃客户端-服务器架构,选择进程内嵌入。这个选择有具体的代价和收益:

收益

  • 零网络延迟:向量搜索发生在内存或本地磁盘,没有网络往返
  • 零运维负担:不需要部署、监控、升级向量数据库服务
  • 可移植性:应用二进制 + 数据文件,可以部署到任何有文件系统的地方
  • 边缘/移动端可用:Dart SDK 支持 Android/iOS 上的设备端推理

代价

  • 不支持多服务共享同一个向量库(单进程写,多进程只读)
  • 无法跨网络访问(这是架构本身决定的,不是缺陷)

对于大多数 RAG 应用原型、边缘部署、单服务架构,这个权衡是合理的。需要多副本、分布式查询的场景,用 Milvus 或 Qdrant 更合适。

索引类型

HNSW(Hierarchical Navigable Small World): 默认索引,基于图结构的近似近邻搜索。适合内存充足、需要最高查询速度的场景。查询时间对数级别,建索引时间较长。

FAISS: Facebook AI Research 开源的向量搜索库接口。多种量化策略(IVF、PQ),在精度和速度之间灵活权衡。

DiskANN(v0.5.0 新增): 把向量索引存在磁盘而非内存,大幅降低内存需求。名称来自微软研究院的 DiskANN 论文。十亿规模向量在普通服务器上可用,代价是查询延迟略高于纯内存索引。

稀疏向量: 支持 BM25、SPLADE 等稀疏表示的向量存储和检索,适合关键词语义的混合检索场景。

混合查询设计

v0.5.0 的混合查询把三类检索整合进一个 MultiQuery 接口:

markdown 复制代码
MultiQuery
    ├── VectorQuery(密集向量相似度)
    │   └── 适合语义相似性匹配
    ├── FTSQuery(全文检索)
    │   └── 适合关键词精确匹配
    └── ScalarFilter(标量过滤)
        └── 适合结构化条件筛选(日期、分数、类别)

融合排序(Fusion):
    ├── RRF(Reciprocal Rank Fusion)------推荐,平衡多路结果
    └── Weighted(加权融合)------可调节各路权重

这个设计的实用价值在于:真实的 RAG 查询通常不是纯向量相似度------用户经常需要"语义上相关 + 包含特定关键词 + 最近一个月的文档"这类组合条件。把这三个条件分成三个独立查询再手动合并排序,代价高且结果次优;MultiQuery + RRF 在一次查询里处理。

性能数据

在 VectorDBBench(Cohere 10M 数据集,768 维,1000 万向量)测试中:

  • Zvec 实测 8,000+ QPS,超过当时排行榜第一名(ZillizCloud)的 2 倍以上
  • 自报告数据:查询速度超过 Pinecone 约 7 倍

底层性能来源:

  • SIMD 指令:向量距离计算利用 AVX-512/AVX2,现代 CPU 单次指令处理 16 个 float32
  • 多线程:建索引和查询都充分利用多核
  • 缓存友好的内存布局:减少 CPU 缓存 miss
  • RabitQ 量化(v0.3.0):在精度损失极小的前提下压缩向量存储

版本演进速度

Zvec 从 2025 年 12 月首次发布到现在,半年内发布了 6 个主要版本:

版本 时间 核心变化
v0.1.0 2025年12月 初始发布,HNSW 基础功能
v0.2.0 2026年2月 ARM64 Linux,统一搜索接口
v0.3.0 2026年4月 Windows 支持,RabitQ 量化,MCP/Agent 集成
v0.4.0 2026年5月 Dart/Flutter SDK,Android/iOS 支持
v0.5.0 2026年6月 全文检索,混合查询,DiskANN,Go/Rust SDK,Zvec Studio

MCP 集成(v0.3.0)是一个有意思的方向:AI Agent 可以直接通过 MCP 协议访问 Zvec 中的向量记忆,不需要额外的适配层。

Zvec Studio

pip install zvec-studio 安装后,可以用可视化界面浏览 Collection、执行查询、调试向量搜索结果,不需要写代码。对于 RAG 应用的调试和数据探索很实用。


项目地址与资源

官方资源

相关项目

  • Zvec Studio : pip install zvec-studio(可视化管理工具)
  • zvec-go: Go SDK
  • zvec-rust: Rust SDK
  • Alibaba Proxima: Zvec 底层的生产级向量搜索引擎

总结

Zvec 的定位很清晰:把生产级向量搜索能力以嵌入库的形式提供,消灭向量数据库的部署和运维复杂度。

"SQLite of vector databases"这个类比准确:SQLite 让关系数据库从"需要配置服务器"变成了"一个文件,随处可用";Zvec 在向量搜索领域做了同样的事。

v0.5.0 加入的混合查询,把向量相似度 + 全文检索 + 标量过滤合并进一个接口,对 RAG 应用来说意义很实在------真实查询往往就是这三类条件的组合,过去需要三个独立系统(向量库 + 搜索引擎 + 数据库)完成的工作,现在在一个进程内的嵌入库里搞定。

Dart SDK 支持 Android/iOS 是另一个值得关注的方向:设备端 RAG 不再需要把向量搜索请求发回服务器。

10.5k Stars,半年内 6 个主要版本,项目处于快速迭代阶段,值得持续关注。


探索 PrimeSkills ------ 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。

欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。

相关推荐
冬奇Lab1 小时前
Agent 系列(22):Context Engineering 深度——三种上下文管理策略的量化对比
人工智能·agent
hboot1 小时前
AI工程师第二课 - 数据处理
人工智能·python·数据分析
程序员cxuan2 小时前
DeepSeek 杀入多模态,识图功能正式上线!
人工智能·后端·程序员
米小虾3 小时前
告别单打独斗:2026年多Agent协作架构实战指南
人工智能·agent
IT_陈寒4 小时前
SpringBoot这个自动配置坑我跳了三次
前端·人工智能·后端
Larcher5 小时前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
牧艺5 小时前
从零到协同:构建类飞书在线文档系统的五个技术重难点
前端·人工智能
CodePlayer竟然被占用了6 小时前
Codex 用电脑的三种姿势:选错模式,你就白烧 Token
人工智能