1. 项目概览
| 项目 | 信息 |
|---|---|
| GitHub | alibaba/zvec |
| 官网文档 | zvec.org |
| 开源协议 | Apache License 2.0 |
| 主要语言 | C++ |
| 当前最新 Release | v0.5.1,发布于 2026-06-24 |
| GitHub 热度 | 约 12.5k stars、748 forks,统计时间:2026-06-27 |
| 官方定位 | Lightweight, lightning-fast, in-process vector database |
| 官方 SDK | Python、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 等索引。
- 支持
COSINE、L2、IP等相似度度量。
适合售前表述:
客户如果已经有 embedding 模型,Zvec 可以作为轻量向量检索层,把向量召回能力快速集成到现有应用里。
2.2 全文检索 FTS
从 v0.5.0 开始,Zvec 支持原生全文检索。它可以对字符串字段建立全文索引,通过 BM25 相关性排序返回结果。
能力点:
- 支持自然语言查询。
- 支持精确短语匹配。
- 支持布尔表达式,例如必须包含、排除某个词。
- 支持中文 Jieba 分词,适合中文知识库、文章、商品标题等。
- 可做纯全文检索 Collection,不一定非要有向量字段。
售前价值:
很多客户的搜索不是纯语义,也不是纯关键词,而是二者都要。Zvec 现在可以在一个本地库里同时覆盖关键词检索和向量检索,降低外部搜索引擎依赖。
2.3 混合检索
Zvec 支持把向量检索、全文检索、标量过滤组合起来使用。常见形态包括:
- 向量 + 结构化过滤:例如“语义相似的文档,但只要 2024 年之后发布的”。
- 稠密向量 + 稀疏向量:结合语义召回和关键词权重。
- 多路查询 + reranker:使用
WeightedReRanker或RrfReRanker融合多个向量字段结果。 - 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 | 可增删字段和向量 | 业务迭代成本低 |
| 多语言 SDK | Python、Node.js、Go、Rust、Dart/Flutter | 更容易嵌入现有技术栈 |
| Apache 2.0 | 商业友好协议 | 便于企业二次开发和集成 |
| Zvec Studio | 可视化浏览和调试 | 便于 Demo 和问题定位 |
6. 索引类型怎么选
| 索引 | 适合场景 | 优点 | 注意点 |
|---|---|---|---|
| Flat | 小规模、原型、准确率基准 | 100% Recall,零配置 | 数据量大时线性扫描,慢 |
| HNSW | 通用生产在线检索 | 低延迟、高 Recall,成熟 | 内存占用较高 |
| HNSW-RaBitQ | x86_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 路线
- 准备 1000 到 10000 条中文文档片段。
- 用 embedding 模型生成 768 或 1024 维向量。
- 建一个 Collection:
content做 FTS,embedding做 HNSW,source/category/year做标量字段。 - 演示三种查询:
- 纯语义问答召回。
- 关键词全文检索。
- 向量 + 权限/时间/分类过滤。
- 展示 Zvec Studio 或打印结果,说明本地文件目录即数据库。
- 做小规模压测,展示延迟、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。这让它特别适合下面两类销售机会:
- 低门槛 AI 应用落地:客户只想做一个 RAG、Agent 记忆或本地知识库,不想先搭一套数据库服务。
- 产品内嵌能力:我们的产品或客户产品需要内置搜索能力,要求安装简单、离线可用、成本低。
售前讲法上,不建议把它直接包装成 Milvus/Elasticsearch 的全面替代品。更好的定位是:
当客户需要“轻量、本地、嵌入式、低运维”的向量检索能力时,Zvec 是一个很值得评估的开源选项;当客户需要“大规模分布式数据库平台”时,应结合其他服务化方案。