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 数据库接口
每月下载量 557
用于 faiss
2.5MB
67K SLoC
Faiss-rs
本项目为 Faiss 提供了 Rust 绑定,Faiss 是一个最先进的向量搜索和聚类库。
使用动态链接安装
默认情况下,这个 crate 会与您系统上安装的 Faiss 库动态链接,因此它不会为您自动构建 Faiss。要自行构建库
-
请按照这里的说明使用 CMake 构建 Faiss,并启用变量
FAISS_ENABLE_C_API
和BUILD_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)。 -
现在您可以将此 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 License,版本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主软件无关。