跳到主要内容

安装 Faiss

标准安装方式

我们支持通过 CMake 从源码编译 Faiss,以及在有限平台通过 Conda 安装:仅支持 Linux(x86 和 ARM 架构)、Mac(x86 和 ARM 架构)、Windows(仅 x86)。 详情可参见 INSTALL.md

为什么不支持通过 XXX 方式安装?

由于要保证 Faiss 在支持的配置下可以稳定运行,支持更多平台的维护成本非常高。每当我们为 Faiss 发布新版本并构建 Conda 包时,经常会遇到兼容性问题。Anaconda 能提供足够可控的环境,让我们确信它能在用户机器上正确运行(而 pip 通常无法做到这样)。 此外,硬件和操作系统平台必须得到我们的持续集成(CI)工具(如 CircleCI)的支持。

因此,在正式支持新的平台(包括硬件和软件)之前,我们会非常谨慎。

important

我们非常欢迎大家分享将 Faiss 移植到其他平台的经验,无论成功还是失败!相关的 Pull Request(PR)也非常欢迎。

特殊配置

在 Anaconda 环境下编译 Python 接口

使用 Anaconda 安装和配置所有依赖项,并让 Faiss 直接链接 Anaconda 环境中的库。这可以确保使用英特尔 MKL(数学核心库)达到最佳性能。

以下是详细步骤:

source ~/anaconda3/etc/profile.d/conda.sh
conda activate host_env_for_faiss # 激活包含 python 和 numpy 的环境

git clone https://github.com/facebookresearch/faiss.git faiss_xx

cd faiss_xx

LD_LIBRARY_PATH= MKLROOT=/private/home/matthijs/anaconda3/envs/host_env_for_faiss/lib CXX=$(which g++) \
$cmake -B build -DBUILD_TESTING=ON -DFAISS_ENABLE_GPU=OFF \
-DFAISS_OPT_LEVEL=axv2 \
-DFAISS_ENABLE_C_API=ON \
-DCMAKE_BUILD_TYPE=Release \
-DBLA_VENDOR=Intel10_64_dyn .

make -C build -j10 swigfaiss && (cd build/faiss/python ; python3 setup.py build)

(cd tests ; PYTHONPATH=../build/faiss/python/build/lib/ OMP_NUM_THREADS=1 python -m unittest -v discover )
提示

建议提前创建并激活包含 pythonnumpy 的 Anaconda 虚拟环境,以避免依赖冲突问题。

在 ARM 架构上编译 Faiss

以下以在 Amazon EC2 c6g.8xlarge(Ubuntu 18 系统,ARM 架构)为例给出步骤:

set -e

sudo apt-get install libatlas-base-dev libatlas3-base
sudo apt-get install clang-8
sudo apt-get install swig

# 系统自带的 cmake 版本过旧,需手动安装新版
wget https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3.tar.gz

tar xvzf cmake-3.19.3.tar.gz
cd cmake-3.19.3/
./configure --prefix=/home/matthijs/cmake && make -j

cd $HOME

alias cmake=$HOME/cmake/bin/cmake

# 克隆 Faiss 源码
git clone https://github.com/facebookresearch/faiss.git

cd faiss

cmake -B build -DCMAKE_CXX_COMPILER=clang++-8 -DFAISS_ENABLE_GPU=OFF -DPython_EXECUTABLE=$(which python3) -DFAISS_OPT_LEVEL=generic -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON

(cd build/faiss/python/ ; python3 setup.py build)

# 执行测试
export PYTHONPATH=$PWD/build/faiss/python/build/lib/

python3 -m unittest discover
备注

对于 ARM 环境,部分依赖项(如 cmake)需手动编译安装。请提前确保网络顺畅,并预留充足的磁盘空间。

常见问题与注意事项

注意

在部分平台或者定制化环境下,可能出现依赖项不兼容、库未找到等问题。请参考 INSTALL.md 或向社区寻求支持。

提示

推荐优先使用 Conda 管理环境和安装依赖,这样可以简化大多数兼容性问题。

适用场景

  • 大规模向量相似度检索与聚类
  • 机器学习、深度学习模型的特征索引与召回
  • 自然语言处理中的向量化检索
  • 个性化推荐、图像检索等高性能场景

若需在非官方支持的平台上部署,可参考上述特殊配置小节,根据自身环境灵活调整编译参数。