当前位置: 首页 > 编程日记 > 正文

一文详解面向多级多模态场景的召回引擎

作者| 阿里文娱开发专家 崇懿、

阿里文娱开发专家慧善

责编 | 屠敏

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

优酷视频搜索在文本搜索系统的基础上,不断探索视频搜索的方案,在多模态输入、多级多模态索引、跨模态检索上积累了丰富经验,并应用到C端B端场景中。本次分享将揭开多模态图引擎的面纱。

背景

随着智能手机及移动互联网的快速发展,人们接触到的多模态数据在数量和类别上都在飞速增长。计算、存储能力不断突破,人工智能技术也得以发展,在云、端测中CV技术、AR/VR技术都为人们提供更便利、智能的体验。

优酷作为视频平台拥有海量OGC、UGC视频内容,视频内容数据是一个高维度多模态的数据,有标题、简介、评论等文本信息,有视频帧的图像信息,有声音,也有连贯的动作视频片段。传统的基于倒排索引的搜索引擎只适合检索文本信息,对于多媒体内容检索能力不足。

为了让用户更便捷的找到多媒体内容,增加多模态搜索能力,开创性设计与研发多级多模态搜索引擎(MMS)。提供分布式大规模多层级多模态索引能力,低延时跨模态级联检索能力,多层级检索、融合、排序能力。

系统概况

基于阿里平台的Hippo(在线服务调度)、SAP(应用服务框架)等基础设施开发部署。MMS主要是在索引结构、检索控制、执行框架、部署等方面做了系统设计和选型。

关键技术

1. 分布式多级多模态索引结构设计

每层级独立构建分布式索引,索引类型包括倒排及向量索引。以视频、帧(图片)、人脸举例,索引结构如下:

1.  视频meta 文本,视频的元信息包括视频的名字,节目信息等,相对于线上的视频全库检索,这里只包含少量比较的字段,保证对视频的搜索精确召回。

2.  视频帧向量,我们把优质视频按关键帧切割,生成帧embeding 向量供检索,同时包含一些其他的帧的meta文本信息。

3.  人脸帧向量,对于切割帧中出现的明星,人物等,会识别出来并且向量化放在单独的检索库中

视频、帧、人脸存在层级关系;同时帧图片及人脸都有表征向量建的向量索引,支持亿级别规模,分10个分片,Top10的召回率90%以上。

2. 向量检索 

视频帧索引和人脸索引都集成了向量内容,通过算法提取到8.6 亿的高维视频帧向量,3800万的人脸向量,如此巨大的索引数据同时也考验我们对向量存储召回的选择,在经过多次的索引构建测试以后,我们选择aitheta 作为向量的执行召回引擎,aitheta 是拍立淘团队开发的向量检索引擎,在数据规模非常大时aitheta 的召回延时和召回率均优于faiss,同时indexlib 插件已经集成aitheta,可以很方便的使用,即使使用aitheta,对于10亿级别的高维向量检索,aitheta 的支持性也不是很好,我们团队专门做了一些优化,比如向量降维、自动化调参等。

在上层应用检索上我们使用Ha3 的向量查询能力,并且在这基础上进行功能扩充和优化,首先支持了向量检索的匹配分的返回,使用方可以更容易的进行按查询匹配的相关性进行截断和多维度打分,其次对于多个向量的查询,对返回结果添加来源向量标记,方便上层应用进行打散等业务逻辑。

向量召回架构

3. 检索调度

MMS的复杂性在于其在线检索逻辑,在支持层级及多模态query输入的基础上,如何控制跨层级、跨模态的检索。通过定义标准的跨层级和跨模态准则,根据用户的输入形成在线检索逻辑。

基本的检索流程如下图:

会由multi-call进行多层级、多模态扩展查询逻辑,其中关键是多级、跨模态的扩展查询逻辑。

1)跨层级

跨层级的检索由用户输入的层级作为起始检索点,用户想要的输出作为终点作为扩展,系统具有自适应推理能力。

2)跨模态

跨模态检索会有两种形式的解决方案,使用不同场景,索引构建前,不同模态数据做统一表征,映射到统一空间,在线进行向量检索,此处内容表征的占主要,MMS主要解决是在文本、向量间进行跨模态检索。

4. 图化执行引擎

复杂检索逻辑及低延迟服务能力要求,需要有高效的执行框架,图化执行引擎具备最大限度并行能力。同时对算子进行抽象,可以更自由编排及复用。

MMS选择Suez图化执行引擎,采用DAG执行引擎+业务逻辑算子的实现方式。

DAG 全图化引擎是阿里搜索AI·OS 的重要部分,主要思路是把业务逻辑和基础组件拆分并封装成tensorflow 的算子形式,在运行时数据以流(tensorflow里的Tensor)的方式传递,然后根据业务需求组装算子成静态执行图。正是 tensorflow 这种静态图的灵活性,我们甚至可以把MMS作为子图嵌入到其他应用中,也可以在MMS中嵌入其他的深度模型作为子图。全图化以后的应用支持异构设备,异步并行计算等tensorflow特性。

5. 通用性算子实现

搜索逻辑中会设计query parser、merge、sort通用逻辑,基于图化执行引擎接口实现通用算子:

1)query parser算子负责解析请求,查询串使用简单文本方式,相对于pb/binary方式,可视化的查询串更加直观,同时查询语法简单且强大。查询串支持查询文本查询,向量查询,或者同时有两者,支持高级语法,可以控制的查询参数粗排精排等;

2)merge融合多层级doc,补全所需要的正排、summary信息;

3)sort是搜索排序逻辑,排序后选取Top N返回;

4)result是结果返回和处理逻辑,基于查询使用文本方式,我们希望结果也是直接可视化,所以在构建结果的时候支持了json/xml,同时为了兼顾性能,我们也支持protobuf 的返回格式,同时还加入snappy/lz4 方式压缩,使返回结果集更小,传输效率更高;为了方便调试,我们加入了调试参数,可以保存聚合调试参数,输出引擎内部的调试内容。

产品应用

1. 优酷智能搜索

采用MMS对视频、帧、元素(人物、动作)等多级内容进行索引,召回出视频解构后的信息,可以实现定帧播放,支持用户对于精准视频内容片断的需求。

2. 以图搜剧

用户可以通过拍照、上传图片搜索人物及节目、相似画面的视频。输入态丰富为图像,召回系统采用MMS,既具备传统的通过人脸识别后用人名召回节目,又可直接通过图片向量进行召回。

总结&展望

多媒体信息不断丰富,直播、小视频等相关应用增长迅猛,5G移动通信技术的进一步普及,多媒体信息的生产、传播将会持续爆发式增长。人工智能技术日臻成熟,对于多模态内容理解、表征会进一步加强。多模态的人机交互体现会渗透到生活、生产各个环节。多级多模态的检索能力是必须要面临的核心问题。

优酷的多级多模态搜索引擎(MMS)提供了低延迟的跨模态、跨层级搜索能力,支持大规模多模态的索引。在视频分发、视频创作中都有着十分关键的应用场景。MMS技术在更多的智能交互场景也将发挥更广泛的应用场景。

推荐阅读
  • 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

  • 京东姚霆:推理能力,正是多模态技术未来亟需突破的瓶颈

  • Python 还能实现哪些 AI 游戏?附上代码一起来一把!

  • 使用虚幻引擎4年,我想再谈谈他的网络架构

  • 真惨!连各大编程语言都摆起地摊了

  • 谁是合约届「技术之王」?

你点的每个“在看”,我都认真当成了AI

相关文章:

对比.Net PetShop和Duwamish来探讨Ado.Net的数据库编程模式

作者:卢彦.NET PetShop和Duwamish简单介绍相信大家一定听说过有名的"宠物店大战",没错,本文的主角之一就是获胜方.NET PetShop,微软号称以27倍的速度和1/4的代码量遥遥领先于基于J2EE的PetStore宠物商店。虽然SUN也曾对此抱怨过不满…

如何直接将HTML代码加载到TWebBrowser

wbRecvContent//为 webbrowser控件 procedure TFrmMain.ShowHtmlCentent(slt: TStrings); var aMemory: TMemoryStream; pbuf: PAnsiChar; begin aMemory : TMemoryStream.Create(); try aMemory.Clear; slt.SaveToStream(aMemory); aMemory.Seek(0, soBeginning); wbRecvConte…

JavaScript基础(一) 数据类型

动态类型 JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。 数据类型 最新的 ECMAScript 标准定义了 7 种数据类型: 6 种 原始类型: BooleanNullUndefinedNumberStringSymbol (ECMAScript…

DataGrid入门经典(C#)

作者:未知 请作者速与本人联系这篇文章主要介绍如何在DataGrid控件中实现编辑、删除、分类以及分页操作。为了实现我们的意图,我们使用SqlServer2000自带的NorthWind数据库。程序分为两部分: 1.包含HTML代码的.ASPX文件 2.包含所有逻辑及…

(札记)Altera Stratix IV系列FPGA TRUE LVDS RX input termination 在Quartus工程中的设置方法...

Altera Stratix IV系列FPGA Row bank的TRUE LVDS_RX支持oct(on chip termination),所以设计的时候不需要外接一个100ohm电阻。备注:我使用的是友晶科技(Terasic)的DE4。 所以当我们使用到Stratix iv系列FPGA的row bank的lvds的时候…

直播:AI时代,普通程序员该如何转人工智能(限免报名)

常常有小伙伴在后台反馈:想了解人工智能,但是该怎么学?自学难度大又没有效果,该怎么办?CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播【年薪百万AI工程师亲授:小白实战培养计…

沃通免费SSL证书申请指南

我们在做一些exchange或lync项目的时候很多时候都会用到公网证书,比如:我们做exchange2013和Office 365混合部署,或者通过SEM暂存迁移或CEM直接转换迁移的时候都需要用到公网证书,下面为大家介绍1个免费的SSL证书及申请的方法,希望…

使用VS.NET2003编写存储过程

作者:未知 请作者速与本人联系数据表定义了如何在数据库中存储数据,但没有说明如何存取数据。我们还需要了解读写记录以便从表中再次调用选定行和列的详细信息。开发人员通常会在其代码中编写一些特殊的查询语句,用于读写数据。这不仅会导致…

谈Linux的安全设置

如今系统的安全变的越来越重要了,这里我想把我平时比较常使用的一些linux下的基本的安全措施写出来和大家探讨一下,让我们的Linux系统变得可靠。 1、BIOS的安全设置 这是最基本的了,也是最简单的了。一定要给你的BIOS设置密码&#…

亮风台提出用完全可训练的图匹配方法,优于最新SOTA | CVPR 2020

出品 | AI科技大本营(ID:rgznai100) 6月14日-19日,CVPR 2020在线上举行,据了解,本届大会共收到6656篇投稿,接收论文1470篇,录用率约22%,低于ICCV 2019论文录用率(25%&…

数组与纠结的排序篇

数组之纠结的排序 1.数组是什么? 数组:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,…

ASP.NET结合COM组件发送Email

在开发电子邮件发送程序的时候,我们经常需要使用到相应的组件,其实不需要第三方的组件(例如:Jmail)照常可以做到发送Email的功能。 在系统目录(如c:/winnt或c:/windows)的system32子目录中可以找…

卡巴循环30天不限次数循环试用工具

本文需评论之后方可查看! echo off title 卡巴循环30天不限次数循环试用工具 echo off echo 卡巴循环30天不限次数循环试用工具 echo. echo echo 卡巴斯基6/7/8试用过期时清除系统中使用痕迹,就象新系统重新安装卡巴一样 echo 1、在屏幕右下角红V卡巴图…

微软CEO纳德拉对话沈向洋:那些未来可期的计算机视觉研究与应用

编者按:6月16日,CVPR 2020 大会以全球连线的形式如期开幕。在大会的首场主题演讲中,微软公司 CEO 萨提亚纳德拉与微软公司前执行副总裁沈向洋进行了一场精彩的炉边对谈,分享了对计算机视觉、人工智能研究与应用前景的思考与展望。…

SoapUI进行REST请求,POST方法提交到数据库的数据乱码问题

一开始以为要把json字符串的key和value一个一个的加进去,结果总是报 300,参数错误,后来才发现(https://www.joecolantonio.com/2013/08/31/soapui-how-to-post-json-to-a-rest-service-2/)可以直接在下面粘贴就好了&am…

网站信息统计的简单实现过程

作者: pcskySQL语句如下: SELECT DD.SumHits, AA.CountArt, CC.WeekUpdate, BB.RegUserNumFROM(SELECT COUNT(newsid) AS CountArt FROM article) AA,(SELECT COUNT(id) AS RegUserNum FROM Admin) BB,(SELECT COUNT(newsid) AS WeekUpdate FROM(articl…

谈谈C#中类成员的执行顺序.

今天我们来谈谈C#中子类和父类中静态成员以及构造函数的执行顺序,这个地方向来是初学C#的人比较迷惑的地方,也是各大公司最喜欢拿来出面试题的地方。 下面我们分情况来分析。 1. 普通构造函数和静态构造函数的执行顺序。 对于单个的类,它的静…

AI 重塑 IT的 5 种方式

作者 | Stephanie Overby译者 | 火火酱,责编 | Carol封图 | CSDN 下载于视觉中国Gartner最新的人工智能(AI)hype cycle报告指出,AI在未来五年中CIO议程中的排名十分靠前,对潜在业务转型具有重要影响。然而,…

[原创]Gerrit中文乱码问题解决方案分享

应开发同事的要求,部署了GitlabGerritJenkins的持续集成环境. 但是发现了一个问题,Gerrit登陆后有中文乱码出现. 具体情况如下: (1)Git代码中的中文乱码处理: 为妥善解决中文编码的问题,对所有git repository做如下约定:所有文本文件都必须存储成utf8编码…

UVA 10700 Camel trading

UVA_10700我们可以猜到最大值一定是先算和后算积&#xff0c;最小值一定是先算积后算和,因为a*bc<a*(bc)。此外&#xff0c;这个题目数据有可能比较大&#xff0c;所以要采用long long int或者double来处理数据。 #include<stdio.h>#include<string.h>#include&…

在ASP.NET中操作文件的例子

利用SYSTEM.IO 名空间中的STREAMWRITER,STREAMREADER及FILE类,完成文件读、写、删除的操作。 -------------------------------------------------------------------------------- 1、写文件 writefile.aspx <% Import Namespace"System.IO" %> 引…

云原生如此重要,可惜80%的人都不知道

文 | Aholiab责编 | Carol封图 | CSDN 下载自视觉中国2020年&#xff0c;一场疫情给中国企业带来了一次「被动数字化升级」&#xff0c;很多企业第一次认识到了信息化的重要性。今天&#xff0c;数字经济已无处不在&#xff0c;根据中国信息化百人会的研究报告显示&#xff0c;…

CentOS 7 yum 安装 MySQL5.7

为什么80%的码农都做不了架构师&#xff1f;>>> 0、环境 本文操作系统: CentOS 7.2.1511 x86_64 MySQL 版本: 5.7.13 1、下载 MySQL 官方的 Yum Repository 从 MySQL 官网选取合适的 MySQL 版本&#xff0c;获取下载地址。 然后使用 wget 下载&#xff1a; [rootce…

万字长文带你入门 GCN

来源 | 阿泽的学习笔记&#xff08;ID: aze_learning&#xff09;Convolutional Neural NetworkCNN 在图像识别等任务中具有重要作用&#xff0c;主要是因为 CNN 利用了图片在其域中的平移不变性。由于图结构不存在平移不变性&#xff0c;所以 CNN 无法直接在图上进行卷积。1.1…

VS.Net中程序集的Debug版本和Release版本的区别

作者&#xff1a;未知 请作者速与本人联系前几天看到豆腐的文章介绍如何知道程序集是Debug版还是Release版&#xff0c;之前只知道某些软件从功能上有企业版、标准版之分&#xff0c;却从不知道.Net程序集还有Debug和Release之区别&#xff0c;真是惭愧学了这一年C#。然后在博…

《CLR via C#》笔记——CLR的执行模型

一&#xff0e;将源代码编译成托管代码1&#xff0c; CLR&#xff08;Common Language Runtime&#xff09;公共语言运行时是一个可由多种语言使用的“运行时”&#xff0c;CLR的核心功能&#xff08;比如内存管理&#xff0c;程序集加载&#xff0c;安全性&#xff0c;异常处理…

telnet时显示:允许更多到 telnet 服务器的连接。请稍候再试

telnet时显示&#xff1a;允许更多到 telnet 服务器的连接。请稍候再试 解决办法:windows自带telnet服务器默认的最大连接数为2&#xff0c;要想修改该设置&#xff0c;可以在命令行键入tlntadmn config maxconn要设置的连接数。最大连接数是指同一时刻内客户连接服务器的最大数…

Asp.net支持的最大上传文件大小

Asp.net的默认的最大可以上载的文件是4M,可以在web.config中配置.配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。 <configuration> <system.web> <httpRuntime><httpRuntime useFullyQualifiedRedirectUrl&q…

ASP.NET--Menu控件

http://www.meituan.com/r/i13110281 Menu控件提供静态和动态混合的菜单功能。在向页面添加这个控件的时候&#xff0c;开发人员可以选择将它设置为一个完全动态的菜单&#xff0c;以便整个站点的导航结构都可以显示在菜单中&#xff0c;类似于Windows的Start菜单。另一种选择是…

AI进军服装零售产业:微软小冰与特步推出定制化服装设计生产及零售平台

&#xff08;6月22日&#xff0c;北京&#xff09; 今日&#xff0c;体育用品企业特步集团与微软小冰宣布达成合作&#xff0c;依托微软小冰人工智能创造技术共同推出的定制化服装设计生产及零售平台即将上线。双方携手为消费者提供定制化图案设计&#xff0c;满足每个消费者的…