对话InfoQ,聊聊百度开源高性能检索引擎 Puck

news2025/7/19 11:32:31

近日,百度宣布在 Apache 2.0 协议下开源自研检索引擎 Puck,这也是国内首个适用于超大规模数据集的开源向量检索引擎。向量检索算法在个性化推荐系统、多模态检索、自然语言处理等应用场景中都发挥着重要作用,特别是在处理大规模数据和高维特征数据时。

名称“Puck”取自经典 MOBA 游戏 DOTA 中的智力英雄 Puck,象征着飘逸和灵动。这个项目经过多年在百度内部的精心打磨,而且在 2021 年底 Nerulps 举办的全球首届向量检索大赛 BIGANN 比赛中,Puck 参与的四个项目均获得第一名。InfoQ 采访了百度搜索内容技术部主任架构师 Ben,以了解该项目的发展历程和核心优势。

开源地址:https://github.com/baidu/puck

InfoQ:是否方便介绍一下您的工作经历,以及目前的主要职责?

Ben:我从毕业即加入百度,最初在移动搜索部门,负责基础检索和相关性方面工作,经历了移动高速发展的过程。之后作为创始成员协助组建了多模搜索部负责视觉搜索,属于百度最早一批进入 AI 领域的员工。目前在搜索内容技术部,负责内容相关技术,包括内容获取、内容理解、内容计算、内容加工与生成等。

InfoQ:您从什么时候开始关注开源?是什么让您决定 Puck 要开源?选择这个时候开源的原因是什么?

Ben:我们很早就在思考开源,看到 FAISS(由 Facebook AI Research 开发的大规模向量检索库)开源之后获得了广泛的业界关注和应用,我们也希望开源 Puck 后,可以促进社区的发展,并借助社区的力量提高代码质量,加速技术创新,更好的适应市场需求。自研开源市场变得越来越成熟和规范,可能会带来更多的商业模式和合作机会。

对外开源,我们其实筹备了很久,做了大量的准备工作。大模型的爆火,导致向量检索技术获得广泛关注,我们认为,这是一个合适的开源契机。

InfoQ:您能具体讲一下 Puck 在百度的发展史,以及从您角度来看,它对于百度搜索的价值主要体现在哪里?

Ben:Puck 的想法最早来自视觉搜索业务,我们需要一个能支撑数百亿相似图片检索的 ANN 引擎,同时要能支持高吞吐、低延时、高准确、低内存、高灵活性等要求,当时业内没有能满足我们需要的引擎,于是启动了自研的过程。

2017 年 Puck 完成首次上线,在百亿图片库上成本和效果都取得了极其显著的提升;之后随着 Transformer 模型在 nlp 领域的大放异彩,基于 embedding 的语义检索越来越凸现价值,Puck 的应用也越来越广,2019 年 Puck 在百度内部开源,支撑的业务数快速增长,目前已广泛应用于百度搜索、推荐、网盘、知识图谱等内部多条产品线,支持规模突破万亿。目前 ANN 已经成为互联网底层基础技术之一,是 AI 时代的基石,搜索最重要的支撑技术之一。

InfoQ:期间经过了几次优化,优化重点是什么,您能具体讲述一下吗?

Ben:到今天 Puck 已经是一个打磨多年的产品,中间的优化数不胜数,大体来说可以分成以下几个阶段:

  1. 2016 年到 2019 年,打磨核心算法和实现,重点在基础性能优化上,不断调整细节,在自有场景上做极致优化,Puck 的核心框架在这一时期建立并沿用至今。

  2. 2019 年到 2021 年,以公司内开源为标志,随着业务接入的增多,Puck 需要适配各种各样的应用场景和诉求,易用性、扩展性、功能多样性成为主要目标,像高性能的实时插入、多条件检索、分布式建库等等功能都是在这一时期完成。

  3. 2021 年到 2022 年,以大规模内容关系计算应用为契机,Puck 重点优化在单实例超大规模数据下的性能,通过大尺度量化和索引结构的优化在十亿规模数据集上大幅提升性能降低成本。以参加全球首届向量检索大赛 BIGANN 并获得四项第一为标志,证明了 Puck 在这部分的竞争优势。

  4. 2022 年至今,核心算法创新,提出了新的算法来适配不同数据场景,新增更多的 feature,同时完善配套设施,做外部开源准备。

这只是一个粗略的划分。实际上,Puck 的优化更多地由许多微小的优化点组成。我们在讨论中提出了大量有趣的想法,进行了大量的实验和尝试。总的来说,十个想法中最终只有一到两个能成为正式的功能。这些优化最终汇聚在一起,形成了我们今天看到的 Puck。

InfoQ:您能否详细介绍下 Puck 的核心优势和应用场景?

Ben:Puck 开源项目包含了两种百度自研的检索算法和一系列的附加功能,核心优势首先就是性能,经过多年的打磨和调优,在 benchmark 的千万、亿、十亿等多个数据集上,Puck 性能优势明显,均显著超过竞品,在 2021 年底 Nerulps 举办的全球首届向量检索大赛 BIGANN 比赛中,Puck 参加的四个项目均获得第一。

其次,易用性上,Puck 提供了一系列的适用于各种场景的功能,比如,同时提供简单易用的 API 接入,尽量少的暴露参数,大部分参数使用默认设置即可达到良好性能。

最后,Puck 是一个久经考验的引擎,经过多年在实际大规模场景下的验证打磨,广泛应用于百度内部包括搜索、推荐等三十余条产品线,支撑万亿级索引数据和海量检索请求,可靠性上有非常高的保障。

Puck 引擎这次开源了两种检索算法 Puck 和 Tinker,分别更适用于超大规模数据集和中小规模数据集,几乎可以覆盖绝大部分的检索应用场景。目前已广泛应用于百度内部搜索、推荐等多条产品线,覆盖数据规模从百万至万亿。

InfoQ:面对 AI 新浪潮,大模型在业内已越来越卷,在您看来未来开源市场会不会更卷?

Ben:AI 大模型的出现确实使得业内竞争更加激烈,但这并不是坏事。首先,大模型的发展推动了 AI 技术的进步,提高了 AI 的性能和效率。其次,大模型为业内带来了更多的创新空间和可能性,推动了开源市场的发展。

以后业内在自研开源市场的竞争会更加激烈,但这并不意味着会更卷,相反是带来了无限的可能。因为开源市场的特性是开放和共享,企业和个人可以通过开源市场获取最新的 AI 技术和模型,而无需自己从零开始开发。这有助于整个行业降低研发成本和提高研发效率。

此外,开源市场也是技术交流和创新的平台,业内人士可以在这里分享自己的研究成果,吸收他人的经验和知识,共同推动 AI 技术的发展。所以,虽然竞争会更激烈,但只要我们能适应这种趋势,积极参与交流和创新,就可以从中获益。

InfoQ:那您认为互联网公司开源项目的未来发展趋势是什么样的?会往哪方面发展?

Ben

  1. 深度专业化:随着技术的细分,开源项目可能会更加专业化和深度化,解决更具体、更深入的问题,会更多永远专注于某一特定问题的开源项目,Puck 就是其中之一。

  2. 多元化:互联网公司自研的开源项目可能会涉及更多的行业和领域,实现技术的跨界整合,形成各种行业解决方案的开源项目,这种跨界融合将有助于推动技术在各行业的广泛应用。

  3. 更强的实用性:未来的开源项目可能会更注重实战和应用,而不仅仅是理论研究。开源项目会提供更多实用的工具和框架,帮助开发者更好地将理论应用到实际工作中。

  4. 注重数据和算法的开源:随着数据和算法的重要性日益凸显,未来可能会有更多的数据和算法开源,以加速 AI 等领域的发展。

这些变化都将为推动科技发展和解决实际问题提供更强大的动力。

InfoQ:您提到 Puck 在内部已广泛应用,有哪些大家熟悉的产品或场景吗?能否举个例子。

Ben:大家熟悉的百度搜索和手机百度内的信息流推荐都有使用 Puck 技术。

InfoQ:请问开源后是否收到了社区的一些反馈,对您有怎样的启发?

Ben:自从 Puck 开源以来,我们已经收到了不少来自社区的反馈和建议。这些反馈和建议对我们来说是非常宝贵的,它们不仅帮助我们发现了 Puck 的一些问题和不足,也为我们提供了改进和优化的方向。

对我个人来说,这些反馈启发我认识到,虽然我们在内部使用 Puck 有着丰富的经验,但在面对更广泛的用户群体时,我们还需要不断学习和提高。每个用户的需求都可能不同,我们需要更加深入地理解用户的需求,才能更好地优化 Puck,使其更加适应不同的使用场景。

同时,这些反馈也让我深切地感受到了开源社区的活力和创新精神。许多社区成员不仅提出了问题,还积极地提供了解决方案,这种积极参与和贡献的精神让我深感鼓舞。我希望在未来,我们能够更紧密地与社区合作,共同推动 Puck 的发展。

InfoQ:Puck 对您个人的意义,您对 Puck 的未来有什么期待?

Ben:Puck 是团队长时间研究和努力的成果,作为 Puck 的负责人,我对这个项目有着深深的热爱和执着,对我个人来说,它不仅仅是一个检索引擎,而是代表团队付出的心血和智慧的结晶,它是我们对技术的追求,对创新的执着,也是我们对未来的期待和憧憬,Puck 的每一次升级和优化都记录着我们的成长和进步。

对于 Puck 的未来,我有着很高的期待。首先,我希望 Puck 能在开发者社区中得到广泛的使用,同时也能得到社区的反馈,不断优化和改进。我期待看到更多的人参与到 Puck 的开发和使用中来,通过大家的共同努力,让 Puck 成为 AI 领域有影响力的一款工具。其次,我希望 Puck 能够持续创新,不断优化,保持其技术领先地位,不仅能适应现有的技术需求,还能预见并引领未来的技术趋势。最后,我希望 Puck 能在更多实际应用中发挥出它的价值,为人工智能在各个行业的应用提供强大支撑,推动科技的发展。

采访嘉宾简介

Ben,百度搜索内容技术部主任架构师,负责多模态内容理解、超大规模内容关系计算、内容加工与生成、模型优化等方向。

欢迎加入Punk技术交流群:913964818

部门多个职位火热招聘,ANN检索工程师、模型优化工程师、分布式计算研发工程师等,欢迎愿意拥抱挑战,具备优秀分析问题、解决问题能力的人才加入~

招聘邮箱:tianyakun@baidu.com

——END——

推荐阅读

浅谈搜索展现层场景化技术-tanGo实践

初识搜索:百度搜索产品经理的第一课

智能问答技术在百度搜索中的应用

通过Python脚本支持OC代码重构实践(一):模块调用关系分析

CVPR2023优秀论文 | AIGC伪造图像鉴别算法泛化性缺失问题分析

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

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

相关文章

MyBatis无法读取XML中的Method的乌龙事件

事件背景 同事反馈,相同的jar包,在多人本地的电脑、多台服务器中,都是可以正常启动的,只有在其中一台服务器,简称它为A,无法启动,因为启动后的初始化操作中有一个调用mybatis方法的操作&#x…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇二)

python实现MC协议(SLMP 3E帧)的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模…

聊聊无源滤波器与有源滤波器的概念、区别与应用

随着电子技术的迅速发展,电子设备得到广泛的应用,然而电磁环境污染日趋严重,已成为当今主要公害之一。在很多领域里,电磁兼容性已成为电气和电子产品必须有的技术指标或性能评价的依据,通过使用电源滤波器来过滤掉电源…

Debug技巧-不启用前端访问后端

在日常开发中,我们经常会遇到各种问题需要调试,前后端都启动需要耗费一定的时间和内存,方便起见,可以直接用抓包数据访问后端,这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求,在控制…

LiveNVR监控流媒体Onvif/RTSP功能-支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像

LiveNVR支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像 1、流媒体服务说明2、支持海康SDK接入3、查看设备录像3.1、时间轴模式3.2、列表模式 4、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、流媒体服务说明 LiveNVR可接入传统监控行业里面的高清网络摄像…

黑马 小兔鲜儿 uniapp 小程序开发- 微信登录用户模块- 06-07

黑马 小兔鲜儿 uniapp 小程序开发- 商品详情模块- day05-CSDN博客 小兔鲜儿 - 微信登录-06 涉及知识点:微信授权登录,文件上传,Store 状态管理等。 微信登录 微信小程序的开放能力,允许开发者获取微信用户的基本信息&#xff…

回馈式电子负载核心组成

回馈式电子负载是一种用于模拟负载电流和电压的测试设备。它由以下几个核心组成部分构成: 控制电路:控制电路是负载的核心部分,它负责接收输入的控制信号,并根据信号的要求来调整负载的工作状态。控制电路通常包括一个微处理器或者…

自主创建抖音商城小程序源码系统 带完整搭建教程

随着抖音平台的日益普及,越来越多的商家和用户选择在抖音上开展业务。抖音作为一款短视频社交平台,拥有庞大的用户群体和广阔的市场前景。今天罗峰就来给大家介绍一款抖音商城小程序源码系统,帮助用户快速创建自己的抖音商城,从而…

Revo Uninstaller Pro:终极卸载工具,彻底清除电脑痕迹

你是否曾为无法彻底卸载软件,残留大量无用文件而感到烦恼?是否曾因恶意软件难以清除,导致电脑运行缓慢?这些问题,Revo Uninstaller Pro都能帮你解决。 Revo Uninstaller Pro是一款专业的卸载工具,它不仅具…

国产系统(Linux)不支持长文件名的问题和解决方案

前言 众所周知,Linux系统中文件名长度不能超过255个字符! 而大多数的Linux系统在显示中文时,使用的是UTF-8编码。这种编码在Linux中,一个中文需要占用3个字符!因此,在Linux系统中,文件名最多也…

无测试组织:测试团队的敏捷转型

文章目录 写在前面01 从测试角度理解敏捷理念什么是敏捷?测试人员应该怎样理解敏捷理念?敏捷宣言对于测试活动的启发与思考总结如下敏捷原则12条敏捷实践框架为什么要做敏捷 02 什么是敏捷测试03 敏捷测试为什么会失败04 诊断脑暴会的成果示例测试团队转…

php如何将普通数据转化为json数据

PHP API接口必备之输出json格式数据 在日常的开发工作中免不了要写接口,json格式文本的输出是制作接口必须掌握的,现在通行的接口基本是采用json格式的数据,简单的php json文件输出 json接口如何生成?或者是如何将普通数据转化为…

推荐超好用的Java快速开发平台

快速开发平台 - Spring Boot 技术交流 交流 QQ 群(千人大群):127515876、209330483、223507718、709534275、730390092、1373527、183903863(外包)码云Gitee:JeeSite 4.x and 5.x: 👍 Java 快速开发平台,…

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现 1、DW卷积与普通卷积计算量对比DW与PW计算量普通卷积计算量计算量对比 2、MobileNet V1MobileNet V1网络结构MobileNet V1网络结构代码 3、MobileNet V2倒残差结构模块倒残…

构建强大的产品级NLP系统:PaddleNLP Pipelines端到端流水线框架解析

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

资源管理器关闭了怎么打开

1.按住电脑 ctrlaltdelete 选择任务管理器 2.在任务管理器中,点击左上角的【文件】–>【运行新任务】 输入 然后会弹出新建任务窗口,在其中输入命令:【explorer.exe】

Mentor PADS BOM物料清单的创建方法教程

BOM表即物料清单。当原理图设计完成之后,就可以开始整理物料清单准备采购元件了。如何将设计中用到的元件的信息吗进行输出以方便采购呢?这个时候就会用到BOM表了。 1、执行菜单命令“文件”→“报告”,进入“报告”对话框,在“选…

CRM软件助力企业科学决策

我们常说“选择大于努力”,这对于企业发展同样适用。每一家企业管理者在日常工作中都要做大量决策,员工只是将决策落地,而这些决策往往决定了公司大大小小项目实施的顺利与否。因此,采用CRM软件助力企业科学决策显得十分关键。 越…

手机app 爬虫

近期在做某个项目,涉及到需要对手机app的进行数据爬取。在上一篇博文中,讲述了以模拟机为例的配置操作流程,这里将以苹果手机为例进行描述。 下面将讲述具体配置步骤 1、安装 抓包软件 fiddler (Fiddler | Web Debugging Proxy and Troubleshooting Solutions) ​ 下载后…

Orcad属性过滤器的使用技巧

Orcad内置的属性过滤器可以完美的解决由于属性太多导致的不好整理的问题。下面简单介绍一下方法和过程。 1、打开过滤器 2、新建属于自己的过滤器 3、进行器件属性过滤及调整的顺序(注这时一定关闭ORCAD,来操作) 3.1 安装目录下找到\Cadenc…