11 个重大版本
0.12.1 | 2023 年 8 月 26 日 |
---|---|
0.12.0 | 2023 年 1 月 29 日 |
0.11.0 | 2022 年 3 月 28 日 |
0.10.0 | 2021 年 6 月 21 日 |
0.3.0 | 2018 年 3 月 21 日 |
#222 在 数据库接口
每月下载量 345
3MB
72K SLoC
Faiss-rs
本项目为 Faiss(最先进的向量搜索和聚类库)提供 Rust 绑定。
使用动态链接安装
默认情况下,此包会与系统安装的 Faiss 库动态链接,因此不会自动为您构建 Faiss。要自行构建库
-
请按照此处的说明使用 CMake 构建 Faiss,启用变量
FAISS_ENABLE_C_API
和BUILD_SHARED_LIBS
。当前该包仅兼容版本 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
(Linux 上的 "c_api/libfaiss_c.so"),需要将其安装到系统可以识别的位置(在 Linux 上,请尝试 "/usr/lib" 等环境变量中的某个位置,或者尝试向该变量添加新的路径)。对于 GPU 支持,不要忘记启用选项FAISS_ENABLE_GPU
。 注意:faiss_c
可能会动态链接到本机的faiss
库,在这种情况下,您还需要安装主共享对象(faiss/libfaiss.so)。 -
现在您可以将此包作为依赖项包含
[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 License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
除非您明确声明,否则您根据 Apache-2.0 许可定义的任何贡献,有意提交以包含在工作中的,应如上双重许可,不附加任何额外条款或条件。
此作品与 Facebook AI Research 或 Faiss 主软件无关。