facebook faiss的安装测试

Faiss 是由 Facebook AI Research(FAIR)开发的一个用于有效的相似性搜索(similarity search)和稠密矢量聚类(clustering of dense vectors)的库。它包含了在任何大小的向量集合里进行搜索的算法,向量集合的大小甚至可以达到装不进 RAM。它还包含了用于评估和参数调优的支持代码。Faiss 是用 C ++编写的,带有 Python / numpy 的完整包装。其中最有用的一些算法是在 GPU 上实现的。


针对这个开源的好东西,非常想测试一下,于是从开源地址:https://github.com/facebookresearch/faiss下载了源码进行查看和编译

主要安装过程参照githubfaiss的安装文档,这里记录一些安装时遇到的问题。

 

1.

Faiss is compiled via a Makefile. The system-dependent configuration
of the Makefile is in an include file, makefile.inc. The variables in
makefile.inc must be set by hand.


在faiss-master根目录下复制修改后的makefile.inc文件,其中cuda使用的是8.0版本makefile.inc must be set by hand.


2.To check that the link flags are correct, and verify whether the

implementation uses 32 or 64 bit integers, you can

make tests/test_blas


and run执行test_blas是会打印出error,但是这个程序中直接打印出来的,并没有进行条件判断,因此运行是成功的./tests/test_blas


3. Once the proper BLAS flags are set, the library should compile

smoothly by running
make
A basic usage example is in tests/demo_ivfpq_indexing
tests/demo_ivfpq_indexing


其中对索引在1234-1242的9个向量搜索其最近邻邻居,最近的应该是它本身,distance应该为0,但是由于量化误差,导致距离不为0.

 

4.

Real-life test
--------------

The following script extends the demo_sift1M test to several types of
indexes:
export PYTHONPATH=. # needed because the script is in a subdirectory
python python/demo_auto_tune.py
执行高亮语句前,需要在faiss-master的根目录下创建tmp目录,不然在最终的写入时会报错。写入tmp中的图片如下:
python python/demo_auto_tune.py



再看了下FAISS原理,Faiss 是围绕一种存储了一个向量集的索引类型(index type)而构建的,并且提供了一个使用 L2 和/或点积向量比较在其中进行搜索的函数。一些索引类型是简单的基线,比如精准搜索。大部分可用的索引结构都对应了与以下方面的权衡:

  • 搜索时间

  • 搜索质量

  • 每个索引向量所用的内存

  • 训练时间

  • 无监督学习时对外部数据的需求


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Facebook提供了JavaScript SDK(Software Development Kit)来帮助开发者在其网站或应用中集成社交功能,包括发送通知、评论和分享。标准事件代码主要是用来跟踪用户的交互,例如点击、点赞、评论等,这对于分析用户行为和优化用户体验非常重要。 **Facebook标准事件代码安装教程**: 1. **包含Facebook SDK**: 首先,你需要在你的项目中引入Facebook的JS库,通常通过CDN链接或者下载到本地服务器。例如,你可以使用以下代码在HTML中引入: ```html <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v13.0"></script> ``` 2. **初始化Facebook SDK**: 在页面加载完成后,你需要初始化SDK,通常会用到`FB.init()`函数,提供你的App ID以及一些配置选项: ```javascript window.fbAsyncInit = function() { FB.init({ appId: 'your_app_id', // 替换为你的Facebook App ID cookie: true, // 是否使用Cookie存储访问权限 xfbml: true, // 是否启用XFBML标记 version: 'v13.0' // SDK版本 }); }; (function(d, s, id) { var js, fjs = d.getElementsByTagName(s); if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = 'https://connect.facebook.net/en_US/sdk.js'; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); ``` 3. **触发事件并发送数据**: 当用户执行特定操作时,比如点击按钮,你可以创建一个函数来触发Facebook事件,例如`FB.Event.subscribe('edge.create')`。这会记录用户点赞的行为: ```javascript function trackLikeEvent() { FB.Event.subscribe('edge.create', function(response) { FB.api('/me/likes', 'get', { source: 'your_event_trigger' }, function(response) { // 在这里处理响应数据并发送到服务器 }); }); } // 在按钮点击或其他触发点调用此函数 document.getElementById('like-button').addEventListener('click', trackLikeEvent); ``` 4. **发送事件到Facebook Insights**: 为了让Facebook分析工具能够收集这些事件,你需要确保你在服务器端设置好了事件追踪,并且在`trackLikeEvent`中的`FB.api`调用后发送数据到服务器。 **相关问题--:** 1. 如何在不使用Facebook的JS SDK时手动发送事件? 2. Facebook Events API有哪些常用的事件类型? 3. 如何处理用户的隐私设置影响事件追踪?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值