← 返回项目列表
Zvec 是阿里巴巴开源的进程内向量数据库,定位是轻量、低延迟、零服务化部署的本地向量检索引擎。它适合嵌入到应用、Agent、RAG、边缘端、桌面端或私有化系统中,用来做向量检索、全文检索、混合检索和结构化过滤。对售前来说,它的关键词是:无独立服务、上手快、本地化、低延迟、支持混合检索、多语言 SDK、Apache 2.0

1. 项目概览

项目信息
GitHubalibaba/zvec
官网文档zvec.org
开源协议Apache License 2.0
主要语言C++
当前最新 Releasev0.5.1,发布于 2026-06-24
GitHub 热度约 12.5k stars、748 forks,统计时间:2026-06-27
官方定位Lightweight, lightning-fast, in-process vector database
官方 SDKPython、Node.js、Go、Rust、Dart/Flutter
支持平台Linux x86_64/ARM64、macOS ARM64、Windows x86_64

一句话解释:

Zvec 就像一个可以直接嵌进业务程序里的“小型高性能向量数据库内核”,不需要单独部署 Milvus、Elasticsearch、Qdrant 这类服务,也可以完成本地向量检索、文本检索和混合搜索。

2. 它主要能做什么

2.1 向量相似度检索

Zvec 可以把文档、图片、商品、知识片段、用户行为等对象的 embedding 存起来,然后根据查询向量返回最相似的 Top-K 结果。

典型能力:

  • 支持稠密向量:如大模型 embedding、图像 embedding。
  • 支持稀疏向量:如 SPLADE、BM25 风格的稀疏语义表示。
  • 支持单向量查询、多向量查询。
  • 支持 HNSW、HNSW-RaBitQ、DiskANN、IVF、Flat 等索引。
  • 支持 COSINEL2IP 等相似度度量。

适合售前表述:

客户如果已经有 embedding 模型,Zvec 可以作为轻量向量检索层,把向量召回能力快速集成到现有应用里。

2.2 全文检索 FTS

v0.5.0 开始,Zvec 支持原生全文检索。它可以对字符串字段建立全文索引,通过 BM25 相关性排序返回结果。

能力点:

  • 支持自然语言查询。
  • 支持精确短语匹配。
  • 支持布尔表达式,例如必须包含、排除某个词。
  • 支持中文 Jieba 分词,适合中文知识库、文章、商品标题等。
  • 可做纯全文检索 Collection,不一定非要有向量字段。

售前价值:

很多客户的搜索不是纯语义,也不是纯关键词,而是二者都要。Zvec 现在可以在一个本地库里同时覆盖关键词检索和向量检索,降低外部搜索引擎依赖。

2.3 混合检索

Zvec 支持把向量检索、全文检索、标量过滤组合起来使用。常见形态包括:

  • 向量 + 结构化过滤:例如“语义相似的文档,但只要 2024 年之后发布的”。
  • 稠密向量 + 稀疏向量:结合语义召回和关键词权重。
  • 多路查询 + reranker:使用 WeightedReRankerRrfReRanker 融合多个向量字段结果。
  • FTS + 应用层重排:对于关键词和语义同时要求很强的场景,可以分别召回后做融合或重排。

需要注意:

官方文档说明,单个 Query 中全文检索和向量检索路线互斥;如果要融合关键词和向量,通常使用多条查询路线、重排序,或在应用层合并。

2.4 本地持久化和进程内运行

Zvec 是进程内数据库,不需要单独启动 server。

特点:

  • Collection 持久化在磁盘目录中。
  • 使用 WAL 预写日志保障持久性。
  • 多进程可同时读同一个 Collection。
  • 写入是单进程独占模式。
  • Collection 目录可迁移,只要路径正确即可重新打开。

售前价值:

适合私有化、离线、本地部署、边缘设备、桌面工具、Notebook 或 CLI 工具,不需要客户额外维护一个数据库服务集群。

3. 适用场景

3.1 RAG 知识库检索

这是最直观的场景。把知识库文档切片后生成 embedding,存入 Zvec;用户提问时向量召回相关片段,再交给大模型生成答案。

适配客户:

  • 企业内部知识库问答。
  • 售后知识库、产品手册、制度文档检索。
  • 私有化部署的智能客服或智能助手。
  • 对部署简单、数据本地化有要求的客户。

为什么适合:

  • 本地运行,不需要额外服务。
  • 支持结构化过滤,如部门、时间、文档类型、权限标签。
  • 支持中文全文检索和向量检索的组合。

3.2 Agent 长期记忆和本地记忆库

Agent 需要存储用户偏好、历史任务、工具执行结果、文档片段等记忆。Zvec 可以作为本地记忆索引。

适配客户:

  • AI Agent 平台。
  • 个人知识管理工具。
  • 企业 Copilot。
  • 本地桌面 AI 助手。

为什么适合:

  • 进程内运行,调用链短,响应快。
  • 不需要单独数据库服务,易于随应用分发。
  • 支持 Node.js、Python、Go、Rust 等多语言接入。

3.3 商品、内容、图片的相似推荐

将商品、图片、短视频、文章等对象向量化后,通过相似度检索实现“相似商品”“相似图片”“相关推荐”。

适配客户:

  • 电商搜索推荐。
  • 内容平台相关推荐。
  • 图像素材库、设计资产库。
  • 行业知识内容推荐。

为什么适合:

  • HNSW 适合低延迟在线召回。
  • HNSW-RaBitQ 可以在 x86_64 环境下降低内存占用。
  • DiskANN 可用于超大规模、内存预算有限但能接受更高延迟的场景。

3.4 关键词 + 语义的企业搜索

很多企业搜索需要同时满足:

  • 用户输入关键词时要精确匹配。
  • 用户用自然语言描述时要语义召回。
  • 还要按业务字段过滤,例如时间、来源、权限、分类、状态。

Zvec 的 FTS、向量检索和过滤能力可以覆盖这一类轻量搜索场景。

适配客户:

  • 企业文档搜索。
  • 规章制度检索。
  • 合同、招投标、项目资料搜索。
  • 本地知识库搜索工具。

3.5 边缘端、桌面端、移动端 AI 应用

Zvec 支持 Flutter/Dart,且本身是进程内模式,适合嵌入端侧应用。

适配客户:

  • 离线 AI 助手。
  • 移动端本地搜索。
  • 工业边缘设备数据检索。
  • 桌面端知识库软件。

售前亮点:

如果客户不想把数据上传云端,或者网络不稳定,Zvec 这种本地内嵌式数据库更容易讲清楚价值。

4. 不太适合的场景

4.1 需要完整分布式数据库集群能力

Zvec 的定位不是替代 Milvus、Elastic、Qdrant 这类服务化或分布式数据库。它更像嵌入式数据库内核。

如果客户要求:

  • 多节点分布式写入。
  • 内建高可用。
  • 水平扩容。
  • 多租户服务治理。
  • 运维控制台和集群监控。

那 Zvec 可能不是第一选择,除非上层产品自己补齐这些能力。

4.2 高并发多写入场景

官方说明支持多进程并发读,但写入是单进程独占模式。

因此,如果客户需要多个服务实例同时写同一个向量库,需要谨慎评估架构,通常要在上层做写入协调,或选择服务化向量数据库。

4.3 跨 Collection 查询

Zvec 不支持跨 Collection 的 Join、Union 或多 Collection 检索。业务建模时要提前设计 Collection 边界。

5. 核心能力清单

能力说明售前价值
进程内运行不需要独立 server降低部署和运维复杂度
向量检索支持稠密/稀疏向量支撑 RAG、推荐、相似搜索
多索引类型Flat、HNSW、HNSW-RaBitQ、DiskANN、IVF可根据规模、延迟、内存做取舍
FTS 全文检索BM25、短语、布尔、Jieba中文搜索和关键词召回更友好
混合检索向量 + 过滤 + 多向量重排更贴近企业搜索和知识库场景
WAL 持久化崩溃或断电后数据不易丢生产化可信度更高
动态 Schema可增删字段和向量业务迭代成本低
多语言 SDKPython、Node.js、Go、Rust、Dart/Flutter更容易嵌入现有技术栈
Apache 2.0商业友好协议便于企业二次开发和集成
Zvec Studio可视化浏览和调试便于 Demo 和问题定位

6. 索引类型怎么选

索引适合场景优点注意点
Flat小规模、原型、准确率基准100% Recall,零配置数据量大时线性扫描,慢
HNSW通用生产在线检索低延迟、高 Recall,成熟内存占用较高
HNSW-RaBitQx86_64 高维大规模向量近似 HNSW 的质量,更低内存仅 x86_64,需 AVX2/AVX-512,不支持 ARM
DiskANN超大规模、内存受限索引主体在磁盘,显著降低内存Linux + libaio,QPS/延迟不如内存索引
IVF数据有聚类结构、需要调优内存效率较好,适合大规模参数敏感,构建聚类有成本

售前建议:

  • Demo 和 PoC 初期:先用 Flat 或 HNSW,容易解释和调试。
  • 在线 RAG/知识库:优先 HNSW。
  • 大数据量但内存敏感:评估 HNSW-RaBitQ 或 DiskANN。
  • 十亿级、可接受更高延迟:评估 DiskANN。
  • 对结果正确性敏感:先用 Flat 建立准确率基准,再换 ANN 索引对比 Recall。

7. 怎么用

7.1 安装

Python:

pip install zvec

Node.js:

npm install @zvec/zvec

Flutter/Dart:

flutter pub add zvec

Go 和 Rust 也有官方 SDK,适合系统级或高性能服务集成。

7.2 创建 Collection 并写入向量

import zvec

schema = zvec.CollectionSchema(
    name="knowledge_base",
    fields=[
        zvec.FieldSchema(
            name="publish_year",
            data_type=zvec.DataType.INT32,
            index_param=zvec.InvertIndexParam(enable_range_optimization=True),
        ),
    ],
    vectors=[
        zvec.VectorSchema(
            name="embedding",
            data_type=zvec.DataType.VECTOR_FP32,
            dimension=768,
            index_param=zvec.HnswIndexParam(metric_type=zvec.MetricType.COSINE),
        ),
    ],
)

collection = zvec.create_and_open(
    path="./knowledge_base_zvec",
    schema=schema,
)

collection.insert([
    zvec.Doc(
        id="doc_1",
        vectors={"embedding": [0.1] * 768},
        fields={"publish_year": 2025},
    )
])

collection.optimize()

7.3 向量检索

result = collection.query(
    queries=zvec.Query(
        field_name="embedding",
        vector=[0.3] * 768,
    ),
    topk=10,
)

7.4 向量 + 条件过滤

result = collection.query(
    queries=zvec.Query(
        field_name="embedding",
        vector=[0.3] * 768,
    ),
    filter="publish_year > 2023",
    topk=10,
)

7.5 创建全文检索字段

import zvec

schema = zvec.CollectionSchema(
    name="article_collection",
    fields=[
        zvec.FieldSchema(
            name="category",
            data_type=zvec.DataType.STRING,
            nullable=False,
        ),
        zvec.FieldSchema(
            name="content",
            data_type=zvec.DataType.STRING,
            nullable=False,
            index_param=zvec.FtsIndexParam(
                tokenizer_name="jieba",
            ),
        ),
    ],
)

7.6 全文检索

from zvec.model.param.query import Fts, Query

result = collection.query(
    queries=Query(
        field_name="content",
        fts=Fts(match_string="机器学习"),
    ),
    topk=5,
)

高级查询:

result = collection.query(
    queries=Query(
        field_name="content",
        fts=Fts(query_string='+学习 -神经网络 "向量搜索"'),
    ),
    topk=5,
)

7.7 多向量检索和重排

result = collection.query(
    topk=5,
    queries=[
        zvec.Query(field_name="dense_embedding", vector=[0.1] * 768),
        zvec.Query(field_name="sparse_embedding", vector={1: 0.1, 37: 0.43}),
    ],
    reranker=zvec.WeightedReRanker(
        topn=3,
        metric=zvec.MetricType.IP,
        weights={
            "dense_embedding": 1.2,
            "sparse_embedding": 1.0,
        },
    ),
)

8. 售前可以怎么讲

8.1 电梯话术

Zvec 是阿里开源的嵌入式向量数据库,适合把向量检索和全文检索能力直接嵌入现有应用。它不需要单独部署服务,支持本地持久化、多语言 SDK、HNSW/DiskANN 等索引和中文全文检索,特别适合 RAG、Agent 记忆、企业知识库、端侧 AI 和轻量私有化场景。

8.2 客户价值点

  • 部署简单:一个 SDK 就能跑,不需要运维数据库服务。
  • 私有安全:数据本地存储,适合客户对数据出域敏感的场景。
  • 成本可控:无需额外服务器或集群,适合轻量业务和边缘端。
  • 检索能力完整:向量、全文、结构化过滤、多向量融合都有。
  • 中文友好:FTS 支持 Jieba 分词。
  • 技术开放:Apache 2.0,方便集成、二开和产品化。

8.3 和传统向量数据库的差异

维度Zvec服务化/分布式向量数据库
部署形态进程内 SDK独立服务或集群
运维复杂度中到高
横向扩展依赖上层应用设计通常内建
高可用依赖上层系统通常有配套方案
本地/端侧很适合通常较重
适合场景嵌入式、本地化、轻量私有化大规模在线服务、多租户平台

8.4 常见客户问题

Q:它能替代 Milvus 或 Elasticsearch 吗?

A:不是完全替代。Zvec 更像嵌入式向量检索内核,适合本地化、轻量、应用内集成。如果客户需要分布式集群、高可用、多租户治理,仍要评估服务化数据库。

Q:支持中文搜索吗?

A:支持。FTS 全文检索可使用 Jieba 分词器,适合中文和中英混合文本。

Q:数据会不会丢?

A:Zvec 支持 WAL 预写日志,官方文档说明可保障进程崩溃或断电情况下的数据持久性。但关键生产场景仍建议配合备份和文件系统级容灾。

Q:支持多进程吗?

A:支持多进程同时读同一个 Collection;写入是单进程独占模式。

Q:能做混合检索吗?

A:可以。支持向量检索、全文检索、标量过滤、多向量重排等组合方式。需要注意单个查询路线中 FTS 和 vector 互斥,复杂融合通常通过多路召回和 reranker 或应用层合并实现。

Q:适合多少规模?

A:官方强调可支撑大规模向量检索,并有 Cohere 1M/10M 基准测试。具体能否满足客户 SLA 要看维度、索引、硬件、Recall、并发和过滤比例。售前 PoC 建议用客户真实数据压测。

9. PoC 建议

9.1 PoC 目标

建议不要只证明“能跑”,而要证明:

  • 数据能导入。
  • 检索结果业务可接受。
  • 延迟和 QPS 达到目标。
  • 内存和磁盘成本可接受。
  • 与现有应用集成简单。

9.2 PoC 数据

优先使用客户真实数据:

  • 文档知识库:1 万、10 万、100 万 chunk 分层测试。
  • 商品库:商品标题、类目、属性、图片向量。
  • 客服知识库:FAQ、工单、对话摘要。
  • 权限��段:部门、角色、密级、租户 ID。

9.3 PoC 指标

指标建议观察
Recall/命中质量Top-5/Top-10 是否有业务正确答案
P95/P99 延迟是否满足在线问答或搜索 SLA
QPS并发场景下吞吐能力
构建时间全量导入和建索引耗时
内存占用HNSW vs RaBitQ vs DiskANN
磁盘占用Collection 目录大小
写入模式单进程写是否满足业务
过滤性能权限过滤、时间过滤、分类过滤

9.4 Demo 路线

  1. 准备 1000 到 10000 条中文文档片段。
  2. 用 embedding 模型生成 768 或 1024 维向量。
  3. 建一个 Collection:content 做 FTS,embedding 做 HNSW,source/category/year 做标量字段。
  4. 演示三种查询:
  • 纯语义问答召回。
  • 关键词全文检索。
  • 向量 + 权限/时间/分类过滤。
  1. 展示 Zvec Studio 或打印结果,说明本地文件目录即数据库。
  2. 做小规模压测,展示延迟、QPS、磁盘和内存。

10. 风险和注意事项

  • 项目较新:仓库创建于 2025-12,发展速度快,版本迭代活跃;生产使用要关注 API 稳定性和 release notes。
  • DiskANN 受平台限制:目前仅 Linux,且依赖 libaio
  • HNSW-RaBitQ 受硬件限制:仅 x86_64,需 AVX2 或 AVX-512,不支持 ARM。
  • 多写入需要架构设计:写入单进程独占,不适合无协调的多实例并发写。
  • 不支持跨 Collection 查询:数据建模要提前规划。
  • Benchmark 需要客户真实复测:官方结果基于特定硬件和数据集,不能直接承诺到客户生产环境。

11. 适合售前推进的客户画像

优先推荐:

  • 想快速做 RAG/知识库 PoC,但不想部署复杂向量数据库的客户。
  • 私有化部署、数据不能出域的客户。
  • 需要把检索能力嵌入桌面端、边缘端、移动端或本地工具的客户。
  • 已有 Python/Node.js 应用,希望快速加向量检索能力的团队。
  • 对中文全文检索 + 语义检索同时有需求的企业搜索场景。

谨慎推荐:

  • 要求多节点分布式集群、内建 HA、多租户治理的大型平台项目。
  • 高频多实例写入的实时数据流场景。
  • 对搜索引擎生态插件、复杂聚合分析、运维控制台要求很高的客户。

12. 我的售前判断

Zvec 的最大亮点不是“又一个向量数据库”,而是它的嵌入式形态:把向量数据库能力做成可直接集成的本地 SDK。这让它特别适合下面两类销售机会:

  1. 低门槛 AI 应用落地:客户只想做一个 RAG、Agent 记忆或本地知识库,不想先搭一套数据库服务。
  2. 产品内嵌能力:我们的产品或客户产品需要内置搜索能力,要求安装简单、离线可用、成本低。

售前讲法上,不建议把它直接包装成 Milvus/Elasticsearch 的全面替代品。更好的定位是:

当客户需要“轻量、本地、嵌入式、低运维”的向量检索能力时,Zvec 是一个很值得评估的开源选项;当客户需要“大规模分布式数据库平台”时,应结合其他服务化方案。