Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spotify/voyager
🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.
https://github.com/spotify/voyager
hnsw hnswlib java machine-learning nearest-neighbor-search python
Last synced: 2 days ago
JSON representation
🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.
- Host: GitHub
- URL: https://github.com/spotify/voyager
- Owner: spotify
- License: apache-2.0
- Created: 2023-04-13T13:07:27.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-19T07:44:26.000Z (10 days ago)
- Last Synced: 2024-12-19T23:00:17.859Z (9 days ago)
- Topics: hnsw, hnswlib, java, machine-learning, nearest-neighbor-search, python
- Language: C++
- Homepage: https://spotify.github.io/voyager/
- Size: 12 MB
- Stars: 1,347
- Watchers: 13
- Forks: 58
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-vector-database - Voyager
README
![The word Voyager_in blue, with a multicoloured graphic illustrating an orbit to its left.](https://github.com/spotify/voyager/assets/213293/c99cd0e8-cd38-486f-bb61-15f74028ba52)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/spotify/voyager/blob/master/LICENSE)
[![Documentation](https://img.shields.io/badge/Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager)
[![Supported Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Windows%20%7C%20Linux-green)](https://pypi.org/project/voyager)
[![Apple Silicon support for macOS and Linux (Docker)](https://img.shields.io/badge/Apple%20Silicon-macOS%20and%20Linux-brightgreen)](https://pypi.org/project/voyager)
[![Test Badge](https://github.com/spotify/voyager/actions/workflows/all.yml/badge.svg)](https://github.com/spotify/voyager/actions/workflows/all.yml)**_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](https://github.com/nmslib/hnswlib), 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](https://github.com/spotify/sparkey), but for vector/embedding data; or like [Annoy](https://github.com/spotify/annoy), but with [much higher recall](http://ann-benchmarks.com/). It got its name because it searches through (embedding) space(s), much like [the Voyager interstellar probes](https://en.wikipedia.org/wiki/Voyager_program) launched by NASA in 1977.
[![Python Documentation](https://img.shields.io/badge/Python%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/python)
[![Java Documentation](https://img.shields.io/badge/Java%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/java)### Installation
#### Python
```shell
pip install voyager
```#### Java
Add the following artifact to your `pom.xml`:
```xmlcom.spotify
voyager
2.1.0```
You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).#### Scala
Add the following artifact to your `build.sbt`:
```sbt
"com.spotify" % "voyager" % "2.1.0"
```
You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).### Compatibility
| 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+ | ✅ | ❌ |## Contributing
Contributions to `voyager` are welcomed!
See [CONTRIBUTING.md](https://github.com/spotify/voyager/blob/master/CONTRIBUTING.md) for details.### License
Voyager is copyright 2022-2024 Spotify AB.Voyager is licensed under the [Apache 2 License]([https://www.gnu.org/licenses/gpl-3.0.en.html](https://www.apache.org/licenses/LICENSE-2.0)).