百度自研高性能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见:

github.com/baidu/puck/...

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比赛详情:

big-ann-benchmarks.com/neurips21.h...

BigANN比赛结果:

github.com/harsha-simh...

Puck开源地址:

github.com/baidu/puck

------END------

推荐阅读

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

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

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

百度工程师浅析解码策略

百度工程师浅析强化学

相关推荐
鼎道开发者联盟1 小时前
2025中国AI开源生态报告发布,鼎道智联助力产业高质量发展
人工智能·开源·gui
大厂技术总监下海1 小时前
Rust的“一发逆转弹”:Dioxus 如何用一套代码横扫 Web、桌面、移动与后端?
前端·rust·开源
木风小助理4 小时前
Elasticsearch生产环境最佳实践指南
大数据·elasticsearch·搜索引擎
DisonTangor4 小时前
阿里Qwen开源Qwen3-VL-Embedding 和 Qwen3-VL-Reranker
人工智能·搜索引擎·开源·aigc·embedding
搬砖的kk6 小时前
Cordova 适配鸿蒙系统(OpenHarmony) 全解析:技术方案、环境搭建与实战开发
华为·开源·harmonyos
猫头虎6 小时前
2026最新|GitHub 启用双因素身份验证 2FA 教程:TOTP.app 一键生成动态验证码(新手小白图文实操)
git·开源·gitlab·github·开源软件·开源协议·gitcode
REDcker6 小时前
Mach3、Mach4与开源数控软件对比分析
开源·加工·数控·机床·mach3·mach4·数控加工
java_logo6 小时前
Dify 开源 LLM 应用开发平台企业级 Docker Compose 部署手册
docker·容器·开源·dify部署·dify部署文档·dify部署方案·dify部署教程
_小苔藓_6 小时前
混合Token与LoRA结合Qwen3-VL高效微调(代码开源)
深度学习·开源·大模型·微调·多模态
武汉唯众智创6 小时前
开源技术应用专业全场景实训平台,构建实训新生态
开源·开源技术·开源技术实训室·开源技术实验室·开源技术实训平台