Facebook AI实验室开源相似性搜索库Faiss:性能高于理论峰值55%,提速8.5倍

简介:

Facebook AI实验室开源相似性搜索库Faiss:性能高于理论峰值55%,提速8.5倍

在用户日常搜索过程中,一个经常出现的问题即大多数返回的网站结果拥有完全相同或者几乎一样的信息。而应用了相似性搜索的相似引擎即可为用户返回最恰当、最合适的结果,同时隐藏或者丢弃那些重复的数据。

但是,目前相似性搜索领域需要克服的难题即它的规模和运行速度。雷锋网近日了解到,Facebook的人工智能研究团队就称已在该问题上取得了重要进展。Facebook在新发布的论文《Billion-scale similarity search with GPUs》中表示,可在GPU 上实现十亿规模级的相似性搜索,并且已开源该方法。

在处理图像或视频等复杂数据时会涉及专用数据库系统,而相似性搜索(similarity search)则可以在专用数据库系统中找寻应用。但问题是,这些复杂数据通常用高维特征表示,而且需要特定的索引结构。

因此,Facebook的研究人员就通过更好地利用 GPU的优势解决了这个问题 。尽管 GPU 擅长数据并行任务,但之前的方法要么会在并行性不高的算法(如 k-min selection)上遭遇瓶颈,要么不能有效利用内存的层次结构。

为此雷锋网了解到,他们提出一种可用于k-selection的新设计,使其能以高达性能理论峰值55% 的速度进行运算,并实现了比之前最佳的 GPU 方法快 8.5 倍的最近邻搜索。他们为以积量化(product quantization)为基础的暴力计算、近似和压缩域搜索提出优化设计,从而将其应用到不同的相似性搜索场景中。在所有这些场景中,该方法比之前的方法的最佳表现还要好,它可在 35 分钟内从 Yfcc100M 数据集的 9500 万张图像上构建一个高准确度的 k-NN 图,也可以在 12 个小时内在 4 个 Maxwell Titan X GPU 上构建一个连接了 10 亿个向量的图。

现在Facebook已将该方法(Faiss)开源,使大家能进行比较和重复利用。

概括的说,该论文的主要突破有:

  • 给出一个可在GPU上运行的k-selection算法。它可在快速寄存奇储器中运行,并且其灵活性能使它能与其他内核一起使用。对此我们给出了复杂性分析;

  • 在GPU上实现的为精确和近似的k最近邻搜索的近最优算法布局;

  • 通过一系列实验表明,在单一或多GPU配置中运行的中到大规模的最近邻搜索任务上,我们的方法大幅度优于先前技术。

Facebook AI实验室开源相似性搜索库Faiss:性能高于理论峰值55%,提速8.5倍

图片选自论文(图片6):从 Yfcc100M 数据集的 9500 万张图像上构建的高准确度 k-NN 图。第一张和最后一张图片为给定图片,算法通过计算得出两张图片之间最“和谐”的演变路径。

开源库Faiss简介

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

Faiss 包含几种相似性搜索的方法。它假定示例可以被表示为向量,并可以通过整数识别。除此之外,这些向量可以与 L2 位距或点积进行比较。与一个查询向量(query vector)相似的向量是具有最低 L2 位距或最高点积的查询向量。Faiss 还支持余弦相似性(cosine similarity),因为它属于标准化向量上的点积。

大多数方法,例如基于二元向量和紧凑量化代码的方法,仅使用向量的压缩表征,并不需要保留原始向量。这通常会降低搜索的准确性,但这些方法可在单个服务器上的主存储器中扩展到数十亿个向量。

该 GPU 实现可接受来自 CPU 或 GPU 内存的输入。在一个带有 GPU 的服务器上,其 GPU 索引可以被用作其 CPU 索引的插入替换(比如用 GpuIndexFlatL2 替代 IndexFlatL2),而且来自或发往 GPU 内存的副本可以被自动处理。

Faiss的构建

该库基本上通过 C++ 实现。它带有可选择的 GPU (该GPU通过CUDA支持)以及一个可选的 Python 接口。编译采用的是Makefile。详细信息可参见INSTALL:

https://github.com/facebookresearch/faiss/blob/master/INSTALL

Faiss的工作原理

Faiss 是围绕存储一个向量集的索引类型(index type)构建的,并且索引类型提供了一个利用 L2 和/或点积向量比较的函数,以使该函数能够在向量集中进行搜索。有些索引类型是简单的基线,如精确搜索。大多数可用的索引结构都对应以下几点权衡:

  • 搜索时间

  • 搜索质量

  • 每个索引向量使用的内存大小

  • 训练时间

  • 无监督训练对外部数据的需求

获取Faiss 完整版文档

  • 完整文档(包括一个指南)可以参阅 GitHub 的 wiki 页:

    http://github.com/facebookresearch/faiss/wiki

  • doxygen 文档提供了每个类的信息:

       http://rawgithub.com/facebookresearch/faiss/master/docs/html/annotated.html

  • 重现本研究论文的结果,可以参考基准 README

       https://github.com/facebookresearch/faiss/blob/master/benchs/README.md

相似性搜索延伸阅读

对相似性搜索不甚了解的同学,可以参看以下由雷锋网(公众号:雷锋网)整理的相似性搜索的延伸阅读。

相似性搜索的分类:

最邻近搜索(nearest neighbor search)和范围查询(range queries)是相似搜索的重要子分类,研究人员已针对这两种分类开发出多种解决方案。

相似性搜索中存在的问题也是搜索复杂对象时的固有问题。复杂对象会导致大多数技术对大范围集合的抓取能力等问题。而在相似性搜索时,大部分情况下对象都是复杂的。

相似性搜索的工作原理:

相似性搜索工具可用于识别哪些候选要素与要匹配的一个或多个输入要素最相似(或最相异)。相似性的基础是数值属性(感兴趣属性)的指定列表。如果指定了一个以上的要匹配的输入要素,相似性将基于每个感兴趣属性的平均值。输出要素类(输出要素)将包含要匹配的输入要素以及找到的所有匹配的候选要素,这些要素以相似程度排序(由最相似或最不相似参数指定)。返回的匹配数基于结果数参数的值。

相似性搜索的应用

相似性搜索在很多场景下都可以发挥它的优势,比如:

  • 人力资源经理可能想要证明其公司薪资水平的合理性。找出在城市规模、生活成本和便利设施方面相似的城市后,她便可以查看这些城市的薪资水平,从而确定它们是否与本公司的薪资水平一致。

  • 犯罪分析师希望搜索数据库以查看某罪行是否属于较重犯罪形式或有重罪趋势。

  • 课外健身计划在 A 城极其成功。计划提倡者期望找到与其计划推广的候选城市具有相似特征的其他城市。

  • 执法机构用此方法揭露毒品种植地或生产地。标识具有相似特征的地方可能有助于制定未来的搜索目标。

  • 大型零售商不仅拥有数个成功店铺,也有少数业绩不佳的店铺。找到一些具有相似人口特征和环境特征(交通便利性、知名度以及商业互补性等等)的地方有助于标识新店的最佳位置。

本文作者:夏睿

本文转自雷锋网禁止二次转载,原文链接


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
8月前
|
人工智能 自然语言处理 算法
【2025云栖大会】AI 搜索智能探索:揭秘如何让搜索“有大脑”
2025云栖大会上,阿里云高级技术专家徐光伟在云栖大会揭秘 Agentic Search 技术,涵盖低维向量模型、多模态检索、NL2SQL及DeepSearch/Research智能体系统。未来,“AI搜索已从‘信息匹配’迈向‘智能决策’,阿里云将持续通过技术创新与产品化能力,为企业构建下一代智能信息获取系统。”
1000 9
|
9月前
|
人工智能 自然语言处理 数据库
超越传统搜索:RAG如何让AI更懂你
超越传统搜索:RAG如何让AI更懂你
744 109
|
9月前
|
人工智能 自然语言处理 数据库
超越关键词搜索:RAG如何让AI真正“理解”你的问题
超越关键词搜索:RAG如何让AI真正“理解”你的问题
416 102
|
11月前
|
人工智能 自然语言处理 搜索推荐
从理论到应用:AI搜索MCP的最佳实践案例解析
本文深入探讨了如何通过 MCP 协议让大语言模型(LLM)高效调用外部工具,并结合多个实际场景展示了 MCP 在 AI 应用中的价值和未来潜力。
|
人工智能 Cloud Native 搜索推荐
【2025云栖大会】阿里云AI搜索年度发布:开启Agent时代,重构搜索新范式
2025云栖大会阿里云AI搜索专场上,发布了年度AI搜索技术与产品升级成果,推出Agentic Search架构创新与云原生引擎技术突破,实现从“信息匹配”到“智能问题解决”的跨越,支持多模态检索、百亿向量处理,助力企业降本增效,推动搜索迈向主动服务新时代。
942 0
|
8月前
|
机器学习/深度学习 人工智能 算法
用于实验室智能识别的目标检测数据集(2500张图片已划分、已标注) | AI训练适用于目标检测任务
本数据集包含2500张已标注实验室设备图片,涵盖空调、灭火器、显示器等10类常见设备,适用于YOLO等目标检测模型训练。数据多样、标注规范,支持智能巡检、设备管理与科研教学,助力AI赋能智慧实验室建设。
用于实验室智能识别的目标检测数据集(2500张图片已划分、已标注) | AI训练适用于目标检测任务
|
人工智能 开发框架 自然语言处理
企业级AI搜索解决方案:阿里云AI搜索开放平台
本文介绍了 阿里云 AI 搜索开放平台作提供丰富的 AI 搜索组件化服务,兼容主流开发框架 LangChain和 LlamaIndex,支持搜索专属大模型、百炼等大模型服务,以及 Elasticsearch、Havenask 等开源引擎。用户可灵活调用多模态数据解析、大语言模型、效果测评等数十个服务,实现智能搜索、检索增强生成(RAG)、多模态搜索等场景的搭建。
1236 0
|
人工智能 自然语言处理 文字识别
阿里云 AI 搜索开放平台新增:服务开发能力
阿里云 AI 搜索开放平台新发布:服务开发能,可通过集成 dsw 能力并新增 notebook 功能,进一步提升用户编排效率。
572 0
|
8月前
|
人工智能 自然语言处理 监控
2025年,开启GEO优化新时代,为企业抢占AI搜索先机
AI的不断重塑传统的信息入口之际,用户的搜索行为也从单一的百度、抖音的简单的查找答案的模式,逐渐转向了对DeepSeek、豆包、文心一言等一系列的AI对话平台的更加深入的探索和体验。DeepSeek的不断迭代优化同时,目前其月活跃的用户已破1.6亿,全网的AI用户规模也已超过6亿,这无疑为其下一阶段的迅猛发展提供了坚实的基础和广泛的市场空间。

热门文章

最新文章