成都网站建设设计

将想法与焦点和您一起共享

go调用faiss服务-创新互联

我们都知道,faiss是facebook开源的相似性搜索的开源项目,基于C++和python都有相应的实现,但是一直没有go版本,go要怎么去调用呢?可以直接通过go去调用c++的函数接口去实现;

创新互联主营吉林网站建设的网络公司,主营网站建设方案,成都APP应用开发,吉林h5重庆小程序开发搭建,吉林网站营销推广欢迎吉林等地区企业咨询

go调用faiss的例子可以参考这个文档:faiss package - github.com/DataIntelligenceCrew/go-faiss - Go Packages ,我这里主要说一下怎么通过C++源码编译到动态库供go调用的细节;

首先官网的安装文档可以看这里:https://github.com/facebookresearch/faiss/blob/main/INSTALL.md

建议使用cmake编译,按照官网的步骤你去编译,当然是会报错的,会需要科学计数库,这个官网推荐是intel的,我这里也介绍intel的mkl库怎么安装,intel的mkl库还挺难找,记住我们需要安装的是i这个东西Parallel Studio XE Runtime,在官网通过这个关键字搜索,去找到安装方法,我这里就发出来ubuntu通过apt的安装方法:Installing Intel® Parallel Studio XE Runtime 2020 Using APT Repository

通过添加apt源之后,我们可以安装这个runtime库里的任何软件包了,直接安装intel-mkl-runtime包就好,其他包faiss用不上, apt-get install intel-mkl-runtime

安装好之后,这里也是个比较容易遇到问题的地方,你在用cmake去编译,还是会报缺少数学库,那是因为mkl安装的位置默认是在/opt/intel/psxe_runtime/linux/mkl/ 下面,安装版本不同,psxe_runtime的名字可能有不同,这时候我们运行一下该命令:source /opt/intel/oneapi/setvars.sh intel64 ,把安装的目录设置到环境变量,让cmake编译的时候找得到mkl的依赖,当然你也可以直接去/etc/ld.so.conf.d/ 目录下,添加mkl安装的动态库路径,例如我安装的动态库路径/opt/intel/psxe_runtime/linux/mkl/lib/intel64_lin/ , 然后再执行ldconfig

安装后数学库之后,下一个就要安装swig了,因为无论是python还是go,都需要用swig这个工具,进行动态库的编译,如果你之前用conda安装了低版本的faiss,那你系统肯定有swig,安装最新版本的时候,大概率会报不支持-doxygen参数的错误,这时候,我们直接去源码安装最新的swig,官网地址:GitHub - swig/swig: SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.

按照官网安装说明编译安装即可,记得选最新的release tag安装,如果使用configure方式安装,记得安装好所有的autoconf,autotools的那一系列工具,然后通过项目的autogen.sh脚本生成configure进行预编译。

安装完swig之后,我们就可以继续编译faiss的接口了,如果之前机器上有swig,那编译的时候一定要带上新安装的swig库地址,所以最后的编译参数是:

cmake -B ./ -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DSWIG_DIR=/usr/local/share/swig/4.1.0 -DSWIG_EXECUTABLE=/usr/local/bin/swig

make && make install之后,libfaiss_c.so默认会安装到/usr/local/lib/ 目录里面,如果你的默认库目录没有这个目录,记得通过ldconfig配置一下,或者直接在/usr/lib下设一个软链。

所有安装完成,,按照例子go get一下go-faiss这个项目安装go调用c++的库,最后可以直接参照go-faiss项目的例子进行faiss测试了

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:go调用faiss服务-创新互联
地址分享:http://chengdu.cdxwcx.cn/article/hdgoe.html