Zeppelin Embed is the fastest and most accurate in-process search engine built for macOS and Apple silicon.
Vector graph-search p95 latency is plotted against nDCG@10. Lower latency and higher nDCG@10 are better. Measured on an Apple M3 Max using warm indexes and k=10. The SQLite TREC-COVID result (82.36 ms p95) is omitted to keep the remaining results legible on a linear scale.
BEIR is a benchmark suite for evaluating information retrieval across different domains.
- SciFact retrieves scientific evidence for factual claims.
- TREC-COVID retrieves biomedical literature for COVID-19 research questions.
- Natural Questions retrieves Wikipedia evidence for real search-engine questions.
Compared with: Chroma, hnswlib, LanceDB, sqlite-vec, and USearch.
- Vector, lexical, and hybrid retrieval. Use one store and one document ID space for vector similarity, BM25, or fused results.
- Local and persistent. The engine runs inside your process, recovers from its write-ahead log, and publishes immutable searchable generations.
- Fast native execution. Runtime-dispatched SIMD kernels, quantized graph traversal, exact rescoring, memory-mapped segments, and bounded worker pools.
- Production controls. Typed filters, idempotent document revisions, cancellation, deadlines, retention, physical purge, memory budgets, health, and query diagnostics.
- Bring your own vectors. Use embeddings from any model that produces compatible document and query vectors.
- One native engine, several languages. Rust, a versioned C ABI, Python, Swift, Node.js, and TypeScript call the same storage and retrieval implementation.
| Mode | Input | Result |
|---|---|---|
| Vector | A precomputed float32 query vector |
Approximate graph retrieval by default, with exact and scan tiers available |
| Lexical | Raw query text or a structured lexical query | BM25 ranking with term, phrase, prefix, and phonetic operators |
| Hybrid | A query vector plus text | Vector and lexical candidates fused over one pinned store generation |
Vector and hybrid graph queries use quantized traversal to select candidates and full-precision vectors to score the retained rows. Exact search remains available when exhaustive membership is required. Every result reports the generation it observed, and diagnostics report the path and work that actually ran.
Install the Python package and run the five-vector example:
python -m pip install zeppelin-embed
python bindings/python/examples/five_vectors_search.pyThe example supplies its own document and query vectors. Zeppelin Embed v0.3.0 does not bundle or download an embedding model.
The directory is the database. Reopen the same path to recover its committed state and continue ingesting or searching.
For Rust, add the native core to an application:
cargo add zeppelin-embed| API | Distribution | Example |
|---|---|---|
| Python | PyPI wheel with the native library included | five_vectors_search.py |
| Rust | zeppelin-embed on crates.io |
five_vectors_search.rs |
| Swift | Swift Package Manager with a downloadable XCFramework | five_vectors_search.swift |
| C/C++ | GitHub release archive with the header and .a/.dylib libraries |
five_vectors_search.c |
| Node.js / TypeScript | @zepdb/zeppelin-embed with the native addon included |
javascript.cjs / typescript.ts |
The C ABI uses size-versioned requests and responses, typed error codes, and matching free functions for every callee-owned result. Python wheels include the native library. Swift consumes the same ABI through an actor-based interface. Only the Rust core is published as a crate; the other packages embed or link the C ABI.
The macOS SDK archive is language-neutral. Any runtime with C-compatible foreign functions can use its header and static or dynamic library.
From a source checkout, run each example with:
# Python
cargo build --release -p zeppelin-embed-ffi
PYTHONPATH=bindings/python ZEPPELIN_EMBED_LIBRARY=target/release/libzeppelin_embed_ffi.dylib \
python bindings/python/examples/five_vectors_search.py
# Rust
cargo run --release -p zeppelin-embed --example five_vectors_search
# Node.js
cd bindings/node
npm ci
npm run build:native
node examples/javascript.cjs
cd ../..
# Swift
cargo build --release -p zeppelin-embed-ffi
ZE_USE_LOCAL_FFI=1 swift run --package-path bindings/swift/Examples/FiveVectorsSearch
# C
cargo build --release -p zeppelin-embed-ffi
cc -std=c11 crates/zeppelin-embed-ffi/examples/five_vectors_search.c \
-I crates/zeppelin-embed-ffi/include -L target/release -lzeppelin_embed_ffi \
-o /tmp/zeppelin-c-example
DYLD_LIBRARY_PATH=target/release /tmp/zeppelin-c-example /tmp/zeppelin-c-indexZeppelin Embed uses stable Rust 1.93 or newer.
git clone https://github.com/zepdb/zeppelin-embed.git
cd zeppelin-embed
cargo test --workspaceBuild the core C ABI library:
cargo build --release -p zeppelin-embed-ffiBuild a Python wheel:
python -m build --wheel bindings/pythonZeppelin Embed is free software licensed under the GNU General Public License v3.0.
