TopGit
GitHub Repo Review

Zvec Vector Database: In-Process Embedded Search in C++

alibaba/zvec
ZTopGit review image for alibaba/zvec
Review by Topgit.dev for alibaba/zvec, with GitHub repository stats and README context.
Quick verdict

Reach for the Zvec vector database if you want embedded similarity search that lives inside your process — like SQLite for vectors — without standing up a Milvus or Qdrant server. Skip it if you need distributed, multi-node writes or a settled 1.0 API: it's at v0.5.0 and writes are single-process only, so multi-writer or cluster workloads aren't the target.

Stars
★ 16.0k
Forks
⑂ 1.0k
Contributors
👥 28
Language
C++
License
Apache-2.0
Topic
AI Tools
Updated
Sep 2026
Homepage
GitHub

A Vector Database That Lives Inside Your Process

The Zvec vector database is an open-source (Apache-2.0) in-process vector database written in C++ and maintained by Alibaba. It embeds as a library inside your app instead of a client-server setup. It supports dense and sparse vectors, multiple index types (HNSW, plus a DiskANN on-disk index added in v0.5.0), native full-text search, and hybrid retrieval in a single query. The README says it's used inside Alibaba Group.

SQLite for Relational Data, but What About Vectors?

Most vector databases — Milvus, Qdrant, Weaviate — run as a separate service you deploy, connect to over the network, and operate. For a notebook, a CLI tool, a desktop app, or an edge device, that's a lot of moving parts for what is really just a local index. You either take on server ops or bolt vector search onto Postgres. Zvec's answer is to run the database in-process, the way SQLite does for relational data: the index is a library call, not a network hop.

Chasing the sqlite-vec and LanceDB Playbook

It's an Alibaba-backed project that has crossed roughly 14.7k GitHub stars, and the v0.5.0 release (June 2026) added full-text search, hybrid retrieval, and a DiskANN on-disk index, plus official Go and Rust SDKs and a visual tool called Zvec Studio. The in-process, embed-anywhere angle — vector search without running a server — is the same pattern that made sqlite-vec and LanceDB popular, and Zvec is chasing it with a broad language-SDK lineup.

How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history

Hybrid Search, WAL Durability, and Five Language SDKs

  • In-process/embedded: runs as a library inside your app, with no separate database server to deploy or connect to
  • Dense and sparse vectors, multi-vector queries, and index types that scale from in-memory (HNSW) to on-disk (DiskANN, added in v0.5.0)
  • Native full-text search (FTS) over string fields, so keyword queries don't need a separate search engine
  • Hybrid retrieval that combines vector similarity, full-text, and scalar filters in a single MultiQuery
  • Write-ahead logging (WAL) for durability, so data persists through a process crash or power loss (per the README)
  • Concurrent access model: multiple processes can read a collection at once, but writes are single-process exclusive
  • SDKs for Python, Node.js, Go, Rust, and Dart/Flutter, plus prebuilt binaries for Linux, macOS (ARM64), and Windows

Local RAG, Edge Search, and Offline Retrieval

  • Adding local semantic search or RAG memory to an app without deploying a vector-database server
  • Embedding vector search inside a desktop, CLI, or notebook workflow where a network database is overkill
  • Running similarity search on an edge device or in an offline environment
  • Combining keyword full-text search and vector similarity in one query for more precise retrieval

Pip, npm, or pub add — No Server to Deploy

Zvec ships prebuilt SDKs, so the common path is a package install rather than a build. Python: `pip install zvec` (Python 3.10–3.14). Node.js: `npm install @zvec/zvec`. Dart/Flutter: `flutter pub add zvec`. Official Go and Rust bindings live in separate repos. Prebuilt binaries cover Linux (x86_64, ARM64), macOS (ARM64), and Windows (x86_64); building from source requires the project's C++ toolchain and its Building from Source guide.

Creating a Collection and Querying It

In Python you define a `CollectionSchema` with a vector field, call `zvec.create_and_open(path=..., schema=...)` to open a collection on local disk, `insert()` a list of `zvec.Doc` objects with their embeddings, then run `collection.query(zvec.Query(field_name=..., vector=[...]), topk=10)` to get the nearest matches back as scored results. There's no server to start — the collection is a directory on disk. Full API details are in the project's docs.

Why Embed Instead of Deploy

  • No server to run: the database is a library call, which cuts deployment and ops for local or embedded use
  • Broad SDK coverage — Python, Node.js, Go, Rust, Dart/Flutter — which is unusual for an embedded vector DB
  • Full-text plus vector plus scalar filters in one query, instead of stitching a search engine onto a vector store
  • WAL-backed durability and an on-disk DiskANN index for datasets larger than RAM (per the README)
  • Apache-2.0 licensed and backed by Alibaba, with active releases

Single-Writer and Still Pre-1.0

  • Single-writer by design: multiple processes can read a collection, but only one can write at a time — no multi-writer or clustered write path, so it's not a drop-in for a distributed vector service
  • Young and pre-1.0: the current release is v0.5.0 (June 2026), so the API and on-disk format can still change between versions
  • C++ core reached through language bindings — building from source needs a C++ toolchain, and issues can straddle the binding boundary
  • Performance and 'used inside Alibaba Group' claims come from the project's own README and benchmark docs; the repo metadata has no independent benchmark
  • Prebuilt binaries are limited to Linux, macOS ARM64, and Windows x86_64 — no Intel-mac binary is listed, so those users build from source
View on GitHubHomepage

Zvec vs sqlite-vec, LanceDB, and Chroma

sqlite-vec — a vector search extension for SQLite, the closest in-process/embedded analogueLanceDB — an embedded vector database built on the Lance columnar formatChroma — an open-source embedding database popular for local RAG prototypesFaiss — Meta's similarity-search library for raw vector indexing without a database layer

Who Should Embed Zvec

Developers who want vector search embedded directly in an app — a desktop tool, a CLI, a notebook, an edge device, or a single service — and would rather not run and operate a separate vector-database server. If you need distributed writes, multi-node scaling, or a locked-down 1.0 API, a server-based system like Milvus or Qdrant fits better; if you're already on Postgres, pgvector may be enough.

Zvec FAQ

What is the Zvec vector database?

Zvec is an open-source, in-process vector database from Alibaba, written in C++ and licensed Apache-2.0. It embeds as a library inside your application — no separate server — and supports dense and sparse vectors, full-text search, and hybrid queries.

Is Zvec free and open source?

Yes. Zvec is licensed under Apache-2.0 and developed in the open on GitHub under the alibaba organization.

How is Zvec different from Milvus or Qdrant?

Milvus and Qdrant run as separate server processes you deploy and connect to over the network. Zvec runs in-process as a library, closer to how sqlite-vec or LanceDB work, so there's no server to operate.

What languages does Zvec support?

The README lists official SDKs for Python (3.10–3.14), Node.js, Go, Rust, and Dart/Flutter, with prebuilt binaries for Linux, macOS ARM64, and Windows x86_64.

Can Zvec do keyword search as well as vector search?

Yes. Since v0.5.0 it has native full-text search over string fields and hybrid retrieval that combines full-text, vector similarity, and scalar filters in a single query.

Related repositories

Source & attribution

Based on the official alibaba/zvec GitHub repository, including its README and project metadata.

GitHub data · last synced Jul 11, 2026Reviewed by Henry
Back to TopGit

Is zvec worth your time?

ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of zvec.

GitHub