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

2023-11-01 14:36

本文主要是介绍对话InfoQ,聊聊百度开源高性能检索引擎 Puck,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近日,百度宣布在 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伪造图像鉴别算法泛化性缺失问题分析

这篇关于对话InfoQ,聊聊百度开源高性能检索引擎 Puck的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323665

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端