faiss 学习

介绍

安装

编译

索引学习


  • 首先想在本地mac上编译faiss(失败)

    • 安装了cuda,但mac没有GPU
    • gcc g++ 默认使用的cmake,通过设置环境变量解决
    • 安装openblas boost thrift zookeeper
    • 还有一些依赖问题没有解决
    • 编译整个项目时出现找不到头文件的问题
  • 在本地安装thrift0.9.2(失败)
    • 分别可以从github与thrit官网下载包进行安装,但都没有安装成功
    • 使用brew install thrift可以安装成功,但无法通过命令选择0.9.2版本
    • 网上能找到方法,从github上clone下来brew的thrift版本,然后git log找到0.9.2版本对应的commit id,git checkout到这个id,执行命令,会出错
  • 拉取centos7 docker镜像(失败)
    • 由于生产环境中使用的是centos7,所以想拉取相同系统环境的镜像,好处是可以直接把线上的库文件scp到本地
    • 安装cmake make gcc g++
    • 但仍然需要安装cuda openblas thrift boost zookeeper等等依赖
    • 依赖安装不完整,编译项目时出现找不到头文件问题
  • 使用测试环境(通过)
    • 好处是各种依赖已经安装好
    • 有点麻烦的是在本地clion写好测试代码,复制到测试机上进行编译并执行测试
    • 测试目的为faiss不同版本之间的性能,由于编译faiss(生成静态库文件)需要cuda openblas等依赖,因此也在测试机上执行
    • 直接将原src目录下的makefile目录复制,并进行修改(makefile来自nmslib项目,其中还有很多编译选项不明白)
    • 编译好不同版本的faiss静态库文件,完成性能测试(faiss库还有待继续深入学习)
  • 使用测试环境(无法使用GPU建立索引)
    • 原因是测试环境的机器没有GPU,还一直在google错误信息,浪费时间,心塞。。。

      • 查看gpu以及类型 lspci | grep -i vga; lspci |grep -i nvidia
      • 查看nvidia显卡状态 nvidia-smi
  • 相似度
    • inner product: 越大越相似(越大夹角越小,方向越一致)
    • cosine similarity: normalized vector, inner product, -1:1,越大越相似

待补充...

faiss学习的更多相关文章

  1. Faiss学习:一

    在多个GPU上运行Faiss以及性能测试 一.Faiss的基本使用 1.1在CPU上运行 Faiss的所有算法都是围绕index展开的.不管运行搜索还是聚类,首先都要建立一个index. import ...

  2. Faiss的学习和入门文章

    可以看这里的文章: https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html https://waltyou.github.io/Faiss ...

  3. faiss索引基于数量级和内存限制的选择

    它是一个能使开发者快速搜索相似多媒体文件的算法库.而该领域一直是传统的搜索引擎的短板.借助Faiss,Facebook 在十亿级数据集上创建的最邻近搜索(nearest neighbor search ...

  4. Searching with Deep Learning 深度学习的搜索应用

    本文首发于 vivo 互联网技术微信公众号 https://mp.weixin.qq.com/s/wLMvJPXXaND9xq-XMwY2Mg作者:Eike Dehling翻译:杨振涛 本文由来自 T ...

  5. Faiss教程:索引(1)

    索引是faiss的关键知识,我们重点介绍下. 索引方法汇总 有些索引名,我就不翻译了,根据英文名去学习更准确. 索引名 类名 index_factory 主要参数 字节数/向量 精准检索 备注 精准的 ...

  6. 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理

    https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...

  7. 阿里Tree-based Deep Match(TDM) 学习笔记

    阅读文献:https://zhuanlan.zhihu.com/p/35030348 参考文献:https://www.leiphone.com/news/201803/nlG3d4sZnRvgAqg ...

  8. Youtube深度学习推荐系统论文

    https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf https://zh ...

  9. Faiss流程与原理分析

    1.Faiss简介 Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库.它包含多种搜索任意大 ...

随机推荐

  1. lua qt測試成功

    用luabind寫了一個qt的簡單binding 測試成功

  2. Qt对`vtable的未定义引用

    错误描述:Qt在linux系统编译时,遇到一个错误大致如下形式 在 xxxxx函数中 对‘vtable for xxxxx未定义的引用 网上找了很多,各种情况都有,大多数是虚函数未实现导致的, 但也有 ...

  3. centos7如何使用yum命令

    参照https://www.cnblogs.com/zhongguiyao/p/9029922.html 参照https://blog.csdn.net/shuaigexiaobo/article/d ...

  4. html5 + vue

    偶然与巧合 舞动了蝶翼 谁的心头风起 前赴而后继 万千人追寻 荒漠唯一菩提 似擦肩相遇 或擦肩而去 命运犹如险棋 无数时间线 无数可能性 终于交织向你

  5. 第一课了解SQL

    1.1 数据库基础 其实一直在使用这数据库,当你在邮箱中查询名字时,当在网站上进行搜索,在自动取款机上使用ATM卡,这些操作都是在使用数据库 1.1.1 数据库   数据库:保存有组织的数据的容器(通 ...

  6. python3基础: 元组tuple、 列表list、 字典dict、集合set。 迭代器、生成器

    一.元组: tuple Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组 tup2 = (111, 22, 33, ...

  7. mezzanine的page_menu tag(二)

    dict的特性,key可以是None >>> def f(): a=[2,3] return a #函数返回local变量 >>> a=f() >>&g ...

  8. 关于php查询mongodb限制返回字段的问题

    最近想做一个前端控制接口字段返回的一个基础方法,通过mongodb 的find($query,$field)查询来规定查询的字段,但是遇到这么一个问题: 工作代码中有两个封装方法 : /** * 查询 ...

  9. 一篇面经(BAT面试)(转)

    0. 写在之前 首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但我这三个月应该能代表很大一部分人的心路历程:从无忧无虑也无知的状态,然后遭遇挫败,跌入低谷,连续数天的黑暗,慢慢调整,逼着自 ...

  10. Spring Boot文档维护:集成Swagger2

    一.Swagger简介 在日常的工作中,我们往往需要给前端(WEB端.IOS.Android)或者第三方提供接口,这个时我们就需要提供一份详细的API说明文档.但维护一份详细的文档可不是一件简单的事情 ...