当前位置: 首页 > news >正文

百度视频搜索架构演进

导读

随着信息技术的迅猛发展,搜索引擎作为人们获取信息的主要途径,其背后的技术架构也在不断演进。本文详细阐述了近年来视频搜索排序框架的重大变革,特别是在大模型技术需求驱动下,如何从传统的多阶段级联框架逐步演变为更加高效、灵活的端到端排序框架。

01 背景

过去近十年,搜索引擎的主流框架为多阶段级联框架,分为召回,粗排,精排几个阶段。在每个阶段中,系统会基于相关性、质量、时效性和点击率等维度独立建模,然后通过模型融合这些信号进行排序和截断,最终产出检索结果。随着以BERT、ERNIE和GPT为代表的预训练大模型技术的逐渐成熟,利用一套端到端框架解决信息检索问题变得越来越可行。同时,用户差异化,多样化,深层次信息需求越来越强烈, 为了满足这些需求,系统的算力需求也在不断增加。在这种技术及需求趋势的引导下,传统视频搜索排序架构如何演变,已经成为视频搜索最重要课题,同时也对排序架构提出了重大的挑战。

02 目标

以大模型技术为主线,打造高性能,扩展灵活的视频搜索排序框架,同时完成存量排序系统的熵减治理,从而来大幅度提升排序系统的系统能力,降级系统长期运营治理成本。

03 问题与挑战

  • 架构功能如何解耦:视频搜索排序架构经历了多年的积累和发展,已经形成了策略、架构和产品逻辑高度耦合的局面。这种耦合导致排序模块承担了过多且复杂的功能,直接影响了研发效率,并频繁引发稳定性问题。此外,模块功能定位模糊,严重制约了新产品和业务的快速落地与迭代。面对这些挑战,我们亟需打破现有的陈旧框架,从更底层进行架构优化,以实现理想的业务和架构收益。

  • 系统效能如何提升: 目前核心排序模块缺少灵活高效的并行计算框架,制约系统资源使用率的提升。与此同时,系统流量低峰时段会存在大量空闲资源,没有得到充分使用,如何充分,高效挖掘这部分空闲资源资源,来满足业务对资源大量需求。

  • 端到端架构如何演进:在端到端大模型技术的引导下,排序策略的复杂性将逐步被模型内部化,现有策略实现可以得到极大的简化。传统多阶段级联排序架构如何演进升级,以适应这种新的排序模式,也是一个需要深入研究和探索的重要课题。

04 整体思路

对上述问题和挑战,我们采取了一系列综合措施来加以解决。首先,为了解决架构耦合与复杂性问题,我们对核心排序模块进行了深度重构,将原本集成在其中的召回处理与摘要计算功能独立出来,从而实现系统分层的合理化。其次,采用支持串行、并行和数据并行的灵活框架,提升视频排序流程的可视化管理和并行计算能力,并基于弹性算力分配控制中心,高效利用系统空闲资源,最大化搜索视频业务收益。最后,在大模型端到端排序模式下,推动多阶段级联框架向单阶段端到端框架转变升级。下面详细介绍以上解决方案的设计思想:

  • 核心排序功能解耦:

  • 视频核心排序模块是在线检索核心模块之一,之前承接排序和部分召回功能。累积了大量的视频独有的策略和业务逻辑,支持了视频搜索业务的不断发展。随着越来越多的策略、架构功能迭代,核心排序模块也越来越臃肿,接手、开发、维护等成本不断攀升。同时也面临例如不支持云原生、整体框架设计老旧、功能耦合严重等问题。

  1. 将排序模块中召回处理阶段独立分拆,整体功能迁移至新的视频召回模块。

  2. 利用图引擎将多Query串行执行升级至Query全并行执行,包含请求构建,Cache读取,结果解析。

  3. 常用架构,策略功能组件化,插件化,易于理解、开发和维护。

图片

△新召回模块

  • 为满足用户差异化,多样化查询需求,每次请求都需要重新进行召回,排序计算,摘要处理等阶段。如果全量穿透系统缓存,会带来巨大的资源,耗时增长,系统成本无法承担,所以需要考虑目前视频搜系统分层设计是否合理,是否需要重新设计。为解决视频个性化带来的资源,速度问题,我们对视频搜索核心排序功能进行重新分层设计:
  1. 核心排序系统结果返回和摘要获取解耦,视频排序系统有能力提供更多量结果集,弥补之前机制能力缺失的短板。

  2. 新增个性化排序模块,优化传输协议,在核心排序模块返回更多结果基础上,同时穿透更多基础排序,供个性化排序使用。

  3. 根据最终个性化排序结果集合,对Top N进行摘要处理计算,最后返回给上游模块。

    图片

△视频个性化排序演进

  • 系统效能提升:

  • 当前的视频搜索排序框架采用单线多策略管理器的串行执行模式。这种单线程串行处理方式在吞吐量和延迟方面表现不佳。此外,框架缺乏灵活的并行化配置能力,依靠人工经验引入各种omp,bthread等并行组件,并且存在历史遗留的冗余计算逻辑,架构组件较为陈旧。为了设计出能实际解决业务需求的现代引擎框架,我们对主流图引擎的特性进行了调研总结:

  1. 驱动方式:排序层当有大量算子,上千维特征时,无论数据驱动,还是人工编排,可读性都很差。这种复杂性不仅增加了理解整个排序层架构的难度,还进一步影响了项目的研发效率。

  2. 并行方式:目前主流job/processer算子并行方式,没有办法很好去支撑算子job内部并行,排序列队list/item-wise并行。排序数据通常含有多list, list内包含成百上千个item数据,这样数据处理模式需要job内部灵活的并行计算方案。

图片

△驱动&并行方式

  • 事实上,我们发现没有一套图引擎能够完全满足排序业务场景的需求。因此,我们提出了一种图框架引擎主张,灵活的支持搜索排序各个场景。
  1. 除了支持serial,paralle模式,常见的job 间的串,并行模式,框架还支持data_parallel模式。召回返回数据通常包含多list队列,list队列间要做排序,list内有成百上千个item,同样需要排序,常见并行模式不能很好解决这种排序需求,所以我们在框架层做了data_paralllel模式设计,让它契我们当前排序模式,支持list+item的混合排序模式,同时能满足各种并行场景使用需求。

  2. 对业务阶段进行清晰的stage,sub_stage抽象,相对传统图引擎算子推导,缺少很好可读的效果,我们做了stage抽象,配置可读性更好,配置即可读,排序全流程可视化管理易读易接手,这也就是我们做编排配置及推导的主要目的。

    图片

△Rankflow框架

  • 我们不仅要提升现有系统的并行计算能力,还优化资源的分配和使用方式,因为搜索系统的输入流量、资源消耗、响应时间等系统状态存在着周期性的波峰-波谷变动,而系统资源已经预先分配好。在波谷期,由于用户输入流量的减少,系统资源不会得到充分利用;而波峰期,随着用户输入流量的增多,系统往往面临着资源紧缺甚至不足的情况。于此同时,搜索系统的业务链路复杂,时常还会遭受某一中间节点的故障甚至是外部流量徒增等稳定性问题。

  • 架构方案:

  • 构建全局视角的弹性算力分配控制中心。

  • 通过对集群各种维度指标的获取、策略分析及周期性执行最适合当前机器负载状态的策略组合参数,实现其核心弹性算力分配决策。

  • 业务应用:

  • 目前支持视频搜索短小视频扩触发,高峰减载,系统异常处置等功能。

图片

△智能弹性算力系统

  • 端到端排序架构升级:

  • 视频核心排序模块主要分为粗排,精排级联两阶段,排序策略是依据这两阶段排序模式进行迭代升级,如粗排阶段完成初步相关性计算用于初步筛选,减少精排阶段系统计算量,精排阶段少量优质结果进行复杂计算。以大模型排序为核心的排序框架打破了原来多阶段级联模式,端到端排序框架需要对计算和数据方案进行重新设计。

  1. 精简精排前调权和挖掘队列策略,优化索引召回和模型计算选送逻辑,粗排和精排阶段统一为粗精排一体化排序阶段。

  2. 由于缺少粗排模型提前初筛作用,端到端模型需要计算数量更多的候选结果集,计算候选集合从原来精排阶段的几十条增加到几百条。

  3. 升级精排模块,利用Rankflow框架,高并发处理候选结果集数量增加带来的耗时问题。

图片

△端到端排序架构

05 总结与展望

视频搜索排序框架通过系统分层优化、Rankflow框架引入及弹性资源复用等架构演进,显著提升了排序系统的性能与灵活性,提高研发效率,降低了长期运营成本。

  • 在大模型技术趋势下,视频搜索系统如何更好提供RAG搜索增强功能。

  • 如何使视频与通搜端到端融合,达到搜索端到端理想态,都是我们后续探索研究的方向。

————END————

推荐阅读

网页结构建模在低质采集站上的识别应用

如何定量分析 Llama 3,大模型系统工程师视角的 Transformer 架构

微服务架构革新:百度Jarvis2.0与云原生技术的力量

技术路线速通!用飞桨让京剧人物照片动起来

无需业务改造,一套数据库满足 OLTP 和 OLAP,GaiaDB 发布并行查询能力

相关文章:

百度视频搜索架构演进

导读 随着信息技术的迅猛发展,搜索引擎作为人们获取信息的主要途径,其背后的技术架构也在不断演进。本文详细阐述了近年来视频搜索排序框架的重大变革,特别是在大模型技术需求驱动下,如何从传统的多阶段级联框架逐步演变为更加高…...

构造函数的原型原型链

代码示例 // 定义一个构造函数 Test function Test() {this.name 张三 }; //向构造函数的原型添加一个属性 age18 Test.prototype.age 18;//使用构造函数 Test 来实例化一个新对象 const test new Test();//向 Object.prototype 添加了一个名为 sex 的属性,其值…...

nginx反向代理及负载均衡

华子目录 nginx反向代理功能http反向代理反向代理配置参数proxy_pass的注意事项案例:反向代理单台后端服务器案例:反向代理实现动静分离案例:反向代理的缓存功能非缓存场景下测压准备缓存缓存场景下测压验证缓存文件 反向代理负载均衡&#x…...

单片机实物成品-011 火灾监测

火灾监测(20个版本) 版本20: oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...

使用 Docker 在 Alpine Linux 下部署 Caddy 服务器

简介 在现代 web 开发中,选择合适的 web 服务器至关重要。Caddy 是一个功能强大的现代化 HTTP/2 服务器,支持自动 HTTPS,配置简单,适合开发和生产环境。Docker 则为我们提供了一种轻量级的容器化技术,使得应用程序的部…...

每日十题八股-2025年1月12日

1.为什么四次挥手之后要等2MSL? 2.服务端出现大量的timewait有哪些原因? 3.TCP和UDP区别是什么? 4.TCP为什么可靠传输 5.怎么用udp实现http? 6.tcp粘包怎么解决? 7.TCP的拥塞控制介绍一下? 8.描述一下打开百度首页后发生的网络过…...

Python中定位包含特定文本信息的元素

目录 一、为什么需要定位包含文本信息的元素 二、使用Selenium定位包含文本的元素 1. 使用find_element_by_link_text 2. 使用find_element_by_partial_link_text 3. 使用XPath定位包含文本的元素 4. 使用CSS选择器定位包含文本的元素 三、使用BeautifulSoup定位包含文本…...

uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验

在 UniApp 中,由于需要兼容多端应用,我们通常使用 rpx 作为尺寸单位。然而,在某些情况下,如需要实现内容居中且两边留白时,直接使用 rpx 可能会带来一些限制。这时,我们可以考虑使用 px 或 rem 等单位&…...

极品飞车6里的赛道简介

极品飞车里有很多赛道,赛道分为前向赛道Forward、后向赛道Backward。前向赛道Forward是从A点到B点;后向赛道Backward是前向赛道的逆过程,即从B点到A点。这里介绍极品飞车6的赛道长度、中英文名称翻译、难度等级。 序号赛道英文名赛道中文名总长(km)急弯难度等级1Alpine Trai…...

SAP推出云端ERP解决方案,加速零售行业数字化转型

2025年1月9日,SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition,进一步推动企业向云端迁移。这款解决方案旨在集中运营数据,整合财务、采购和商品管理流程,以帮助零售企业优化运营效率。 核…...

Python爬虫进阶——案例:模拟bilibili登录)

主要内容:模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式, 输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮。 1、第一步:通过selenium模块访问bilibi…...

什么是数据分析?

什么是数据分析? 数据分析(Data Analysis)是指通过对数据进行收集、整理、处理、建模和解读,以揭示数据中的有用信息、支持决策和解决实际问题的过程。它是一门将数据转化为知识的学科,广泛应用于商业、科学研究、医疗…...

基于springboot的课程作业管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的课程作业管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 可以管理首页、个人中心…...

多线程之旅:属性及其基本操作

上次分享到了,多线程中是是如何创建的,那么接下来,小编继续分享下多线程的相关知识。 多线程中的一些基本属性。 基本属性 属性获取方法IDgetId()名称getName()状态getState()优先级getPriority()是否后台线程isDemo()是否存活isAlive()是…...

数据表中的数据插入、更新和删除

文章目录 一、表的插入二、更新表中的数据记录三、删除表中的数据记录 一、表的插入 插入数据记录是常见的数据操作,可以显示向表中增加的新的数据记录。在MySQL中可以通过“INSERT INTO”语句来实现插入数据记录,该SQL语句可以通过如下4种方式使用&…...

Q_OBJECT宏报错的问题

在Qt中继承QObject,并且加上Q_OBJECT宏,有时候会报错,比如我的错误: error: debug/httpmgr.o:httpmgr.cpp:(.rdata$.refptr._ZTV7HttpMgr[.refptr._ZTV7HttpMgr]0x0): undefined reference to vtable for HttpMgr 意思是没有虚…...

提升性能300ms:深入解析Spring多表联接查询优化与SQL调优实战

优化所需知识点(必须掌握) 索引篇 explain命令 重点:这是后续分析是否使用索引以及使用是否恰当的工具 作用:查看sql的执行计划,可以看sql语句是否使用了索引,索引的使用情况,以及sql的性能。 …...

增量导入和全量导入的区别是什么?

定义 全量导入:是指将数据源中的所有数据一次性全部导入到目标系统中。例如,一个电商公司要将其旧数据库中的所有商品信息(包括商品名称、价格、库存等)全部迁移到新的数据库系统中,这个过程就是全量导入。这种方式会覆…...

【百度智能云客悦智能客服】搭建AI agent智能对话 - 购车推荐

前期准备 平台链接:https://keyue.cloud.baidu.com/ 一、开始创建 二、会话流程配置 我们以购车推荐的案例,来进行 AI agent 配置演示 1.添加开场白 在 起始主题 画布中,我们可以配置 AI agent 的开场白,画布左侧默认有 开始 …...

【HTML+CSS+JS+VUE】web前端教程-3-标题标签

标题介绍与应用 标题是通过<h1>-<h6>标签进行定义的 <h1>定义最大的标题 <h6>定义最小的标题<h1...

逐笔成交逐笔委托Level2高频数据下载和分析:20250102

level2逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/1p7OOj5p-QGFrWkt6KKoYng?pwd7f4g 提取码: 7f4g Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点&#xff0c;包括主力意图&#xff0c;虚假动…...

JavaEE之线程池

前面我们了解了多个任务可以通过创建多个线程去处理&#xff0c;达到节约时间的效果&#xff0c;但是每一次的线程创建和销毁也是会消耗计算机资源的&#xff0c;那么我们是否可以将线程进阶一下&#xff0c;让消耗计算机的资源尽可能缩小呢&#xff1f;线程池可以达到此效果&a…...

java 中 main 方法使用 KafkaConsumer 拉取 kafka 消息如何禁止输出 debug 日志

pom 依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.5.14.RELEASE</version> </dependency> 或者 <dependency><groupId>org.ap…...

【后端面试总结】Golang可能的内存泄漏场景及应对策略

Golang可能的内存泄漏场景及应对策略 一、引言 Golang作为一种高性能、并发友好的编程语言&#xff0c;其内置的垃圾回收机制极大地简化了内存管理。然而&#xff0c;这并不意味着开发者可以完全忽视内存泄漏问题。在实际开发中&#xff0c;由于不当的资源管理、循环引用、以…...

Java 反射机制详解

在 Java 编程世界中&#xff0c;反射机制犹如一把神奇的钥匙&#xff0c;它能够打开许多隐藏在代码深处的 “大门”&#xff0c;让开发者突破常规的限制&#xff0c;实现一些极具灵活性的功能。今天&#xff0c;就跟随我一同深入探究 Java 反射机制的奥秘。 一、什么是反射 反…...

【k8s】scc权限 restricted、anyuid、privileged

文章目录 概述1. 内置的scc2. OpenShift如何确定pod的scc2.1 Pod未带SCC标签的情况2.2. Pod带有SCC标签的情况 参考 概述 在OpenShift&#xff08;后文简称OCP&#xff09;中&#xff0c;很早就一个概念&#xff1a;Security Context Constraints &#xff0c;简称SCC&#xf…...

2025华数杯国际赛A题完整论文讲解(含每一问python代码+数据+可视化图)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025“华数杯”国际大学生数学建模竞赛A题Can He Swim Faster的完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文…...

ThreadLocal 的使用场景

在现代电商平台中&#xff0c;ThreadLocal 常用于以下场景&#xff0c;特别是与线程隔离相关的业务中&#xff0c;以提高性能和简化上下文传递。 1. 用户上下文信息管理 场景&#xff1a;在用户发起的每次请求中&#xff0c;需要携带用户 ID、角色、权限等信息&#xff0c;而这…...

后端开发 Springboot整合Redis Spring Data Redis 模板

目录 redis 配置 RedisConfig 类 完整代码 代码讲解 1. 类定义和注解 2. 定义 RedisTemplate Bean 3. 配置 JSON 序列化 4. 配置 Redis 的 key 和 value 序列化方式 5. 完成配置并返回 RedisTemplate 总结 redis 服务接口实现类 类级别 注入 RedisTemplate 常用 Re…...

代码随想录算法训练营第 4 天(链表 2)| 24. 两两交换链表中的节点19.删除链表的倒数第N个节点 -

一、24. 两两交换链表中的节点 题目&#xff1a;24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 视频&#xff1a;帮你把链表细节学清楚&#xff01; | LeetCode&#xff1a;24. 两两交换链表中的节点_哔哩哔哩_bilibili 讲解&#xff1a;代码随想录 dummy-…...

wordpress mac下载/百度竞价sem

前言 在使用Jetson Nano开发板的过程中运行Python文件终端报错出现的错误提示,后来在终端中输入python3进入python环境去任意import一个库除了python的内置库(比如:sys、os等等)都会直接报错出现非法指令(核心已转储)&#xff0c;因此一度陷入了困境&#xff0c;在网上查找资料…...

市住房官方建设委网站/今天合肥刚刚发生的重大新闻

练手nginx反向代理和负载均衡apache实战 先说下原理性的 什么是反向代理 用户访问域名 域名的指向到nginx nginx把请求转发到apache apache处理后 返回给用户 整套的逻辑 对于用户来说 就是访问域名 然后返回 没啥感觉。 正向代理 就是用户访问 代理服务器 然后代理服务…...

电商模板网站免费/千锋教育官方网

前言&#xff1a;使用“宇宙最强IDE”开发项目时&#xff0c;都需要根据不同情况选择一个项目模板&#xff0c;来满足开发需求&#xff1a;如下VS为我们提供了基础的项目模板&#xff0c;但现有项目模板未包含基础功能如&#xff1a;日志输出、审计日志、SwaggerUI、认证等&…...

北京网站建设哪家靠谱/it培训机构有哪些

最近好多猜测弱口令的病毒在网上流行&#xff0c;比如前段时间闹得很厉害的Worm.Dvldr 蠕虫就是一个典型。这些病毒有个共同点就是利用批处理来进行ipc$连接&#xff0c;从而来猜测管理员的口令达到控制服务器的目的。病毒由几个文件和几个复杂的批处 理组成。批处理算不上真正…...

幼儿园做网站的作用/百度查重工具

mapreduce job的几种运行模式 1、在eclipse中开发好mr程序&#xff08;windows或linux下都可以&#xff09;&#xff0c;然后打成jar包(wc.jar)&#xff0c;上传到服务器&#xff0c;执行命令 hadoop jar wc.jar cn.itheima.hadoop.MainClassRunner 这种方式会将这个job提交到…...

六灶网站建设/嘉兴网站建设方案优化

当我们的服务器某台故障的时候&#xff0c;我们的SCOM肯定是最早发现它的时候&#xff0c;但SCOM发现了以后怎么告诉IT管理员来维护呢&#xff1f;默认情况下肯定是需要IT管理员主动登陆到SCOM服务器上来查看其他所有服务器的运行状况&#xff0c;这对及时处理问题带来了延迟&a…...