跳转到主要内容

快速最小化实现HNSW地图,用于近似最近邻搜索

项目描述

Cover logo

Instant Distance: 快速HNSW索引

Build status License: MIT License: Apache 2.0

Instance Distance是Malkov和Yashunin撰写的《层次可导航小世界》(Hierarchical Navigable Small Worlds)论文的快速纯Rust实现,用于寻找近似最近邻。此实现为Instant Domain Search后端服务提供动力,用于单词向量索引。

功能

Instant Distance是快速近似最近邻搜索算法的实现。该算法用于在集合中找到与给定点最接近的点。例如,它可以用于制作简单翻译

使用库

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

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

此版本没有可用的源分布文件。请参阅生成分布存档的教程。

构建分布

instant_distance-0.3.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (418.6 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (419.8 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp312-none-win_amd64.whl (248.8 kB 查看哈希值)

上传时间: CPython 3.12 Windows x86-64

instant_distance-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.9 kB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp312-cp312-macosx_11_0_arm64.whl (359.2 kB 查看哈希值)

上传时间: CPython 3.12 macOS 11.0+ ARM64

instant_distance-0.3.6-cp312-cp312-macosx_10_12_x86_64.whl (365.3 kB 查看哈希值)

上传时间: CPython 3.12 macOS 10.12+ x86-64

instant_distance-0.3.6-cp311-none-win_amd64.whl (250.5 kB 查看哈希值)

上传时间: CPython 3.11 Windows x86-64

instant_distance-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.2 kB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp311-cp311-macosx_11_0_arm64.whl (359.2 kB 查看哈希值)

上传时间: CPython 3.11 macOS 11.0+ ARM64

instant_distance-0.3.6-cp311-cp311-macosx_10_12_x86_64.whl (365.7 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.12+ x86-64

instant_distance-0.3.6-cp310-none-win_amd64.whl (250.4 kB 查看哈希值)

上传时间: CPython 3.10 Windows x86-64

instant_distance-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.2 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp310-cp310-macosx_11_0_arm64.whl (359.2 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

instant_distance-0.3.6-cp310-cp310-macosx_10_12_x86_64.whl (365.6 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.12+ x86-64

instant_distance-0.3.6-cp39-none-win_amd64.whl (251.2 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

instant_distance-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.8 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp39-cp39-macosx_11_0_arm64.whl (359.2 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

instant_distance-0.3.6-cp39-cp39-macosx_10_12_x86_64.whl (365.7 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.12+ x86-64

instant_distance-0.3.6-cp38-none-win_amd64.whl (250.8 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

instant_distance-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.7 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

instant_distance-0.3.6-cp37-none-win_amd64.whl (250.5 kB 查看哈希值)

上传于 CPython 3.7 Windows x86-64

instant_distance-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.2 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

由以下支持