# instant-distance

Showing:

0

108

12d ago

6

## Package

### Dependencies

0

MIT OR Apache-2.0

# Instant Distance: fast HNSW indexing

Instance Distance is a fast pure-Rust implementation of the Hierarchical Navigable Small Worlds paper by Malkov and Yashunin for finding approximate nearest neighbors. This implementation powers the InstantDomainSearch.com backend services used for word vector indexing.

## What it does

Instant Distance is an implementation of a fast approximate nearest neighbor search algorithm. The algorithm is used to find the closest point(s) to a given point in a set. As one example, it can be used to make simple translations.

## Using the library

### Rust

``````[dependencies]
instant-distance = "0.5.0"
``````

## Example

``````use instant_distance::{Builder, Search};

fn main() {
let points = vec![Point(255, 0, 0), Point(255, 0, 0), Point(255, 0, 0)];
let values = vec!["red", "green", "blue"];

let map = Builder::default().build(points, values);
let mut search = Search::default();

let cambridge_blue = Point(163, 193, 173);

let closest_point = map.search(&cambridge_blue, &mut search).next().unwrap();

println!("{:?}", closest_point.value);
}

#[derive(Clone, Copy, Debug)]
struct Point(isize, isize, isize);

impl instant_distance::Point for Point {
fn distance(&self, other: &Self) -> f32 {
// Euclidean distance metric
(((self.0 - other.0).pow(2) + (self.1 - other.1).pow(2) + (self.2 - other.2).pow(2)) as f32)
.sqrt()
}
}
``````

## Testing

Rust:

``````cargo t -p instant-distance --all-features
``````

Python:

``````make test-python
``````

## Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100