Practical overview
When it fits
Use Zeppelin when building a search service where object storage should hold persistent vectors and indexes, and where vector retrieval, optional BM25 search, or both need to be exposed through an HTTP API.
Who it is for
- Developers building applications that need a self-hosted vector retrieval backend.
- Teams that want to combine vector search with BM25 full-text retrieval.
- Operators designing search infrastructure around S3-compatible object storage.
Documented uses
- Store vectors and search indexes in object storage and retrieve nearest vectors through an HTTP API.
- Add BM25 full-text search over configured document attributes.
- Combine text and vector retrieval in a search backend.
- Run search nodes without keeping the persistent index as node-local state.
Requirements & limits
The project is available as a public GitHub repository under the Apache-2.0 license. The documented local setup uses Docker Compose and MinIO.
- Persistent vectors, indexes, WAL and manifests are stored in object storage; nodes are described as stateless.
- Dense queries use a quantized coarse scan followed by exact reranking; the production default is 2-bit Extended-RaBitQ.
- BM25 is opt-in and supports configurable tokenization, stemming and multi-field ranking expressions.
- The README reports loopback-MinIO measurements, not cloud-S3 latency results.
- GCS and Azure Blob backends have emulator-backed gates; the README says real-service testing and per-substrate performance are not established.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Start Zeppelin locally with MinIO and query vectors
Launch the documented local development stack, create a namespace, upsert vectors and retrieve nearest results.
Before you start
- Docker Compose
- The Zeppelin repository, including its Compose configuration
- The bundled development configuration, which starts in open, unauthenticated security mode for local development only
Steps
From the repository, run the command below to start Zeppelin on port 8080 and MinIO on port 9000 with a pre-created
zeppelinbucket.docker compose upCreate a namespace through the HTTP API, specifying vector dimensions; include a
full_text_searchconfiguration block if BM25 search over an attribute is wanted.Upsert vectors and their attributes into the namespace using the HTTP API.
Submit a query vector and
top_kvalue to the namespace query route.
Expected outcome
A local Zeppelin service backed by MinIO, with a namespace containing vectors and an HTTP query returning ranked results.
Guide limitations
- The bundled
open_unsafesecurity mode has no authentication and is for local development only; configure enforced security before deploying elsewhere. - The README's short examples use four-dimensional vectors; real embeddings require their corresponding dimensions.
- The project is pre-1.0 and does not guarantee on-disk format stability between pre-1.0 versions.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 15 October 2026
- Original website title
- zepdb/zeppelin · Official homepage title · retained in its source language

