vi install_faiss_sh.sh
# faiss 1.7.4 # 步骤1 下载faiss源码包并解压 wget https://github.com/facebookresearch/faiss/archive/v1.7.4.tar.gz --no-check-certificate tar -xf v1.7.4.tar.gz && cd faiss-1.7.4/faiss # modify source code # 步骤2 修改faiss源码 arch="$(uname -m)" if [ "${arch}" = "aarch64" ]; then gcc_version="$(gcc -dumpversion)" if [ "${gcc_version}" = "4.8.5" ];then sed -i '20i /*' utils/simdlib.h sed -i '24i */' utils/simdlib.h fi fi sed -i "131 i\\ \\ virtual void search_with_filter (idx_t n, const float *x, idx_t k,\\ float *distances, idx_t *lables, const void *mask = nullptr) const {}\\ " Index.h sed -i "38 i\\ \\ template <typename IndexT>\\ IndexIDMapTemplate<IndexT>::IndexIDMapTemplate (IndexT *index, std::vector<idx_t> &ids):\\ index (index),\\ own_fields (false)\\ {\\ this->is_trained = index->is_trained;\\ this->metric_type = index->metric_type;\\ this->verbose = index->verbose;\\ this->d = index->d;\\ id_map = ids;\\ }\\ " IndexIDMap.cpp sed -i "29 i\\ \\ explicit IndexIDMapTemplate (IndexT *index, std::vector<idx_t> &ids);\\ " IndexIDMap.h sed -i "199 i\\ utils/sorting.h " CMakeLists.txt # modify source code end cd .. ls # 步骤3 faiss编译配置 cmake -B build . -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release # 步骤4 编译安装 cd build && make -j && make install cd ../.. && rm -f v1.7.4.tar.gz && rm -rf faiss-1.7.4
bash install_faiss_sh.sh
install_path=/usr/local/faiss/faiss1.7.4 cmake -B build . -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${install_path}
动态链接依赖Faiss的程序在运行时需要知道Faiss动态库所在路径,需要在Faiss的库目录加入“LD_LIBRARY_PATH”环境变量。
# 配置/etc/profile vim /etc/profile # 在/etc/profile中添加: export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH # /usr/local/lib是Faiss的安装目录,如果安装在其他目录下,将/usr/local/lib替换为Faiss实际安装路径,部分操作系统和环境中,faiss可能会安装在其他目录下。 source /etc/profile cd ..
cat /usr/local/share/faiss/faiss-config-version.cmake |grep 'PACKAGE_VERSION "'
如果正确显示软件的版本信息,则表示安装成功。