2025年05月最新!Ubuntu 20.04系统FAISS安装详解

云信安装大师
90
AI 质量分
10 5 月, 2025
3 分钟阅读
0 阅读

2025年05月最新!Ubuntu 20.04系统FAISS安装详解

引言

FAISS(Facebook AI Similarity Search)是Facebook开源的向量相似度搜索库,广泛应用于推荐系统、图像检索、自然语言处理等领域。本文将详细介绍在Ubuntu 20.04系统上安装FAISS的最新方法(截至2025年5月),包括CPU和GPU版本的安装选项。

准备工作

在开始安装前,请确保:

  1. 已安装Ubuntu 20.04系统(建议使用LTS版本)
  2. 拥有sudo权限
  3. 网络连接正常(部分依赖需要从GitHub下载)
  4. 对于GPU版本,需要NVIDIA显卡和已安装的CUDA驱动

第一步:更新系统和安装基础依赖

代码片段
# 更新软件包列表
sudo apt update

# 升级已安装的软件包
sudo apt upgrade -y

# 安装基础编译工具和依赖
sudo apt install -y build-essential cmake git python3-dev python3-pip libopenblas-dev liblapack-dev swig wget

说明:
build-essential包含gcc/g++等编译工具
cmake是FAISS构建所需的工具
python3-devpython3-pip用于Python接口支持
libopenblas-dev提供优化的线性代数运算支持

第二步:克隆FAISS源码

代码片段
# 创建工作目录并进入
mkdir ~/faiss_install && cd ~/faiss_install

# 克隆FAISS官方仓库(使用2025年最新的稳定分支)
git clone https://github.com/facebookresearch/faiss.git
cd faiss

# 查看最新稳定版本(根据2025年情况调整)
git checkout v1.8.0   # 示例版本号,请替换为最新稳定版

注意事项:
– FAISS更新较快,建议定期查看官方GitHub获取最新版本
– 如果网络问题导致克隆失败,可以尝试使用GitHub镜像源

第三步:构建和安装FAISS(CPU版本)

CPU版本基本安装

代码片段
# 创建构建目录并进入
cd ~/faiss_install/faiss
mkdir build && cd build

# CMake配置(基础CPU版本)
cmake -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=ON -DBUILD_TESTING=ON ..

# 编译并安装(使用4个线程加速编译)
make -j4 && sudo make install

# 验证是否安装成功
make test    # 运行测试用例

Python接口安装

代码片段
# 进入Python目录并安装
cd ~/faiss_install/faiss/faiss/python
pip install . --user

# 验证Python接口是否可用
python3 -c "import faiss; print(faiss.__version__)"

常见问题解决:
1. ImportError: libfaiss.so not found

代码片段
# 添加库路径到环境变量
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc<br>
   

  1. CMake错误: OpenMP未找到
    解决方法:

    代码片段
    sudo apt install libomp-dev<br>
    

(可选)第四步:GPU版本额外配置

如果需要在GPU上加速计算,需额外执行以下步骤:

CUDA环境检查

代码片段
# 检查CUDA是否已安装及版本号(需要CUDA >=11.0)
nvcc --version

# 如果未安装CUDA,请先参考NVIDIA官方文档安装合适版本的CUDA驱动和工具包

GPU版本构建

代码片段
cd ~/faiss_install/faiss/build/
rm -rf *    # 清理之前的构建文件

# CMake配置(启用GPU支持)
cmake -DFAISS_ENABLE_GPU=ON \
      -DFAISS_ENABLE_PYTHON=ON \
      -DCUDAToolkit_ROOT=/usr/local/cuda \ 
      ..

make -j4 && sudo make install

# Python接口重新安装(带GPU支持)
cd ../faiss/python/
pip uninstall faiss-cpu -y    # 如果之前安装了CPU版本先卸载
pip install . --user          # GPU版本的Python包会自动包含CPU功能

# GPU功能验证测试代码(见下文示例部分)

注意事项:
1. GPU内存要求:至少4GB显存才能运行基本示例
2. CUDA架构兼容性:如果遇到”no kernel image is available”错误,需在CMake中指定架构:

代码片段
cmake ... -DCMAKE_CUDA_ARCHITECTURES="75"   # Tesla T4为75,根据你的显卡调整 <br>
   

FAISS使用示例验证

Python简单示例代码(CPU版)

代码片段
import numpy as np
import faiss

dimension = 64      # 向量维度 
database_size = 10000  
query_size = 100    # query数量 

np.random.seed(1234)
database_vectors = np.random.random((database_size, dimension)).astype('float32')
query_vectors = np.random.random((query_size, dimension)).astype('float32')

index = faiss.IndexFlatL2(dimension)     # L2距离的暴力搜索索引 
index.add(database_vectors)              #添加数据到索引 

k =6                                    #返回6个最近邻 
distances, indices = index.search(query_vectors, k)

print("前5个查询结果:")
for i in range(5):
    print(f"查询{i}: {indices[i]} (距离: {distances[i]})")

GPU加速示例代码(需GPU版)

代码片段
import numpy as np 
import faiss 

res = faiss.StandardGpuResources()       #获取GPU资源 

dimension =128                          #更高维度更能体现GPU优势 
database_size=50000                      
query_size=1000                          

np.random.seed(1234)
data=np.random.random((database_size,dimension)).astype('float32')
queries=np.random.random((query_size,dimension)).astype('float32')

cpu_index=faiss.IndexFlatL2(dimension)    #创建CPU索引 
gpu_index=faiss.index_cpu_to_gpu(res,0,cpu_index)     #转换为GPU索引 

gpu_index.add(data)                      #数据转移到GPU 

k=10                                     #返回10个最近邻 
distances,indices=gpu_index.search(queries,k)

print(f"GPU搜索完成!平均查询时间: {gpu_index.search_time_ms} ms")

Docker快速部署方案(可选)

对于希望快速体验或部署的用户,可以使用官方Docker镜像:

代码片段
docker pull ghcr.io/facebookresearch/faiss:latest-cpu     # CPU版镜像 

docker run --rm -it ghcr.io/facebookresearch/faiss:latest-cpu \
    python3 -c "import faiss; print(faiss.__version__)"

# GPU版需要nvidia-docker支持:
docker pull ghcr.io/facebookresearch/faiss:latest-gpu     
docker run --gpus all --rm -it ghcr.io/facebookresearch/faiss:latest-gpu \
    python3 -c "import faiss; print(faiss.test_on_gpu())"

FAQ常见问题解答

Q1: CPU和GPU版本的性能差异有多大?
A1: GPU加速效果取决于数据规模和硬件配置。在典型场景下:
-小数据集(<10万): CPU可能更快(省去了数据传输时间)
-大数据集(>100万): GPU通常有10倍以上的加速比

Q2: FAISS支持哪些距离度量方式?
A2: FAISS支持多种距离计算方式:
– L2距离(欧式距离): IndexFlatL2
-内积相似度: IndexFlatIP
-余弦相似度:通过归一化向量+内积实现

Q3:如何优化FAISS内存占用?
A3:
1.使用IVF索引类型减少内存占用
2.PQ量化压缩向量表示
3.HNSW索引适合高召回率场景

总结

本文详细介绍了在Ubuntu20.04上安装FAISS的全过程:
1.CPU基础版只需标准C++工具链+Python环境
2.GPU加速版需要额外CUDA环境支持
3.Python接口提供便捷的开发体验

关键建议:
✅生产环境推荐使用conda管理Python依赖
✅大规模部署考虑使用Docker容器化方案
✅定期关注GitHub获取安全更新和新特性

原创 高质量