安装和使用 faiss
一、安装
方法一:通过anaconda安装
下载anaconda:
1. 下载anaconda (仅供参考:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)
2. 执行默认安装,一路Enter键:bash 下载的anaconda.sh
3. 修改环境变量:
3.1 vim /etc/profile
3.2 添加 export PATH="$HOME/anaconda2/bin:$PATH" (假设你的anaconda为anaconda2,在$HOME路径下)
3.3 启用 source /etc/profile
4. 可通过 conda list检查anaconda是否能正常使用
下载faiss:
1. 下载faiss安装包,根据需求下载所需版本
2. 将下载的faiss安装包放至anaconda/pkgs/ 下
3. faiss安装:conda install 相应的faiss包,直接安装
4. 安装完成后,运行python,import faiss可以正常使用
方法二:自行将faiss的C++转为py文件
下载faiss:
1. 下载所需faiss包,并解压
安装numpy:
1. yum search numpy查找可安装的numpy版本
2. yum install 所需版本的numpy (系统默认安装的Python为2.7,所以需选择Python2对应的numpy)
安装swig:(swig为c/c++和python的“粘合剂” 可参考:https://blog.****.net/soaringlee_fighting/article/details/61925620)
1. 下载swig安装包,并解压(若faiss为引擎提供的1.5.2,swig需下载3.0.12版本)
2. swig安装:
2.1 ./configure (如对安装目录有要求,可通过./configure --prefix=your安装路径 // 指定安装目录)
2.2 make // 编译
2.3 make install // 安装
安装OpenBLAS:(faiss依赖的数学库)
1. 下载OpenBLAS包,并解压(https://github.com/xianyi/OpenBLAS 选择合适的版本)
2. cd 解压后的OpenBLAS文件
2.1 编译 make
2.2 安装 make install(如对安装路径有要求,可通过make PREFIX=your安装路径 install进行安装)
3. 修改环境变量:
3.1 vim /etc/profile
3.2 添加:
export OpenBLAS_PATH=/opt/OpenBLAS/lib/
export LIBRARY_PATH=$OpenBLAS_PATH:$LIBRARY_PATH (g++进行.o文件生成时,需要openblas相应的库文件)
3.3 启用:source /etc/profile
编译.so 及py文件:
1. 进入faiss文件夹,执行make命令,编译生成相应的.so文件
2. 修改环境变量:
2.1 vim /etc/profile
2.2 添加:export LD_LIBRARY_PATH=$OpenBLAS_PATH:$LD_LIBRARY_PATH
2.3 启用:source /etc/profile
3. 执行make py,将faiss转为py文件(在faiss/python 里会生成 build文件夹、faiss文件夹、_swigfaiss.so文件)
====》执行到这一步,在faiss文件夹下的Python下,faiss已可正常使用 (此目录之外执行Python,faiss还是不能正常import)
如果想在任意目录下执行Python后都可以使用faiss,需修改环境变量,将当前的faiss下的的库文件添加到公共库中,修改如下:
1. 将faiss/python 下的s所有文件内容,copy到/usr/lib的某个文件夹下,可新建一个faiss_lib(也可直接添加为当前python路径(faiss-1.5.2/python)路径,但该路径容易被修改,修改后faiss无法正常使用)
2. 修改环境变量:
vim /etc/profile
添加:
export FAISS_PATH=/usr/lib/faiss_lib
export PYTHONPATH=$FAISS_PATH:$PYTHONPATH
启用:source /etc/profile
====》执行到这一步,任意目录下执行Python,均可使用 faiss
注:有一个暴力的方法,把.so .o什么都放到lib 或者 lib64 文件夹里,贼省事
以上安装过程感谢ysx同学,虽然你看不到。
简单的具体使用的话可以看这位大佬的分享 faiss 学习笔记(二) | index 学习 - 简书
另外说明一点, IndexIdMap是包含了一个Index成员, 而且又继承自Index。
另注
推荐阅读
-
TensorFlow 的基本概念和使用场景
-
在 Anaconda 虚拟环境中安装 cuda 和 pytorch
-
在 Ubuntu 下安装和初始化 Git,同时添加 SSH 密钥
-
Linux 安装和部署服务:nginx和Openresty - IV,nginx常用配置
-
使用 beeline 命令将 DataGrip 远程连接到 Spark-sql和 hive
-
node.js 下载和安装以及环境配置超级详细教程 [Windows 版本]。
-
在 Linux 中安装 mongodb,非常详细 - 四步、启动和关闭
-
使用 Dlib 库进行人脸检测和关键点定位
-
Artalk 多站点评论系统的部署和使用
-
安装 Prometheus 和 Grafana,通过简单配置和使用 PromQL 查询语言以及基于 Pushgateway 的 Prometheus 数据收集,实现监控数据的可视化。