太强了!阿里开源自研高性能核心搜索引擎Havenask

编辑 | Tina

近期,阿里开源了自研的大规模分布式搜索引擎 Havenask(内部代号 HA3)。

Havenask 是阿里巴巴内部广泛使用的大规模分布式检索系统,支持了淘宝、天猫、菜鸟、优酷、高德、饿了么等在内整个阿里的搜索业务,是过去十多年阿里在电商领域积累下来的核心竞争力产品。

大数据时代,数据检索是必备的基础能力。Havenask 支持千亿级别数据实时检索、百万 QPS 查询,百万 TPS 高时效性写入保障,毫秒级查询延迟和数据更新。并具有良好的分布式架构、极致的性能优化,能够实现比现有技术方案更低的成本,帮助企业降本提效。

开源地址:http://github.com/alibaba/havenask

1 应用在阿里核心场景的搜索引擎

Havenask 主要是作为高性能 AI 智能引擎,应用在搜索、推荐和广告等最典型的 AI 场景,比如淘宝、天猫 App 的首页搜索框、首页拍照搜索、首页信息流、逛逛等。

在这个场景中,工程引擎需要支持好算法团队快速 AB 实验、快速优化迭代,做到算法优化分钟级上线;并在机器资源可控,成本可接受前提下,支持算法团队实验千亿级参数、超大模型,极致优化算法效果。算法效果的好坏直接影响客户体验,影响用户的留存、购买转化、以及广告效率。因此,Havenask 对电商业务的增长起关键作用。

以手机淘宝 App 首页的拍立淘(拍照搜商品)为例,我们对感兴趣的物品随手拍一张照片,利用这张图片,在拍立淘中搜索,淘宝就会从数十亿商品中找到一样或者类似的商品。这也是典型的向量计算场景。数十亿数据,高纬度向量计算,需要 Havenask 具备实时、高性能、低成本特性,才能实现实时无延迟的搜索体验。

Havenask 另外一个应用场景是大数据检索,比如淘宝 App 中订单检索、物流信息、优惠券发放使用等,本质上都是关键词附加多条件的检索。

传统的做法是基于数据库来实现。但在这种场景中,数据量至少是 TB、PB 规模。当数据规模特别大,高并发更新和查询操作,会给数据库性能带来较大的瓶颈,成本上也会有比较大的挑战。而基于 Havenask 搜索引擎技术,可实现千亿级数据,秒级时效性,毫秒级查询延迟,为用户提供顺滑的用户体验,成本也远低于数据库方案。

以淘宝优惠券为例,淘宝有数千万商家、数亿消费者,会有大量优惠券的发放和使用,优惠券的状态变更也具有实效性,因此优惠券的发放、使用和结算,要做到好的体验,必须准确、实时。这不是一件容易的事情,对系统性能的要求非常高,成本也不会低。但依赖 Havenask,就能以低成本实现千亿级数据查询、秒级时效性、毫秒级查询延迟。

2 阿里巴巴内部十余年的沉淀

b8c124ce6d3054d3b21b9b0c42922dfe.jpeg

阿里电商搜索早期是以 Apache http server module 的形式实现,支持淘宝、B2B 等子公司搜索业务,一个业务一个版本分支,与业务逻辑深度耦合。因此大概从 2009 年开始,阿里支持业务的同时,组建了一支小队伍,从零开始重写整个搜索系统。

2011 年,新系统完成研发,替代雅虎老的网页搜索系统完成上线,开启自研大规模分布式高性能搜索引擎时代。当时内部代号“问天引擎”(HA3),后来随着组织架构调整成为今天的 UC 神马搜索。

上线自研引擎之后,经过一两年的时间,阿里将多个老引擎分支做了统一。问天引擎开始支持集团几乎所有搜索业务,包括淘宝、天猫等,以统一代码分支和产品化、规模化的方式支持集团大量搜索业务。搜索技术团队也统一到了一起,以极致性能优化、分布式、高可用、运维友好为目标不断打磨这个搜索产品。

2016 年,随着深度学习技术广泛应用,电商领域迎来信息流推荐的新机遇,也给工程引擎带来新的挑战。从这时开始,阿里在信息流推进的基础上,将原来的 HA3 体系发展成了阿里集团里一个比较核心的 AI 引擎。

7b12d4f1566ab6ebccc2778d1b349fa7.png

此后经过不断演进,Havenask 逐渐成为了阿里搜推广场景的核心 AI 智能引擎。作为阿里搜推广中台的工程引擎体系 AI·OS  (AI Online Serving) 的核心引擎,Havenask 支撑了阿里集团包括淘宝、天猫、菜鸟、高德、饿了么等业务在内的数千搜索业务。

现在 Havenask 支持的业务,可以分为三类:

  1. 淘宝、天猫主搜最头部业务,直接部署使用 Havenask 搜索引擎,引擎团队贴身支持算法和业务,业务规模在个位数;

  2. 淘宝、天猫主搜之外的其他核心搜索业务,比如高德、优酷、饿了么、AE 等,由 Havenask 之上构建的 OpenSearch PaaS 版平台产品支持,业务方自助定制开发和运维,引擎团队提供支持,业务规模在百级别;

  3. 其他中长尾业务,或者无深度定制需求的核心搜索业务,由云上云下统一的云产品 OpenSearch SaaS 版(底层基于 Havenask)支持,业务方自助使用,引擎团队提供支持,业务规模在千级别。

3 搜索引擎的整体架构

e6da9e5264ca62b66911d7692464298e.jpeg

在 Havenask 中,一个较为完整的搜索服务由:在线系统、索引系统、管控系统、扩展插件等部分构成,其中包括了查询流、数据流、控制流。

  • 在线系统,包含了 QRS 和 Searcher。Qrs 负责接收用户查询、查询分发、收集整合结果。Searcher 是搜索查询的执行者,负责倒排索引召回、统计、条件过滤、文档打分、排序、摘要生成等。

  • 索引系统,负责索引数据生成的过程,还包含有文档处理与索引构建服务 Build Service。索引构建分为三个步骤,对数据进行前置处理(例如分词、向量计算等)、产出索引、合并索引文件的处理。

  • 管控系统,负责提供强大的运维能力。

  • 扩展插件,提供插件机制,索引和在线流程各环节中,均可以通过开发插件,对原始文档、查询 Query、召回、算分、排序、摘要进行灵活修改。

Havenask 作为 AI 引擎,本质上是为了帮助用户更精准的找到满足自己需求的商品,随着机器学习技术的发展,大量深度学习算法应用在电商搜索引擎上,实现个性化和智能化。以电商搜索为例,用户在搜索框中敲一个关键词或者一句话,系统首先会试图理解这个关键词或者这句话(NLP 技术),并拆分成以关键词、语义相关性、向量检索等多路方式召回,召回一批商品,并对这批商品做粗排,粗排后更小的商品集合上再做精排,这其中各个环节会大量应用机器学习算法,来实现搜索的个性化和智能化,整个过程需要在毫秒级完成。

在这个流程中,搜索团队在性能和迭代效率上做了大量优化,关键有两点:

海量物品的准确召回,是提升搜索质量的第一个环节,一般会通过多个系统的调用实现多路召回,调用链路复杂,召回延迟也可能较大。Havenask 支持在一个系统内部利用全图化思想,并发的完成关键词、语义相关性、向量、个性化等多路召回,合并后直接返回最终召回结果,做到极小的召回延迟。

针对不同的召回特性,支持 O2O(offline 计算转 online,或 online 计算转 offline)优化,支持数据、模型实时更新,并保证在离线的一致性。算法工程师可以运用更复杂的召回策略,在线上快速做各种 AB 实验,实验验证效果后可以分钟级全量上线。

另外,AI 引擎还支持丰富的插件拓展机制,和自研 CAVA 语言(类似于 JAVA 的语言)开发,并能集成达摩院 Proxima 向量库,支持多模态搜索。

阿里内部大数据检索场景的业务大部分基于 Havenask。大数据检索场景最主要的特点是数据量大,数据更新或查询并发度高,一般不需要强一致性,数据库的强一致性和事务,在这个场景下反而会导致性能瓶颈和较高的成本。

在大数据检索场景下,比较接近的对标软件是 Elasticsearch。Elasticsearch 主要以日志分析和检索、监控、安全分析、企业文档搜索、关键词召回等为主要场景。Havenask 跟 Elasticsearch 也有一些差别:

  1. Havenask 数据更新时效性更好,大数据量数据写入高并发情况下,数据更新后到可查询到仍然可以做到 1 秒内。ES 受架构限制,虽然时效性可配置,但大数据量情况下,时效性配置到 1 秒在生产上基本不太可用。

  2. 更好的查询性能。在同一数据集上的测试表明,Havenask 用更少的资源(内存使用量少 20~50%),查询 QPS 高 2~3 倍,查询平均延迟低约 2/3。

因此,在大数据检索场景下,可以说 Havenask 给业界提供了一个极致性价比的新技术方案。

Havenask 底层全部由 C++ 实现,具备较完备的索引构建、存储和管理能力,具有较好的扩展性,既能使用单机的存储媒介、开源的分布式存储系统,也能基于云存储产品。

4 后续开源规划

搜索引擎是非常复杂的一个系统。在数据规模极大的时候,要想达到很好的稳定性、实时性,这是非常有挑战的。对于一般规模企业来说,自研大规模分布式搜索引擎,一般需要投入几十甚至上百人的团队,耗时数年。Havenask 的开源,无疑也为有类似需要的企业,节省了高昂的研发成本。开发者和企业也能借助 Havenask 在 AI 领域实现更容易、更快速的创新。

而阿里也期望 Havenask 的开源能吸引更多优秀的开发者参与共创,共同推进国产化开源搜索引擎技术快速发展,普惠更多的开发者和企业。

阿里目前已经基于 Apache 2.0 许可开源了 Havenask 核心代码,并表示未来几个月内将发布正式版,保持与内部主干代码一致。后续有计划逐步开源阿里 AI·OS 体系更多的系统,下一个可能开源的系统是图计算引擎(内部代号 igraph)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThinkServer SR590 V2(联想问天系列)CPU在BMC显示使用率高,通过关闭Power下的C-States解决

ThinkServer SR590 V2(联想问天系列)CPU在BMC显示使用率高,通过关闭Power下的C-States解决 关键词:CPU CPU使用率比较高 CPU使用率 BMC使用率高 CPU阈值 摘要:ThinkServer SR590 V2(联想问天系列&#xff…

聚观早报 | “问天” 实验舱成功升天;微博将显示MCN机构名称

今日要闻:“问天” 实验舱成功升天;微博账号将显示MCN机构名称;苹果将推出Apple Watch Pro;英孚教育辟谣无法运营;易趣网宣布8月12日关闭 “问天” 实验舱成功升天 2022年7月24日14点22分,搭载中国问天实验…

阿里灵杰问天引擎电商搜索 -- 数据说明

比赛数据 corpus.tsv 介绍:语料库,从淘宝商品搜索的标题数据随机抽取doc,量级约100万。 格式:doc_id从1开始编号的,title是是商品标题。 1 铂盛弹盖文艺保温杯学生男女情侣车载时尚英文锁扣不锈钢真空水杯 2 可爱虎…

“阿里灵杰”问天引擎电商搜索算法赛 - 数据说明2022

任务和主题 本次题目围绕电商领域搜索算法,开发者们可以通过基于阿里巴巴集团自研的高性能分布式搜索引擎问天引擎(提供高工程性能的电商智能搜索平台),可以快速迭代搜索算法,无需自主建设检索全链路环境。 本次评测…

使用postman进行post请求传递中文导致后台接收乱码的问题

使用postman进行post请求传递中文导致后台接收乱码的问题 1.个人猜测估计是如果header里不指明编码的话,经过tomcat服务器时会导致转换乱码信息,这样就算你在filter里配置了EncodingFilter相关的过滤器也无济于事。。 解决方法就是在header指定下charse…

TortoiseGit安装中文语言包无法切换语言

TortoiseGit安装中文语言包切换不了中文,网上有很多解决方案思路 1、检查TortoiseGit版本要和语言包版本一致或语言包版本要高于TortoiseGit版本 2、查看语言包版本就莫名其妙的好了 3、主要原因是TortoiseGit默认的是US语言,安装语言包之后语言包不会…

TortoiseSVN 设置中文语言包

简介 简明快速讲解中文安装的全过程。 版权所有:_ OE _, 转载请注明出处:http://blog.csdn.net/csnd_ayo 简介相关下载安装设置总结解惑 相关 TortoiseSVN 下载与安装 [立即前往] 下载 简体中文包 64 位 [一键下载] [百度云下载] [官网下载] 简…

快速生成数据库ER图的方式

dbdiagram 简述 快速简单的数据库模型设计工具,可以帮助您使用其自己的特定于域的语言(DSL)来绘制数据库图。最主要的是免费。 dbdiagram 地址 https://dbdiagram.io/ dbdiagram 效果 Draw.io 简介 对于基于Web的使用免费,对…

如何创建ER图

如何看懂ER图 一、建实体 建一个实体的几个要素 1、类名 2、主键 3、属性(字段) 4、如果与其他实体有关系,则需要有外键(Foreign Key) 二、关系 以老师与学生关系为例:1:1型 1个教师对应0或1项排课 一个教…

用mysql workbench生成ER图

下载安装mysql workbench画图啦白白 下载安装mysql workbench 首先是下载mysql workbench,windows系统的自己百度,我用的是ubuntu 14.04LTS,百度到的结果有点坑,叫我去官网,但是选择平台后就没下文了T_T,最后忽然想起系统自带有软件中心,直接去本机自带的ubuntu softwore cen…

ER图详解及实例

文章目录 ER图基本概念ER图实例 ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 实体(entity): 即数据模型中的数据对象(即数据表&…

ER图转为关系模式(超详细,超简单)

相关系列: ER图转为关系模式 无损分解和保持依赖 3NF分解与BCNF分解 正则覆盖与候选码 如何设计ER图(弱实体集) 如何设计ER图(映射基数) 目录 1.简单属性的强实体集2.派生属性不出现3.复合属性由子属性代替3.多值属性也…

如何画数据库ER图

一、ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 1、实体(entity) 即数据模型中的数据对象(即数据表),用长方体来表示&…

使用Navicat生成ER关系图并导出

1.打开已经设计好的表视图界面 2.点击右下角的按钮切换到ER视图 3.在数据库名字上,右击选择逆向数据库到模型 4.选择导出,导出格式有三种,pdf、svg和png

如何将ER图转化为关系模型(超详细、含例题)

本文转载自:http://blog.csdn.net/HaoDaWang/article/details/78098937?locationNum4&fps1 超级感谢博主分享 本篇博文中的例题只涉及到N:M和N:M:P的转换,大家看完后可以再去看下下面这几个例题 https://blog.csdn.net/Flora_SM/article/details/…

python turtle绘图-案例集锦(小猪佩奇、哆啦A梦、小黄人、樱花树、皮卡丘、汉诺塔、高达、星空等)

绘图之前先要安装turtle模块 python 2: pip install turtlepython 3: pip3 install turtle1.小猪佩奇: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.color((255, 155, 192), "pink") t.setup(840, 500) t.speed(2…

这次彻底不需要账号了,无需魔法永久白嫖GPT

免费GPT 自GPT风靡以来,大家用的是不亦乐乎,你用他去解决过实际问题,你用他去写过代码,你用他去修改过bug,你用他去写过sql,你用他去画过图,你问过他你能想到的任何“刁钻”问题。 你&#xff…

云栖科技评论第38期:亚马逊推出时尚智能助手Echo Look

1、亚马逊推出时尚智能助手Echo Look 亚马逊推出时尚智能助手Echo Look 【新闻摘要】近日,亚马逊推出了能“拍照”的“私人搭配师”——Echo Look, 售价200美元。亚马逊这款最新智能助手和之前的Echo产品一样,可以播放音乐、报新闻和行程表。…

微信小程序“婚礼邀请函”首页显示

成品展示: 首页开发 默认开始播放背景音乐,这个背景音乐点击右上角图标可以暂停(有动画),然后点击新郎和新娘文字可以调到拨号页面拨打电话给新娘 或 新郎。 1、背景音乐开发: 背景音乐的开发主要用到 背景音乐API &#xff…