百度自研高性能ANN检索引擎,开源了

news2024/10/7 12:17:18

在这里插入图片描述

作者 | Puck项目组

导读

Puck是百度自研的开源ANN检索引擎。Puck开源项目包含两种百度自研的检索算法,以高召回、高准确、高吞吐为目标,适用于多种数据规模和场景。随着业务发展不断的优化和迭代,进行充分的技术开发和测试,确保了技术的可靠性和成熟度。该项目于2019年厂内开源,广泛应用于内部多条产品线,支撑万亿级数据和海量请求。在benchmark上显示,Puck在千万、亿、十亿等多个数据集上,性能优势明显。

全文2682字,预计阅读时间7分钟。

ANN全称近似最近邻检索(Approximate Nearest Neighbor),目标是从全量向量数据中寻找距离最近的TopK个向量,同时需要平衡检索效果和检索成本。自2012年AlexNet出现之后,深度学习在图像领域大放异彩,2017年 transformer的推出重构了NLP领域,基于语义的检索颠覆了传统检索领域,使得ANN技术广泛应用于搜索、推荐等多个场景,成为互联网的基础技术之一。

做为研究热点,无论学术界还是工业界,近些年都出现了许多ANN算法的创新研究和应用,包括基于分区和基于图形的索引策略、混合RAM和SSD存储以高效存储和处理超过RAM大小的大型数据集、使用加速器硬件、利用机器学习来降低原始矢量的维度,以及Spotify的ANNOY、Google的ScaNN、Facebook的Faiss和HNSW等。

01 Puck 是什么?

Puck是百度自研的高性能ANN检索引擎,名称取自经典MOBA游戏DOTA中的智力英雄-Puck,是飘逸、灵动的代表。

我们很早即投入自研近似最近邻检索算法(ANN)的研究,2017年Puck完成首次上线,2019年底内部开源,目前已广泛应用于百度内部多条产品线,随着业务发展不断的优化和迭代,进行了充分的技术研发和测试,确保了技术的领先性和成熟度。

Puck开源项目包含两种百度自研的检索算法Puck&Tinker,以高召回、高准确、高吞吐为目标,在大中小数据集上都有优异表现。在benchmark的千万、亿、十亿等多个数据集上,Puck性能优势明显,均显著超过竞品。在2021年底Nerulps举办的全球首届向量检索大赛BIGANN比赛中,Puck参加的四个项目均获得第一。

02 Puck 优势有哪些?

1、易用性:提供简单易用的API接入,尽量少的暴露参数,大部分参数使用默认即可达到良好性能。

**2、扩展性:**采用完全自研的索引结构,支持多种功能扩展,适应多种场景,项目模块划分合理,便于改造优化,可方便用户接口自行添加。

3、高性能:在benchmark的千万、亿、十亿等多个数据集上,Puck性能优势明显,均显著超过竞品。

4、可靠性:经过多年在实际大规模场景下的验证打磨,广泛应用于百度内部包括搜索、推荐等三十余条产品线,支撑万亿级索引数据和海量检索请求。

03 Puck 性能优势

Puck 在开源前,曾参加过首届国际向量检索大赛BigANN。首届国际向量检索大赛BigANN是由人工智能领域全球顶级学术会议NeurIPS发起,由微软、facebook等公司协办的全球最高水平的赛事,旨在提升大规模ANN的研究创新和生产环境中的落地应用。

图片

虽是首届大赛,但因NeurIPS的极高知名度和权威性,吸引了众多知名企业和顶尖大学的同台竞技。本届比赛已于2021年12月NeurlPS’21会议期间公布结果,Puck在参赛的四个数据集中均排名第一 。

除此之外,Puck持续地优化和迭代,以保持其在变化的业务环境中提供高效的检索性能。除了十亿数据集以外,我们构建了亿级&千万级benchmark,创建了更符合真实工业生产环境的benchmark机制和环境,Puck&Tinker在多个数据集上性能优势明显。

BIGANN-10M

图片

图片

△deep-10M和BIGANN-10M数据集上,召回率 VS QPS的性能图

更详细benchmark见:

https://github.com/baidu/puck/tree/main/ann-benchmarks

04 Puck 功能拓展

为了让 Puck 更加亲民,我们还做了多个功能的拓展,目前可以实现:

1、实时插入:支持无锁结构的实时插入,做到数据的实时更新。

2、条件查询:支持检索过程中的条件查询,从底层索引检索过程中就过滤掉不符合要求的结果,解决多路召回归并经常遇到的截断问题,更好满足组合检索的要求。

3、分布式建库:索引的构建过程支持分布式扩展,全量索引可以通过map-reduce一起建库,无需按分片build,大大加快和简化建库流程。

4、自适应参数:ANN方法检索参数众多,应用起来有不小门槛,不了解技术细节的用户并不容易找到最优参数,Puck提供参数自适应功能,在大部分情况下使用默认参数即可得到很好效果 。

05 Puck 在业务中的使用

在开源前,Puck在多个业务中已经进行了大规模的有效验证。

Puck于2017年初启动研发,2017年底首次上线,2019年百度内部开源,持续打磨至今,目前广泛应用于百度内部包括搜索、推荐等三十余条产品线,支撑万亿级索引数据和海量检索请求。

图片

△ANN检索在业务应用中的位置

Puck 开源后, 鼓励开发者之间的合作和共享,同时支持大家进行知识的分享和传播,打造活跃而广泛的生态,促进项目的高速、可持续发展,从而推动技术的创新。

Puck遵循 Apache 2.0 开源协议,尊重和保护原作者的创作权,开放使用包括商业化及二次开源。

希望大家将好的使用经验反馈给我们,如有问题可以加入【QQ群:913964818】随时咨询。

同时,欢迎大家成为社区贡献者,积极参与开源贡献,解决自身诉求、提升个人成长的同时得到正向激励。

在你因为参与开源而得到回报的时候,你也在影响着开源领域的发展,促进开源领域向更加广阔的方向奔涌而去。

BigANN比赛详情:

https://big-ann-benchmarks.com/neurips21.html

BigANN比赛结果:

https://github.com/harsha-simhadri/big-ann-benchmarks/blob/main/neurips21/t1_t2/README.md#results-for-t1

Puck开源地址:

https://github.com/baidu/puck

——END——

推荐阅读

存储方案作为产品——Midgard探索

百度垂类离线计算系统发展历程

度加剪辑App的MMKV应用优化实践

百度工程师浅析解码策略

百度工程师浅析强化学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入剖析计算机网络和操作系统:面试必备知识解析

深入剖析计算机网络和操作系统的核心概念和面试题,帮助大家全面理解和掌握这两个重要领域的关键知识,为面试做好准备。 计算机网络 什么是TCP拥塞控制?它的目的是什么? TCP拥塞控制是一种机制,用于在网络中控制数据流…

简述电子企业MES管理系统解决方案的实施策略

引言:在电子制造企业中,随着产品种类的增多和订单数量的增长,传统的手工管理方式已经无法满足企业的生产需求。为了提高生产效率,降低成本,提高订单的履行速度和准确性,电子企业需要实施MES管理系统。本文将…

【C++】STL-函数对象 + 谓词

1.函数对象使用 #include <iostream> using namespace std;//STL-函数对象&#xff08;仿函数&#xff09;class MyAdd { public:int operator()(int v1, int v2){return v1 v2;} }; //1、函数对象在使用时&#xff0c;可以像普通函数那用调用&#xff0c;可以有参数&am…

NineData 中标移动云数据库传输项目

导读近日&#xff0c;玖章算术 NineData 智能数据管理平台成功中标《2023 年移动云数据库传输服务软件项目》&#xff0c;中标金额为 406 万。这标志着玖章算术 NineData 平台已成功落地顶级运营商行业&#xff0c;并在数据管理方面实现了大规模应用实践。 NineData 中标 2023 …

2023年Python依然是霸主?十大企业编程语言揭秘!

计算机编程语言是现代企业和科技领域不可或缺的一部分&#xff0c;它们为程序员提供了与计算机进行交流的工具。就像人类有多种交流语言一样&#xff0c;计算机编程语言也多种多样&#xff0c;每种语言都有其独特的特点和用途。随着数字化时代的来临&#xff0c;企业在选择编程…

ChatGPT AIGC 一键总结SQL优化所有知识点

SQL优化一直是程序员非常关注的内容,使用ChatGPT AIGC结合思维导图进行总结SQL优化的所有知识点内容。 非常简单实用的操作,就得到了如何进行SQL优化的所有细节。 更多内容见: AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Off…

Cyber RT学习---5.Cyber RT通信机制解析与实践

5.Cyber RT通信机制解析与实践 5.1 通信机制简介 5.1.1 话题通信 模式&#xff1a; 以发布订阅的方式实现不同节点之间数据交互的通信模式。 如图1-1所示&#xff0c;Listener-Talker通信首先创建了两个Node&#xff0c;分别是Talker Node和 Listener Node。 每个Node实例化…

精通期权短线交易的技巧,从此成为投资高手!

投资期权最常见的两种交易方式就是长线交易和短线交易&#xff0c;每一种交易方式都有自己的特点和优势&#xff0c;适合不同类型和目的的投资者。下面给大家分享一些精通期权短线交易的技巧&#xff0c;从此成为投资高手&#xff01;希望能帮到大家。本文来自&#xff1a;期权…

中国人保为天能电力器具承保产品责任险,为消费者保驾护航!

战略达成&#xff0c;保驾护航 2023年7月&#xff0c;河北天能电力器具制造有限公司与世界五百强之一的综合性保险公司——中国人民财产保险股份有限公司达成战略合作&#xff0c;签署产品安全责任险保单&#xff0c;携手为消费者保驾护航&#xff01; 产品质量是当下企业生存发…

Unity 中 Pivot 与 Center,重置模型物体的轴心为中心

文章目录 1. 概念2. 动态计算正确的模型中心点Center3. 重置模型物体的轴心为中心 1. 概念 在 Unity 面板的左上角有两个按钮&#xff0c;在本文中主要研究 Pivot/Center Pivot&#xff08;轴心&#xff09;&#xff1a;模型的真实位置&#xff0c;是由建模软件设定的可在模…

mysql trace

optimizer_trace 它可以跟踪优化器做出的各种决策&#xff08;比如访问表的方法、各种开销计算、各种转换等&#xff09;&#xff0c;并将跟踪结果记录到 information_schema 数据库中的 optimizer_trace 表中。 mysql 默认是关闭 追踪的 开启、并设置格式为 josn,同时设置trac…

光环云出席Enjoy出海AIGC主题研讨会,助力企业迎接AI时代机遇与挑战

AIGC的崛起&#xff0c;为2023年的全球化突围之路拓展了想象空间。 从年初至今&#xff0c;OpenAI和ChatGPT高举高打&#xff0c;很大程度上起到了教育市场的作用&#xff1b;此外&#xff0c;Meta推出大模型&#xff0c;Snapchat、Soul、字节等大厂或上线或内测聊天机器人&…

正中优配:纺织服装行业景气向上 多因素支撑稀土价格上涨

昨日&#xff0c;沪深两市股指盘中放量拉升&#xff0c;沪指、深成指涨超1%&#xff0c;上证50指数涨近2%。截至收盘&#xff0c;沪指涨1.4%报3177.06点&#xff0c;深成指涨1.41%报10611.74点&#xff0c;创业板指涨0.85%报2118.03点&#xff0c;上证50指数涨1.79%&#xff1b…

递归算法学习——有效的数独,解数独

一&#xff0c;有效的数独 1.题意 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#x…

【LeetCode】83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素&#xff08;简单&#xff09; 方法&#xff1a;一次遍历 思路 由于给定的链表是排好序的&#xff0c;因此重复的元素在链表中出现的位置是连续的&#xff0c;因此我们只需要对链表进行一次遍历&#xff0c;就可以删除重复的元素。 从指针 cur 指…

MATLAB旋转动图的绘制

MATLAB旋转动图的绘制 文章目录 MATLAB旋转动图的绘制1、动图效果2、matlab代码 利用matlab实现三维旋转动图的绘制。 1、动图效果 2、matlab代码 close all clear clcf(x,y,z)(x.^2 (9./4).*y.^2 z.^2 - 1).^3 - x.^2.*z.^3 - (9./80).*y.^2.*z.^3; [x,y,z]meshgrid(linspac…

STM32 SPI对存储芯片发送写是能命令后一直忙等待

我采用CUBE配置的SPI外设&#xff0c;对NSS引脚选择了硬件输出&#xff0c;这种方式对读取命令没有影响&#xff0c;但是对写命令有&#xff0c;当我发送写是能命令后&#xff0c;读取状态寄存器的值一直都是忙&#xff0c;我猜测这可能是硬件控制NSS引脚后&#xff0c;对于HAL…

Java迷宫问题

迷宫问题&#xff1a; 问题&#xff1a; /*迷宫问题 &#xff1a; 让小球从左上角开始 到达右上角 绕过障碍物求最短路径这里*号是障碍物的意思* * * * * * ** ** * ** * * ** ** ** ** * * * * * *思路 &#xff…

Linux安装JDK并配置环境变量

1.下载jdk 可以去官网直接下载JDK&#xff0c;下载时选择好需要的版本和操作系统位数 2.安装jdk &#xff08;1&#xff09;选择合适的位置新建安装目录 mkdir -p /home/local/java&#xff08;2&#xff09;进入目录 cd /home/local/java&#xff08;3&#xff09;上传j…

2023年9月CDGA/CDGP数据治理认证考试报名,当然弘博创新

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…