faiss IndexFlat源码详解
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源码详解相关推荐
- 【Live555】live555源码详解(九):ServerMediaSession、ServerMediaSubsession、live555MediaServer
[Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: ServerMediaSession.ServerMediaSubsession.Dy ...
- 【Live555】live555源码详解系列笔记
[Live555]liveMedia下载.配置.编译.安装.基本概念 [Live555]live555源码详解(一):BasicUsageEnvironment.UsageEnvironment [L ...
- 【Live555】live555源码详解(八):testRTSPClient
[Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的testRTSPClient实现的三个类所在的位置: ourRTSPClient.StreamClient ...
- 【Live555】live555源码详解(七):GenericMediaServer、RTSPServer、RTSPClient
[Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: GenericMediaServer.RTSPServer.RTSPClient 14 ...
- 【Live555】live555源码详解(六):FramedSource、RTPSource、RTPSink
[Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: FramedSource.RTPSource.RTPSink 11.FramedSou ...
- 【Live555】live555源码详解(五):MediaSource、MediaSink、MediaSession、MediaSubsession
[Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的四个类所在的位置: MediaSource.MediaSink.MediaSession.MediaSub ...
- 【Live555】live555源码详解(四):Medium媒体基础类
[Live555]live555源码详解系列笔记 7.Media Medai所依赖关系图 依赖Medai关系图 Media和UsageEnvironment关联图
- 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
[Live555]live555源码详解系列笔记 3.BasicHashTable 哈希表 协作图: 3.1 BasicHashTable BasicHashTable 继承自 HashTable 重 ...
- 【Live555】live555源码详解(一):BasicUsageEnvironment、UsageEnvironment
[Live555]live555源码详解系列笔记 类关系图 1.UsageEnvironment 详解 1.1 BasicUsageEnvironment BasicUsageEnvironment ...
最新文章
- timeout connect 10000 # default 10 second time out if a backend is not found
- CSP认证201509-1	数列分段[C++题解]:遍历
- python爬虫的硬件配置_python爬虫之redis环境简单部署
- Linux unshare命名的一些例子
- Monthly Expense POJ - 3273(二分最大值最小化)
- vim配置php语法高亮
- 美团外卖Android平台化的复用实践
- (priority_queue)自定义优先级
- 【Python3网络爬虫开发实战】1.6.1-Flask的安装
- 为什么promise就是微队列?setTimeOut就是宏队列?
- MVC模式在Java Web应用程序中的实现
- matlab中怎么找晶闸管,matlab中晶闸管如何连接
- IDEA+EmmyLua配置
- 【转载】网站域名备案相关流程介绍
- linux根文件系统 /etc/shadow文件详解
- 免费图片验证码识别方法,支持旋转图片识别
- 【入门学习四】基于 FPGA 使用 Verilog 实现串口回传通信代码及原理讲解
- background图片叠加_css在图片上叠加层(其他图标)
- vue中下载图片到本地
- 集群和分布式的区别,软件架构的演化过程,Apache Dubbo详解