cmake编译faiss源码记录

文章目录

    • 简介
    • 下载源码
    • 安装环境
    • 编译

简介

Faiss(Facebook AI Similarity Search)是一个由Facebook AI研发并开源的,用于大规模向量检索的库。其核心算法采用了聚类、压缩和量化等技术,以优化最近邻搜索的效率和准确性。Faiss提供了高效的索引构建和最近邻搜索功能,特别适用于搜索大规模数据集。

Faiss支持多种数据类型,包括图像、文本和嵌入向量等,具有出色的性能和准确性。它的特点包括速度快、可扩展性强,能够在短时间内处理大量数据,提高检索效率。Faiss检索算法具有快速查找最相似向量的能力,可以准确快速地定位目标信息。

在应用方面,Faiss在信息检索、推荐系统和图像识别等领域都有广泛的应用。例如,它可以用于构建文档或图像的相似性搜索引擎,快速找到与查询向量最相似的文档或图像;在推荐系统中,Faiss可以快速查找用户喜欢的物品或者寻找相似的用户,为用户提供更加个性化和准确的推荐结果;在图像识别领域,Faiss可以用于构建图像特征的索引,实现快速的相似图像搜索和图像聚类。

此外,Faiss提供了多种索引算法,如FAISS索引、PTB索引和SVN索引等,以满足不同规模数据集的需求。其中,FAISS索引采用树形结构对向量进行划分,并在每个子节点上计算向量的局部亲密度,具有较高的检索效率;PTB索引则通过产品量化对向量进行编码,具有较小的内存占用和较快的索引构建速度;SVN索引则通过特征向量归一化,使得相似度计算更加鲁棒。

总的来说,Faiss作为一种高效的多模态向量检索引擎,为大规模数据集的向量检索提供了强大的支持,是信息检索、推荐系统和图像识别等领域的重要工具。

下载源码

源码位置

安装环境

sudo apt install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install swig

编译

  • 常规选项:
    -DFAISS_ENABLE_GPU=OFF 禁用构建 GPU 索引
    -DFAISS_ENABLE_PYTHON=OFF 禁用构建 Python 绑定
    -DFAISS_ENABLE_RAFT=ON 构建 RAFT 实现 IVF-Flat 和 IVF-PQ GPU 加速指数
    -DBUILD_TESTING=OFF 禁用构建 C++ 测试,
    -DBUILD_SHARED_LIBS=ON 构建共享库
    -DFAISS_ENABLE_C_API=ON 启用构建 C API

  • 与优化相关的选项:

    -DCMAKE_BUILD_TYPE=Release 启用泛型编译器 优化选项(例如在 GCC 上启用-O3)
    -DFAISS_OPT_LEVEL=avx2 启用所需的编译器标志 使用优化的 SIMD 指令生成代码avx2/avx512

  • BLAS 相关选项:

    -DBLA_VENDOR=Intel10_64_dyn -DMKL_LIBRARIES=/path/to/mkl/libs要使用 英特尔 MKL BLAS 实施,明显快于 OpenBLAS (有关该选项值的更多信息,请参见 CMake 文档),BLA_VENDOR

  • GPU 相关选项:

    -DCUDAToolkit_ROOT=/path/to/cuda-10.1为了暗示 CUDA 工具包(有关更多信息,请参阅 CMake 文档),
    -DCMAKE_CUDA_ARCHITECTURES="75;72"用于指定哪些 GPU 架构 针对 (请参阅 CUDA 文档 确定应选择的架构),

  • 与 Python 相关的选项:

    -DPython_EXECUTABLE=/path/to/python3.7为了构建 Python 接口与默认 python 不同的 python(请参阅 CMake 文档)

cmake -B build -DFAISS_ENABLE_PYTHON=OFF -DFAISS_ENABLE_GPU=ON -DBUILD_SHARED_LIBS=ON -DFAISS_ENABLE_C_API=ON -DCMAKE_BUILD_TYPE=Release  -DCMAKE_INSTALL_PREFIX=/home/disk/liangbaikai/faiss/faiss_install .cd build
make
make install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow xxe web373-378

web373 libxml_disable_entity_loader(false):这行代码用于启用实体加载器,允许加载外部实体。 $xmlfile file_get_contents(php://input):从输入流中读取XML数据并存储在 $xmlfile 变量中。 $dom->loadXML($xmlfile, LIBXML_NOENT |…

异常信息泄露 应用程序错误泄露 原理以及修复方法

漏洞名称:未自定义统一错误页面导致信息泄露,抛出异常信息泄露,错误详情信息泄漏,AWVS漏洞名称如下: Application error message Error message on page ASP.NET error message 漏洞描述:攻击者可通过构造…

FebHost:意大利.IT域名一张意大利网络名片

.IT域名是意大利的国家顶级域名,对于意大利企业和个人而言,拥有一个属于自己的”.IT”域名无疑是件令人自豪的事。这个被誉为意大利互联网标志性代表的域名,不仅隐含着浓厚的意大利文化特色,还为使用者在当地市场的推广铺平了道路。 对于那些希望在意大利市场建立强…

微信开发者工具接入短剧播放器插件

接入短剧播放插线 申请添加插件基础接入app.jsonapp.jsplayerManager.js数据加密跳转到播放器页面运行出错示例小程序页面页面使用的方法小程序输入框绑定申请添加插件 添加插件:登录微信开发者平台 ——> 设置 ——> 第三方设置 ——> 插件管理 ——> 搜索“短剧…

基于SpringBoot + Vue实现的养老院管理系统设计与实现+毕业论文(12000字)+搭建视频

介绍 养老院管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,养老院管理系统都可以轻松应对。 系统包含登录、注册、…

蓝桥杯每日不知道多少题之更小的数

题目链接:更小的数 - 洛谷 P9232 - Virtual Judge (vjudge.net) 解题思路:这个题看数据量是可以过n方的算法的,首先考虑dp,那么则是两层for循环,即枚举所有情况,那么怎么进行状态转移呢,当 s[i…

Linux 系统 docker搭建LNMP环境

1、安装nginx docker pull nginx (默认安装的是最新版本) 2、运行nginx docker run --name nginx -p 80:80 -d nginx:latest 备注:--name nginx 表示容器名为 nginx -d 表示后台运行 -p 80:80 表示把本地80端口绑定到Nginx服务端的 80端口 nginx:lates…

【YOLOv5改进系列(9)】高效涨点----使用CAM(上下文增强模块)替换掉yolov5中的SPPF模块

文章目录 🚀🚀🚀前言一、1️⃣ CAM模块详细介绍二、2️⃣CAM模块的三种融合模式三、3️⃣如何添加CAM模块3.1 🎓 添加CAM模块代码3.2 ✨添加yolov5s_CAM.yaml文件3.3 ⭐️修改yolo.py文相关文件 四、4️⃣实验结果4.1 &#x1f39…

【阅读笔记】《你的第一本博弈论》

博弈论入门书,很多例子方便理解 副标题: 用博弈论解决工作和生活的难题 作者:欧俊 笔记 CH1 博弈论:最高级的思维和生存策略 博弈的分类: • 负和博弈 • 零和博弈 • 正和博弈 博弈论带给我们的启示: • 要会选择 …

Leetcode 82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 提示&#xff1a; 链表中节点数目在范围 [0, 300] 内 -100 < Node.…

一些实用的功能函数

1. 【算法】求两个数中&#xff0c;bit位不同的个数&#xff08;在计网那道题中用过&#xff09; 解法&#xff1a;首先把两位数异或&#xff0c;得到的结果&#xff0c;通过自身跟自身-1相与&#xff0c;直到等于0为止 代码如下&#xff1a; int calculateNotSam(int a,int …

uniapp怎么使用接口返回的iconfont图标

uniapp怎么使用接口返回的iconfont图标 首先在你的项目中添加该图标&#xff0c;名称要对应 实际应用 item.ICONFONT_NAME“tools”; item.ICONFONT_COLOR“FA5151”; <view class"iconfont" :class"icon-item.ICONFONT_NAME" :color"item.ICON…

ORACLE 存中文

笔记 oracle 存中文要用 nvarchar2 &#xff0c;涉及长度校验 NVARCHAR2和VARCHAR2的区别&#xff0c;从使用角度来看区别在于&#xff1a; NVARCHAR2在计算长度时和字符集相关&#xff0c; 例如数据库是中文字符集时&#xff0c;以长度10为例&#xff0c;则 NVARCHAR2(10)可…

Kubernetes Pod深度解析:构建可靠微服务的秘密武器(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kubernetes概述 2、Pod概述 二、Po…

输出单链表倒数第K个结点值

方法一&#xff1a; 两次遍历链表。第一次遍历&#xff0c;计算链表长度&#xff0c;然后计算链表倒数第m个结点的正数位置k&#xff0c;判断位置是否合法&#xff0c;如果不合法&#xff0c;输出NOT FOUND&#xff0c;否则&#xff0c;进行第二次遍历链表&#xff0c;查找链表…

手写SpringBoot(三)之自动配置

系列文章目录 手写SpringBoot&#xff08;一&#xff09;之简易版SpringBoot 手写SpringBoot&#xff08;二&#xff09;之动态切换Servlet容器 手写SpringBoot&#xff08;三&#xff09;之自动配置 手写SpringBoot&#xff08;四&#xff09;之bean动态加载 手写SpringBoot…

企业培训系统功能介绍

在当今知识经济时代&#xff0c;企业的竞争力在很大程度上取决于员工的专业能力和综合素质。为了适应不断变化的市场需求和技术进步&#xff0c;企业需要对员工进行持续有效的培训。一个高效的企业培训系统对企业人才培训至关重要。以下介绍一下企业培训系统的主要功能&#xf…

电脑文件msvcp120.dll丢失的解决方法详细分析,找多种靠谱方法修复

遇到msvcp120.dll文件丢失的问题实际上不算罕见&#xff0c;这往往是由于我们频繁使用电脑而导致的意外删除&#xff0c;或者是电脑受到病毒感染。当这类情况发生时&#xff0c;msvcp120.dll文件可能会被错误地移除或损坏&#xff0c;这便需要我们去进行修复。接下来&#xff0…

【系统架构师】-第18章-安全架构设计

(1)信息泄露&#xff1a;信息被泄露或透露给某个非授权的实体。 (2)破坏信息的完整性&#xff1a;数据被非授权地进行增删、修改或破坏而受到损失。 (3)拒绝服务&#xff1a;对信息或其他资源的合法访问被无条件地阻止。 (4)非法使用(非授权访问):某一资源被某个非授权的人或…

FA模型切换Stage模型组件切换之ServiceAbility切换DataAbility切换

ServiceAbility切换 FA模型中的ServiceAbility对应Stage模型中的ServiceExtensionAbility。Stage模型下的ServiceExtensionAbility为系统API&#xff0c;只有系统应用才可以创建。因此&#xff0c;FA模型的ServiceAbility的切换&#xff0c;对于系统应用和三方应用策略有所不同…