Armv7l或树莓派32位RPI 4B编译faiss

bash 复制代码
pip3 install faiss-cpu

当然找不到预编译的包

手动下载

bash 复制代码
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 行左右):

替换此(原始块):

bash 复制代码
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)
  set_source_files_properties(${source} PROPERTIES
    SWIG_FLAGS -DSWIGWORDSIZE64
  )
endif()

替换为

bash 复制代码
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    # 64-bit system
    set_source_files_properties(${source} PROPERTIES
      SWIG_FLAGS -DSWIGWORDSIZE64
    )
  else()
    # 32-bit system
    set_source_files_properties(${source} PROPERTIES
      SWIG_FLAGS -DSWIGWORDSIZE32
    )
  endif()
endif()

配置编译选项 (CMake):

Faiss 使用 CMake 来配置构建。需要指定一些选项,例如:

  • Python 的路径和库。
  • 是否启用 GPU (在 faiss-cpu 的情况下应禁用)。
  • BLAS 库的类型和路径。
  • 是否构建 Python 接口。
bash 复制代码
cmake -DFAISS_ENABLE_GPU=OFF \
      -DFAISS_ENABLE_PYTHON=ON \
      -DCMAKE_BUILD_TYPE=Release \
      -DBUILD_SHARED_LIBS=ON \
      -DCMAKE_SWIG_FLAGS="-DSWIGWORDSIZE32" \
      ..

编译安装

bash 复制代码
make -j4

sudo make install

cd build/faiss/python
python3 setup.py install
pip3 install .

验证安装

bash 复制代码
python -c "import faiss; print('Faiss version:', faiss.__version__)"
相关推荐
guslegend1 天前
第9节:FAISS,HNSW还是BM25?如何选择最适合业务的向量检索引擎?如何选择最适合业务的向量检索引擎
人工智能·大模型·faiss·rag
weisian1511 天前
进阶篇-LangChain篇-10--向量数据库选型指南:本地FAISS, Chroma与云原生方案
数据库·langchain·faiss·向量数据库·chroma
森森-曦12 天前
在复现overlaptranformer论文中,进行库faiss安装的,解决方案。
faiss
liliangcsdn17 天前
如何使用向量库faiss和LLM判断问题是否被记录
人工智能·全文检索·faiss
Le0v1n19 天前
Faiss:大规模向量相似度检索
faiss
zhojiew20 天前
在RAG系统中对FAISS,HNSW,BM25向量检索引擎选型的问题
人工智能·机器学习·faiss
深藏功yu名20 天前
Day24:向量数据库 Chroma_FAISS 入门
数据库·人工智能·python·ai·agent·faiss·chroma
深藏功yu名20 天前
Day24(进阶篇):向量数据库 Chroma_FAISS 深度攻坚 —— 索引优化、性能调优与生产级落地
数据库·人工智能·python·ai·agent·faiss·chroma
爱打代码的小林1 个月前
基于 LangChain + 通义千问 + FAISS 构建 RAG 问答系统
langchain·大模型·faiss·rag
麦麦大数据2 个月前
M004_基于Langchain+RAG的银行智能客服系统设计与开发
typescript·langchain·flask·vue3·faiss·rag