Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

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`:
```xml

com.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)).