Voyager is a library for performing fast approximate nearest-neighbor searches on an in-memory collection of vectors.
Voyager features bindings to both Python and Java, with feature parity and index compatibility between both languages. It uses the HNSW algorithm, based on the open-source hnswlib
package, with numerous features added for convenience and speed. Voyager is used extensively in production at Spotify, and is queried hundreds of millions of times per day to power numerous user-facing features.
Think of Voyager like Sparkey, but for vector/embedding data; or like Annoy, but with much higher recall. It got its name because it searches through (embedding) space(s), much like the Voyager interstellar probes launched by NASA in 1977.
pip install voyager
Add the following artifact to your pom.xml
:
<dependency>
<groupId>com.spotify</groupId>
<artifactId>voyager</artifactId>
<version>2.0.4</version>
</dependency>
You can find the latest version on Voyager's Releases page.
Add the following artifact to your build.sbt
:
"com.spotify" % "voyager" % "2.0.4"
You can find the latest version on Voyager's Releases page.
OS | Language | Version | x86_64 (Intel) | arm64 (ARM) |
---|---|---|---|---|
Linux | Python | 3.7 | ✅ | ✅ |
Linux | Python | 3.8 | ✅ | ✅ |
Linux | Python | 3.9 | ✅ | ✅ |
Linux | Python | 3.10 | ✅ | ✅ |
Linux | Python | 3.11 | ✅ | ✅ |
Linux | Python | 3.12 | ✅ | ✅ |
Linux | Java | 8-16+ | ✅ | ✅ |
macOS | Python | 3.7 | ✅ | ✅ |
macOS | Python | 3.8 | ✅ | ✅ |
macOS | Python | 3.9 | ✅ | ✅ |
macOS | Python | 3.10 | ✅ | ✅ |
macOS | Python | 3.11 | ✅ | ✅ |
macOS | Python | 3.12 | ✅ | ✅ |
macOS | Java | 8-16+ | ✅ | ✅ |
Windows | Python | 3.7 | ✅ | ❌ |
Windows | Python | 3.8 | ✅ | ❌ |
Windows | Python | 3.9 | ✅ | ❌ |
Windows | Python | 3.10 | ✅ | ❌ |
Windows | Python | 3.11 | ✅ | ❌ |
Windows | Python | 3.12 | ✅ | ❌ |
Windows | Java | 8-16+ | ✅ | ❌ |
Contributions to voyager
are welcomed!
See CONTRIBUTING.md for details.
Voyager is copyright 2022-2024 Spotify AB.
Voyager is licensed under the Apache 2 License.