2 个不稳定版本
0.2.0 | 2024 年 2 月 2 日 |
---|---|
0.1.1 | 2024 年 1 月 23 日 |
#177 in #api-wrapper
在 faiss-next 中使用
395KB
11K SLoC
faiss-next-sys
faiss-next-sys
使用 c_api
封装 faiss
并通过 bindgen
转换为 rust
.
目前支持的 faiss
版本是 v1.7.4
从源代码构建 faiss
faiss-next-sys
需要 faiss
使用 FAISS_ENABLE_C_API=ON
和 BUILD_SHARED_LIBS=ON
编译。
一些 facebookresearch/faiss 分发版,如 Mac 上的 brew
,不提供 faiss_c
库。
因此,有时需要从源代码构建 faiss
。
facebookresearch/faiss 提供了官方的安装文档,指导如何从源代码构建 faiss
。
但是,在 windows
上,由于 msvc
C++ 编译器对 C++17
语法实现的问题,构建 faiss
将失败:问题。
因此,制作了一个经过测试的 v1.7.4
版本:[链接](https://github.com/yexiangyu/faiss/archive/refs/heads/v1.7.4-win.zip) 以解决这个问题。
如果目标平台不是 windows
,则只需克隆 faiss
并检出 v1.7.4
分支即可。
- 链接:[经过测试的版本](https://github.com/yexiangyu/faiss/archive/refs/heads/v1.7.4-win.zip)
- 链接:[官方版本](https://github.com/facebookresearch/faiss/archive/refs/tags/v1.7.4.zip)
选择上述之一,下载、解压,然后开始构建
macOS
需要 xcode
和 brew
,请提前安装。
# install cmake openblas and llvm
brew install cmake openblas llvm
# configure
cmake -B build -DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF
# compile
cmake --build build --config Release
# install
cmake --install build --prefix=$HOME/faiss
cp build/c_api/libfaiss_c.dylib $HOME/faiss/lib/
Linux
需要 gcc
、cmake
、intelmkl
、cuda
,请提前安装。
# configure
cmake -B build -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_ENABLE_GPU=ON -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF
# compile
cmake --build build --config Release
# install
cmake --install build --prefix=$HOME/faiss
cp build/c_api/libfaiss_c.so $HOME/faiss/lib/
Windows
需要安装 Visual Studio 2022
、cmake
、intelmkl
、cuda
,请提前安装。
# configure
cmake -B build -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_ENABLE_GPU=ON -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF
# compile
cmake --build build --config Release
# install
cmake --install build --prefix=%USERPROFILE%\faiss
copy build\c_api\Release\faiss_c.dll %USERPROFILE%\faiss\bin
copy build\c_api\Release\faiss_c.lib %USERPROFILE%\faiss\lib\
绑定
绑定是在 faiss-next-sys
文件夹下运行以下命令生成的
cargo build --features bindgen
或者,启用 gpu
生成绑定
cargo build --features bindgen,gpu
生成的绑定如下
└── src
├── lib.rs
├── linux
│ ├── bindings.rs #linux cpu bindings
│ └── bindings_gpu.rs #linux gpu bindings
├── macos
│ └── bindings.rs #macos cpu bindings, gpu is not supported
└── windows
├── bindings.rs #windows cpu bindings
└── bindings_gpu.rs #windows gpu bindings
无运行时依赖
~0–1.8MB
~36K SLoC