IndexFlat原理比较简单,把add进来的原始向量,全部保存起来。

在检索时,query向量和索引中的所有的原始向量求距离

这种暴力批量的方式,性能非常差,效果是最好的。

void IndexFlat::add (idx_t n, const float *x) {xb.insert(xb.end(), x, x + n * d); ntotal += n; ///所有向量
}void IndexFlat::reset() {xb.clear();ntotal = 0;
}/*n:向量个数, x:向量值, k:返回个数, distances:返回值, labels:返回值*/
void IndexFlat::search (idx_t n, const float *x, idx_t k,float *distances, idx_t *labels) const
{// we see the distances and labels as heapsif (metric_type == METRIC_INNER_PRODUCT) {float_minheap_array_t res = { size_t(n), size_t(k), labels, distances};knn_inner_product (x, xb.data(), d, n, ntotal, &res); ///向量内积} else if (metric_type == METRIC_L2) {float_maxheap_array_t res = { size_t(n), size_t(k), labels, distances};knn_L2sqr (x, xb.data(), d, n, ntotal, &res); ///距离公式} else {float_maxheap_array_t res = {size_t(n), size_t(k), labels, distances};knn_extra_metrics (x, xb.data(), d, n, ntotal,metric_type, metric_arg,&res);}
}

faiss IndexFlat源码详解相关推荐

  1. 【Live555】live555源码详解(九):ServerMediaSession、ServerMediaSubsession、live555MediaServer

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: ServerMediaSession.ServerMediaSubsession.Dy ...

  2. 【Live555】live555源码详解系列笔记

    [Live555]liveMedia下载.配置.编译.安装.基本概念 [Live555]live555源码详解(一):BasicUsageEnvironment.UsageEnvironment [L ...

  3. 【Live555】live555源码详解(八):testRTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的testRTSPClient实现的三个类所在的位置: ourRTSPClient.StreamClient ...

  4. 【Live555】live555源码详解(七):GenericMediaServer、RTSPServer、RTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: GenericMediaServer.RTSPServer.RTSPClient 14 ...

  5. 【Live555】live555源码详解(六):FramedSource、RTPSource、RTPSink

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: FramedSource.RTPSource.RTPSink 11.FramedSou ...

  6. 【Live555】live555源码详解(五):MediaSource、MediaSink、MediaSession、MediaSubsession

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的四个类所在的位置: MediaSource.MediaSink.MediaSession.MediaSub ...

  7. 【Live555】live555源码详解(四):Medium媒体基础类

    [Live555]live555源码详解系列笔记 7.Media Medai所依赖关系图 依赖Medai关系图 Media和UsageEnvironment关联图

  8. 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet

    [Live555]live555源码详解系列笔记 3.BasicHashTable 哈希表 协作图: 3.1 BasicHashTable BasicHashTable 继承自 HashTable 重 ...

  9. 【Live555】live555源码详解(一):BasicUsageEnvironment、UsageEnvironment

    [Live555]live555源码详解系列笔记 类关系图 1.UsageEnvironment 详解 1.1 BasicUsageEnvironment BasicUsageEnvironment ...

最新文章

  1. timeout connect 10000 # default 10 second time out if a backend is not found
  2. CSP认证201509-1 数列分段[C++题解]:遍历
  3. python爬虫的硬件配置_python爬虫之redis环境简单部署
  4. Linux unshare命名的一些例子
  5. Monthly Expense POJ - 3273(二分最大值最小化)
  6. vim配置php语法高亮
  7. 美团外卖Android平台化的复用实践
  8. (priority_queue)自定义优先级
  9. 【Python3网络爬虫开发实战】1.6.1-Flask的安装
  10. 为什么promise就是微队列?setTimeOut就是宏队列?
  11. MVC模式在Java Web应用程序中的实现
  12. matlab中怎么找晶闸管,matlab中晶闸管如何连接
  13. IDEA+EmmyLua配置
  14. 【转载】网站域名备案相关流程介绍
  15. linux根文件系统 /etc/shadow文件详解
  16. 免费图片验证码识别方法,支持旋转图片识别
  17. 【入门学习四】基于 FPGA 使用 Verilog 实现串口回传通信代码及原理讲解
  18. background图片叠加_css在图片上叠加层(其他图标)
  19. vue中下载图片到本地
  20. 集群和分布式的区别,软件架构的演化过程,Apache Dubbo详解

热门文章

  1. Pytorch 中 gather 函数讲解
  2. 【C语言-学生管理系统】
  3. 微信分享带图片加如下div
  4. 师太你就从了老衲吧——完整版本
  5. 一箭穿心动画css3代码
  6. php中的stripos,php字符串函数stripos()的定义与用法
  7. 随时分享发布代码的工具——ubuntu Pastebin
  8. 生活随笔:三亚之旅感受
  9. 我是一只it小小鸟阅读笔记
  10. knox 编译 源码