Voyager
Spotify library for in-memory HNSW vector search with matching Python and Java bindings.
About
Spotify built Voyager to run nearest-neighbor lookups over embedding vectors held in memory, and the company relies on it behind many user-facing features at very high query volume. Under the hood it implements HNSW graphs, extending the hnswlib codebase, and gives Python and Java the same feature set (Scala projects can use the Java artifact), so an index saved from one language loads unchanged in the other. Indexes support Euclidean, inner product and cosine distance, tunable graph parameters such as M and ef_construction, multithreaded batch inserts, deletion by marking IDs, and reduced-precision storage in 8-bit fixed point or E4M3 floating point to cut memory use. Install from PyPI or add the com.spotify artifact to a Maven or sbt build; prebuilt wheels cover Python 3.9 to 3.13 on Linux, macOS and Windows, with ARM builds on Linux and macOS. No GPU or server process is involved, which makes it a library to embed inside an application rather than a database to operate. Apache-2.0 licensed for commercial use. A good pick for teams wanting better recall than Spotify's older Annoy without running a vector service.
Should you use Voyager?
Pick it when
Pick Voyager when you need in-memory HNSW search from both Python and Java, for example building an index in a Python job and serving it from a JVM service, since both bindings read the same on-disk index format.
Look elsewhere when
Skip it if your stack is Rust, Go, Swift, or JavaScript, or the index should stay memory-mapped instead of loaded into RAM: USearch covers more languages and disk-backed serving, and Annoy shares one mapped file across processes.
Alternatives to Voyager
- HNSWlib
The underlying HNSW library with C++ headers and community Java and R bindings; more barebones, without Voyager's added speed and convenience features.
- Annoy
Spotify's older library with read-only memory-mapped indexes shared across processes; lower memory per worker, but no incremental updates.
- USearch
Single-header HNSW with about ten language bindings, memory-mapped serving from disk, and i8 or binary precision; broader reach than Python plus Java.
- FAISS
Adds quantized and GPU indexes for data too large to hold as full vectors in memory; more complex than Voyager's single HNSW index type.
Reviews (0)
Leave a Review
No reviews yet. Be the first to review!
Details
- Category
- Vector Databases & Embeddings
- Price
- Free
- Platform
- Local/Desktop
- Difficulty
- Easy (2/5)
- License
- Apache-2.0
- Added
- Apr 3, 2026