百度自研高性能ANN检索引擎,开源了
作者 | 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比赛结果:
Puck开源地址:
——END——
推荐阅读
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
构建一体化云原生安全防御体系,京东云云原生安全平台重磅发布
当用户充分利用原生云能力进行应用设计、部署和运维时,云原生也面临新的安全挑战,例如镜像漏洞与投毒、编排软件漏洞、不安全配置利用、容器逃逸等。 面对这样的风险,京东云重磅发布云原生安全平台,包含资产清点、镜像安全、运行时安全、网络安全、集群安全、节点安全等安全服务,提供从镜像生成、存储到运行时的全生命周期云原生安全解决方案。 直击痛点打造一体化防护 每年的京东6.18、11.11都会面临高并发、大流量的技术挑战。通过对大规模的应用开发和系统的保障实践,京东云安全团队总结出了一套符合DevSecOps场景的一体化全生命周期云原生安全防护理念,形成了保障全生命周期的CNAPP平台——京东云原生安全平台。 该平台由一个产品提供全面能力,统一控制端、统一权限分发、统一策略配置,实现资产清点一体化、网络防护一体化、镜像容器节点应用防护一体化和基础设施安全一体化。与此同时,平台覆盖镜像构建、容器运行、应用安全、编排安全、计算资源安全、网络安全,贯穿整个生命周期。 云原生实践沉淀架构优势 目前,京东云运营着全球最大规模的Docker集群、Kubernetes集群,以及最复杂的 Vitess 集群之一...
- 下一篇
RuoYi-Cloud-Plus 发布 2.1.0 客户端授权、三方授权、传输加密、sms4j来袭
开发历程 2023年5月 开始 2.1.0 计划 历经1个月的设计与讨论 2023年6月 开始着手开发 历经2个多月的开发 特别感谢团队的小伙伴与一些热心的粉丝 参与功能开发与测试 2023年8月 开始公测 历经将近1个月的公测与修复工作(期间成功支持多位使用者生产使用) 2023年9月初 正式发布(经过多个小伙伴的生产实践 已基本可尝试生产使用) 关于1.X的说明 由于SpringBoot2.X与vue2.X均在11月底停止维护 故而咱们vue版本1.X也无法再继续更新 介于1.X的用户量特别庞大 功能也非常的稳定 计划于11月底同Boot2.X一同停止更新但还会持续维护修复bug(修复的形式为直接提交到1.X分支停止发版) 视频介绍 为了更好的让大家了解 2.1.0 作者录制了相关的视频 供大家快速了解上手 2.1.0 新功能与变更介绍: https://www.bilibili.com/video/BV1fj411y71X/ 更新日志 重大更新 [重大更新] 优化 相关代码 完成代码生成多数据源统一存储(感谢 WangBQ) [不兼容更新] 移除 原短信功能 集成更强大的 sms...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启