Faiss源码剖析:类结构分析
摘要:在下文中,我将尝试通过Faiss源码中各种类结构的设计来梳理Faiss中的各种概念以及它们之间的关系。 本文分享自华为云社区《Faiss源码剖析(一):类结构分析》,原文作者:HW007。 Faiss是由Facebook AI Research研发的为稠密向量提供高效相似度搜索和聚类的框架。通过其官方给出的新手指南,我们可以快速地体验Faiss的基本功能。但是,相信大多数人看完官方的新手指南后,对Faiss很多的概念还是有点模糊、无法清晰的明确这些概念之间的边界。比如说在Faiss中,Quantizer是个什么概念、其与Index之间的联系是什么;还有各种Index之间的关系又是什么等等。为此,在下文中,我将尝试通过Faiss源码中各种类结构的设计来梳理Faiss中的各种概念以及它们之间的关系。 首先奉上Faiss源码的类图全家福如下,详细的EA类图文件见附件: 图一:Faiss的类图全家福 首先,我们来看一下Faiss最主要的功能:相似度搜索。如下图所示,以图片搜索为例,所谓相似度搜索,便是在给定的一堆图片(下图中左上角的图集)中,寻找出我指定的目标(下图中左下角的巴士图片)最...


