pip3 install faiss-cpu
當然找不到預編譯的包
手動下載
git clone https://github.com/facebookresearch/faiss.git
cd faiss
#能需要切換到特定版本標簽,例如 v1.7.1,這個版本Cmake 3.18可以過,因為apt install安裝的cmake只更新到這里,再往后要自己編譯了
git checkout v1.7.1
安裝編譯依賴:
這是最關鍵也最容易出錯的一步。Faiss 依賴于:
- C++ 編譯器: g++ (通常通過 build-essential 包安裝) CMake: 用于構建C++項目。 (
sudo apt install cmake
) - BLAS 庫: 一個基礎線性代數子程序庫,如 OpenBLAS (推薦), ATLAS,
- MKL。在樹莓派上,通常安裝 OpenBLAS:
sudo apt install libopenblas-dev
。這是性能的關鍵。 - SWIG: 用于生成 Python 綁定,
sudo apt install swig
- OpenMP (可選但默認啟用): 用于并行處理。有時在ARM平臺上,如果遇到問題,可能需要禁用它或確保有合適的編譯器支持。
sudo apt-get install libatlas-base-dev libatlas3-base
修改camkelist【重點】
如果你也是armv7l處理器架構,那就需要修改
定位到faiss/faiss/python/CMakeLists.txt
替換代碼塊:
找到下面顯示的代碼塊(它應該在第 21-25 行左右):
替換此(原始塊):
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)set_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)
endif()
替換為
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)if(CMAKE_SIZEOF_VOID_P EQUAL 8)# 64-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)else()# 32-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE32)endif()
endif()
配置編譯選項 (CMake):
Faiss 使用 CMake 來配置構建。需要指定一些選項,例如:
- Python 的路徑和庫。
- 是否啟用 GPU (在 faiss-cpu 的情況下應禁用)。
- BLAS 庫的類型和路徑。
- 是否構建 Python 接口。
cmake -DFAISS_ENABLE_GPU=OFF \-DFAISS_ENABLE_PYTHON=ON \-DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=ON \-DCMAKE_SWIG_FLAGS="-DSWIGWORDSIZE32" \..
編譯安裝
make -j4sudo make installcd build/faiss/python
python3 setup.py install
pip3 install .
驗證安裝
python -c "import faiss; print('Faiss version:', faiss.__version__)"