8 个版本 (5 个重大变更)

使用旧的 Rust 2015

0.6.2 2023年8月26日
0.6.1 2023年1月29日
0.6.0 2022年3月28日
0.5.0 2021年6月21日
0.1.0 2018年1月29日

#2011 in 数据库接口

Download history 628/week @ 2024-03-14 415/week @ 2024-03-21 537/week @ 2024-03-28 820/week @ 2024-04-04 871/week @ 2024-04-11 733/week @ 2024-04-18 805/week @ 2024-04-25 216/week @ 2024-05-02 572/week @ 2024-05-09 751/week @ 2024-05-16 431/week @ 2024-05-23 138/week @ 2024-05-30 132/week @ 2024-06-06 196/week @ 2024-06-13 149/week @ 2024-06-20 60/week @ 2024-06-27

每月下载量 557
用于 faiss

MIT/Apache

2.5MB
67K SLoC

C++ 38K SLoC // 0.1% comments Python 15K SLoC // 0.1% comments CUDA 9K SLoC // 0.1% comments Rust 5K SLoC // 0.0% comments BASH 623 SLoC // 0.1% comments C 177 SLoC // 0.1% comments Shell 110 SLoC // 0.3% comments Batch 28 SLoC // 0.3% comments

Faiss-rs

faiss at crates.io Continuous integration status Minimum Rust Version Stable dependency status

本项目为 Faiss 提供了 Rust 绑定,Faiss 是一个最先进的向量搜索和聚类库。

使用动态链接安装

默认情况下,这个 crate 会与您系统上安装的 Faiss 库动态链接,因此它不会为您自动构建 Faiss。要自行构建库

  1. 请按照这里的说明使用 CMake 构建 Faiss,并启用变量 FAISS_ENABLE_C_APIBUILD_SHARED_LIBS。crate 当前仅兼容版本 v1.7.2。考虑从 此分支 c_api_head 构建 Faiss,该分支将包含对 C 接口的最新支持的绑定。例如

    cmake -B build -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
    cmake --build build
    

    这将生成动态库 faiss_c ("c_api/libfaiss_c.so" 在 Linux 上),需要将其安装到系统可以找到的地方(在 Linux 上,尝试在 LD_LIBRARY_PATH 环境变量中某个位置,例如 "/usr/lib",或者尝试添加新的路径到这个变量。对于 macOS 用户,这意味着将其放置在 /usr/local/lib/libfaiss_c.dylib)。对于 GPU 支持,别忘了启用选项 FAISS_ENABLE_GPU注意: faiss_c 可能会动态链接到本机的 faiss 库,在这种情况下,您还需要安装主要的共享对象(faiss/libfaiss.so)。

  2. 现在您可以将此 crate 作为依赖项包含在内

    [dependencies]
    "faiss" = "0.11.0"
    

如果您已构建带有 GPU 支持的 Faiss,可以包含 "gpu" Cargo 功能

[dependencies]
"faiss" = { version = "0.11.0", features = ["gpu"] }

使用静态链接安装

作为上述方法的替代方案,启用 "static" Cargo 功能,让 Rust 为您构建 Faiss。您仍然需要构建和运行 Faiss 所需的依赖项,如其在 INSTALL.md 中所述,即兼容的 C++ 编译器和 BLAS 实现。

[dependencies]
"faiss" = { version = "0.11.0", features = ["static"] }

还可以编译带有 GPU 支持的 Faiss。

[dependencies]
"faiss" = { version = "0.11.0", features = ["static", "gpu"] }

使用

以下是一个基本示例。请查看文档获取更多信息。

use faiss::{Index, index_factory, MetricType};

let mut index = index_factory(64, "Flat", MetricType::L2)?;
index.add(&my_data)?;

let result = index.search(&my_query, 5)?;
for (i, (l, d)) in result.labels.iter()
    .zip(result.distances.iter())
    .enumerate()
{
    println!("#{}: {} (D={})", i + 1, *l, *d);
}

许可和归属声明

在以下任一许可下授权:

任选其一。

除非您明确声明,否则根据Apache-2.0许可定义的您有意提交的任何贡献,均应按上述方式双重许可,不附加任何额外的条款或条件。

本作品与Facebook AI Research或Faiss主软件无关。

依赖项