11 个不稳定版本
0.6.1 | 2023 年 6 月 26 日 |
---|---|
0.6.0 | 2022 年 8 月 1 日 |
0.5.1 | 2022 年 3 月 28 日 |
0.5.0 | 2021 年 5 月 20 日 |
0.1.3 | 2021 年 2 月 17 日 |
#275 在 算法 中
每月 636 次下载
用于 2 crates
37KB
826 行
即时距离:快速 HNSW 索引
即时距离是 Malkov 和 Yashunin 的分层可导航小世界论文的快速纯 Rust 实现,用于查找近似最近邻。此实现为InstantDomainSearch.com后端服务提供动力,用于单词向量索引。
它做什么
即时距离是一种快速近似最近邻搜索算法的实现。该算法用于在集合中查找与给定点最近的点。例如,它可以用于实现简单翻译。
使用库
Rust
[dependencies]
instant-distance = "0.5.0"
示例
use instant_distance::{Builder, Search};
fn main() {
let points = vec![Point(255, 0, 0), Point(0, 255, 0), Point(0, 0, 255)];
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()
}
}
测试
Rust
cargo t -p instant-distance --all-features
Python
make test-python
依赖关系
~2–10MB
~92K SLoC