基于MaxCompute+开放搜索的电商、零售行业搜索开发实践
简介: 搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题。基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量的增长,难免会遇到性能瓶颈和效果瓶颈。另一方面,随着电商、直播、云计算等技术的不断发展,越来越多的传统零售企业正在进行互联网云上转型,特别是受近两年疫情等因素的影响,APP、小程序已经成为零售企业重要的业务增长来源。在此背景下,如何快速搭建高效搜索服务成为零售行业上云及转型的难题。
本文作者 刘志嘉 阿里云智能 产品经理
搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题。基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量的增长,难免会遇到性能瓶颈和效果瓶颈。另一方面,随着电商、直播、云计算等技术的不断发展,越来越多的传统零售企业正在进行互联网云上转型,特别是受近两年疫情等因素的影响,APP、小程序已经成为零售企业重要的业务增长来源。在此背景下,如何快速搭建高效搜索服务成为零售行业上云及转型的难题。
为解决这两个问题,阿里云计算平台事业部推出基于 MaxCompute 和开放搜索的电商、零售行业的搜索解决方案,实现商品存储、建库、搜索、调优的搜索开发平台。
本文将从产品简介、电商行业特点、行业搜索开发实践、更多解决方案这四个方面介绍如何快速、高效的基于MaxCompute 和开放搜索搭建电商行业搜索服务。
一、产品简介
MaxCompute 简介
简单、易用、全托管的开放服务
MaxCompute是阿里云推出的一款简单、易用、全托管的面向分析的企业级 Saas 模式云数据仓库,它简单、易用,能够匹配业务发展进行灵活弹性扩展;面向云上开发者,MaxCompute 支持机器学习、数据湖、传统数仓、近实时数仓等多种业务分析场景,并提供更开放的开发生态。
Serverless 灵活数据仓库
为实现企业在满足差异化需求的前提下最小化成本的目标,MaxCompute 以 Serverless 架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,满足用户的业务敏捷性、周期波动调度、关键任务保证、稳定可预期等需求,最小化用户运维投入,从而使用户可以经济、高效的分析处理海量数据。这些特性使得MaxCompute非常适合电商、零售行业的应用场景,满足行业开发者的计算、存储需求。
此外,MaxCompute 还提供Serverless的数据接入服务、多计算环境、存储服务、资源管理,大幅度降低用户运维成本,让用户更专注自身业务扩展与开发。
开放的生态
在产品生态方面,MaxCompute 提供丰富的诸如产品自身开放生态、阿里云产品解决方案生态、数据应用生态、开源引擎工具集成等全方位开放生态,基于 MaxCompute,开发者可以自由选择业务开发方式,更灵活的定制个性化产品解决方案。
持续打造开放的产品生态
而 MaxCompute 的离线、实时、分析、服务一体化数据仓库,特别适用于企业实时数仓场景、BI报表交互查询场景、用户画像分析等场景,而这些场景正是电商行业商品数据存储、用户行为引导与分析不可或缺的组成部分。
在阿里巴巴集团内部,MaxCompute 作为双11即时查询场景的最佳实践,能够支持数亿级TPS写入速度,PB级数据亚秒级查询相应,充分满足电商行业大促场景下的高时效性需求。基于这些特性,MaxCompute 已经成为电商行业云上开发者的首选存储、计算服务。
前面提到,MaxCompute 支持开源生态集成、主流商业软件集成等多种开放生态,同时在能够与阿里云其他产品共同组成一站式解决方案,搭建电商常用的搜索、推荐等大数据服务应用。特别是针对电商、零售行业搜索业务,MaxCompute能与另一款云产品开放搜索联动,形成一站式搜索开发平台。
开放搜索简介
开放搜索是阿里集团搜索业务中台,是基于大数据深度学习在线服务体系打造的智能搜索云服务产品。在阿里集团内部,共有淘系、天猫、盒马、菜鸟等超过500个业务接入,支持日均百亿级别的搜索访问。双十一期间,稳定支持阿里集团内部各产品的搜索服务,单业务搜索QPS峰值超百万。开放搜索自2014年开始在阿里云上商业化输出,目前已经为数千家客户、数百家电商、零售企业提供搜索服务。
一站式智能搜索业务开发平台
开放搜索产品提供核心引擎、召回排序、搜索引导等搜索前、中、后各个环节的服务与能力,实现一站式搜索业务开发。针对经验丰富的搜索开发者,开放搜索提供应用结构、召回、排序、算法等多个环节的开放服务,满足开发者的个性化定制需求;针对零基础的小白用户以及产品、运营同学,开放搜索提供电商、教育等行业的行业模板,一键式快速搭建效果更优的搜索服务,助力企业完成业务目标。
特别是针对电商行业,开放搜索提供商品、订单、门店搜索,数据库加速和分析等多场景搜索方式及解决方案。
二、电商行业特点
电商行业是高度的成交导向、GMV导向行业,以引导更多更高额的购买成交作为最终目标,实现电商平台、买家、卖家的三赢。而搜索和推荐是目前电商行业最主要的流量入口,像图中的这三款APP,都将搜索入口放置在整个APP的最核心位置,方便用户第一时间发现搜索入口,下面是其他子应用或商品分类筛选,再下面是推荐feed流。数据显示,有90%以上的GMV贡献来源于搜索和推荐的流量引导。
当用户已经有了明确的购买需求打开电商APP时,他有很大概率通过搜索寻找目标商品,而在这种场景下的引导购买率、转化率非常高,因此,搜索效果对于电商行业而言至关重要。
那么要如何衡量搜索的效果呢?根据积累多年的电商行业搜索经验,我们主要将电商搜索核心指标分为效果指标和性能指标,效果指标包含点击率、无结果率等,性能指标包含搜索响应时间、数据同步响应时间等,简单而言,就是让终端用户更快更准的找到目标商品。
此外,电商行业搜索Query与其他行业的Query也有所差异,电商行业用户在搜索时,会习惯性的进行关键字堆砌,比如当搜索一个Query没有找到指定商品后,会再继续输入补充说明Query以实现对搜索结果的筛选,这也同时导致了电商行业Query的词序对搜索的影响没有其它行业大,比如搜索华为手机和手机华为完全可以理解成同一种搜索行为。由于很多通用电商类APP会包含各行各业的商品信息,当同一词汇在不同语境下出现时,会代表不同的信息。当小米后边跟着手机时,它是一个手机品牌,当小米前面带着有机时,它是一个商品品类。
基于这些电商行业特殊的搜索Query特点,用户通过数据库或开源引擎自建搜索时,常常会遇到口语化查询导致查询召回少、文档相关性差、排序结果不理想等问题,影响搜索效果乃至影响用户购买转化。
在用户意图识别方面,不同用户在不同场景下输入同一词汇时,可能会覆盖多种领域的众多商品。比如当用户输入苹果时,他可能指的是手机、水果、平板电脑、耳机、笔记本等多种品类。这也是通过开源方案自建电商搜索初期经常遇到的badcase之一。
那么,如何解决这些问题与badcase,优化电商行业搜索效果、提升搜索引导GMV呢?
三、行业搜索开发实践
MaxCompute+开放搜索行业搜索开发实践
电商搜索服务涉及商品数据、搜索Query、用户行为等多种维度,以及搜索前、搜索中、搜索后等多个环节,我们在对接不同企业时,也经常会遇到客户提出的各种各样的问题。之前没有过搜索经验的同学可能会问,商品要如何建库?如何准确的理解用户查询意图呢?经验老道的开发者可能会问,如何为用户提供个性化的搜索体验?如何保证高并发场景下的性能呢?
为了更快更好的帮助电商、零售行业开发者解决上述问题,MaxCompute 联合开放搜索提出了相应的行业搜索解决方案。
整体而言,用户将存储在 MaxCompute 中的商品数据、行为数据等通过数据库自动同步或API/SDK同步的方式传输到开放搜索,然后在开放搜索中定制查询分析、排序、搜索引导、干预、扩展功能等。最终实现搜索效果更优的高性能、高实时型、高可靠、全托管、免运维的电商行业搜索解决方案。
这一解决方案可以根据用户实际搜索行为,拆解为搭建搜索应用、用户输入查询词、用户意图识别、访问搜索引擎、返回搜索结果五个关键环节,分别对应MaxCompute建库、搜索引导、查询分析、搜索引擎、排序服务五个模块的开发。
商品建库
在商品建库阶段,用户将自身商品数据、用户行为数据存储到 MaxCompute 中,为了方便电商行业开发者使用,开放搜索提供了电商行业模板,用户可以一键式创建搜索应用结构,实现快速建库。接下来,根据MaxCompute 中的字段或开放搜索中自定义的应用结构定义每个表中的字段类型、含义以及多个表之间的关联关系。然后根据不同业务场景的搜索需求,把不同的字段组合成目标索引,到相应的索引中进行搜索。比如在电商行业中,商品名称、店铺名称、商品品类等都是常见的搜索字段,则可以将这些字段统一构建为一个索引,则当用户输入Query后,会去这些字段中搜索关联到商品、店铺等信息。索引结构构建完成后,将开始为用户构建搜索服务,当应用的状态为“可用”时,基础版本的搜索服务就搭建完成了。
搜索引导
在用户输入搜索Query之前,电商行业往往会提供一些预置的搜索Query,这一流程被称为搜索引导。目前常见的搜索前引导模块包括热搜、底纹,热搜就是会根据近期热点事件、用户搜索行为提供一些热门搜索词,使用户直接点选搜索。而底纹是指搜索框中在用户输入搜索词之前已经存在了预置Query,用户直接点击搜索就可以搜索相应的搜索词。热搜、底纹是搜索环节中的重要组成部分,一方面,热搜、底纹可以引导用户搜索行为,降低后续环节的调优难度,另一方面,也可以根据不同时间的不同运营目标,达到提升搜索引导购买的目标。目前开放搜索不仅支持热搜、底纹模型的自动训练,还可以通过黑白名单实现定时、定位的人工干预,达到人工运营与引导的效果。
另一种常用的搜索中引导为下拉提示,即在用户输入Query的过程中,自动联想出现其他候选Query,降低用户输入成本,实现流量引导效果。目前,开放搜索支持多种下拉提示模型构建方式,并支持高频搜索词、历史搜索词、智能排序、人工干预等下拉提示扩展功能。
通过热搜、底纹、下拉提示的搜索引导,可以提升用户的搜索体验,并实现人工运营,吸引购买转化。
用户意图识别
在用户通过搜索引导或者手动输入Query后,一次搜索请求开启了。
首先,我们需要理解用户的实际搜索意图,之前我们提到过,电商行业用户在输入搜索Query时,有时会带有一些口语化表达,或者会进行关键词堆砌。因此,我们需要将用户从购买需求角度描述的Query转化为结构化的相对清晰规范的表达形式,这就是用户意图识别流程。
我们常见的用户意图识别包括同义词拓展、停用词省略、纠错改写、实体标签识别、类目预测。
接下来,我们通过一个例子详细介绍一下用户意图识别环节。
比如用户输入了一个query,叫NIKE的蓝球鞋高帮。我们首先会进行归一化,对一些标点符号或者是大小写进行归一化,第一步就变成了nike的蓝球鞋高帮,再通过电商行业分词对输入的query进行分词处理,划分成niki 的 蓝球鞋 高帮。接下来进入停用词环节,比如设置里“的”是一个没有意义的词,就变成了nike 蓝球鞋 高帮。接下来是拼写纠错,会把错别字纠正,变为nike 篮球鞋 高帮。接下来就用行业里经常会用到的一个类目叫行业实体识别,分析之前的词是什么含义,变化为,nike:品牌,篮球鞋:品类,高帮:款式。除此之外,开发搜索还支持类目预测。通过上述的结果,会给当前的query做一个权重,nike-高,篮球鞋-中,高帮-中。再进行一个搜索词的扩展,比如(nike OR 耐克)运动鞋 高帮。最终输出一个层层改写之后,引擎能够理解的query,输入到搜索引擎中。
搜索引擎召回
在完成Query改写之后,会进入搜索引擎召回阶段。开放搜索提供包含文本召回、个性化召回、向量召回在内的多种召回策略。文本召回是搜索领域最常见的召回策略,会对比改写后Query与商品数据中的文本相关性,利用倒排索引实现召回。开放搜索使用阿里巴巴集团内部自研的问天3文本搜索引擎,能够高性能的处理高并发、多写入场景下的搜索任务,更快的返回搜索结果。个性化召回会在查询词改写基础上引入用户的个性化信息,返回面向用户的千人千面的个性化搜索结果。向量召回会在改写词基础上引入向量信息,根据查询词与商品数据的向量相似度返回搜索结果。传统文本搜索可能会遗漏部分看上去没有相关性但实际上也是用户目标需求的搜索结果,而向量召回可以解决这一问题。利用文本召回和向量召回同时进行多路搜索,能大幅度降低搜索结果的无结果率,优化搜索效果。
结果排序
在完成召回阶段后,我们已经得到了一些跟用户搜索需求相关的商品数据,接下来需要把已经召回的商品数据进行排序,以最合理的顺序反馈给用户,保障用户最有可能点击的搜索结果排在前面,进而提升搜索引导转化和GMV。开放搜索提供粗排、精排两轮排序机制,支持排序表达式、自定义插件、算法模型等多种排序方式,将内部排序过程充分开放给开发者,使得开发者能够按照自身业务需求定制专属排序策略。
其中,在自定义插件环境,开放搜索提供cava编译语言及其插件。cava是一款阿里巴巴自研的编译语言,它的语法和java类似,性能与C++相当,支持面向对象编程。开放搜索控制台中已经集成了支持cava编译的IDE,用户可以直接在控制台上编译定制cava插件,更方便的进行调试和修改。
综上,用户利用 MaxCompute 和开放搜索实现了商品建库、搜索引导、用户意图识别、搜索引擎召回、结果排序的电商、零售行业搜索开发,拥有了性能更优,充分定制的搜索服务。接下来要如何衡量与优化搜索效果呢。
方案特效与效果优化
首先,分词是搜索中最基础的也是中文搜索不可缺少的环节。针对电商、零售行业,开放搜索集成了淘宝搜索团款的电商分词器,模型训练语料来自淘宝搜索多年积累的百万级有标注的电商行业数据。我们将开放搜索通用的电商分词器与开源IK分词器进行了效果对比,在100个电商搜索实际Query中,有63个Query的分词结果优于开源分词器。Good、bad比例超过4:1。
在电商通用分词器基础之上,我们与达摩院自然语言处理团队合作进行了电商行业模板专项优化,提出电商增强版分析器和相应的查询分析算法。具体来看,将电商分词F1分词准确率提升至95%,实体识别F1准确率提升至80%,拼写纠错FAR降低至1.4%,同时还新增了超过10万条的电商同义词,这些效果均处于NLP电商领域的领先水平。
下面是一些通用版分析器与电商行业增强版分析器的效果对比。除此之外,针对不同领域、不同垂类的电商、零售行业客户,我们还支持算法专项定制服务,提供用户级别定制的查询分析、CTR预估、向量模型、个性化模型等,全方面提升搜索效果。
一键式配置
针对电商用户特别是刚刚开始云上互联网转型的零售行业用户,我们提供了一键式配置能力,用户只需在控制台上勾选想要实现的召回、查询分析、排序、周边服务等搜索相关功能,即可自动生成相应的应用结构、索引结构以及各具体功能策略,实现电商搜索全方位一键式配置。
客户案例
电商行业客户
下面简单介绍两个电商、零售行业搜索的典型客户案例。一家电商购物平台类APP,为用户提供商品搜索、优惠券导购等功能。客户最开始选择自研搜索开发,但很快就遇到了一些瓶颈,比如在亿级商品索引量下,复杂的搜索、筛选需求经常会影响搜索性能,特别是在电商大促期间,流量峰值会大幅提升。用户调研了多种产品及解决方案之后,最终选择了MaxCompute+开放搜索的解决方案。MaxCompute 灵活弹性运维机制高度适用电商行业场景,而开放搜索能够为搜索业务提供性能、效果保障。在持续使用了一段时间之后,我们得到了客户良好的反馈,特别是工程、运维上的稳定保障,使得用户能够专心研究业务与算法,推动产品营收与发展。
零售行业客户
另一家用户是近期刚刚接入的零售行业用户。这是一家在全球用于超过一万家店铺的超市零售品牌,在国内新零售市场高速发展的背景下,想要快速布局和提升品牌影响力,线上业务尤为重要。用户最初同样选择了自研搜索方案并应用到了线上商城,但效果远远没有达到预期,用户购物体验不佳。最近用户接入了开放搜索电商行业模板,利用内置的多路召回、个性化排序等功能,大幅提升了搜索效果。在接入半个月之后,整体加购转化率提升10%,无结果率从29%大幅降低至7.5%。另外用户还特别提到MaxCompute+开放搜索的云端全托管服务模型,大幅降低了人员投入和运维成本,用户超高的整体性价比。
四、更多解决方案
多模态、多场景搜索效果优化
在电商行业,除了商品搜索场景外,还存在订单检索、收藏夹搜索、类目搜索等多种简单条件搜索场景,在这些场景下,MaxCompute+开放搜索能够提供数据库检索加速服务,保证高性能、高实时性的搜索。
另外,使用开放搜索的向量召回能力,能够实现以图搜图的拍立淘效果,成为搜索倒流了另一个典型应用场景。
在此基础上,联合阿里云提供的智能推荐等其它云产品,能够实现电商行业搜索+推荐+广告的电商全环节应用保障。
更开放的引擎能力
在另一个方向,开放搜索目前正在进行引擎能力透出,将内置核心引擎透出到云上,供更多开发者使用,预计将于九月底正式上线,届时,将提供更加开放的生态和全方位用户定制能力。
本文为阿里云原创内容,未经允许不得转载。
基于MaxCompute+开放搜索的电商、零售行业搜索开发实践的更多相关文章
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧
之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护
dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载
在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十九)——分布式事务之Saga模式
在之前的系列文章中聊过分布式事务的一种实现方案,即通过在集群中暴露actor服务来实现分布式事务的本地原子化.但是actor服务本身有其特殊性,场景上并不通用.所以今天来讲讲分布式事务实现方案之sag ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存
很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录:一.通过Dapr实现 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享
今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ...
- Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析
Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...
- ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...
随机推荐
- CloudXR如何推动XR的未来发展
CloudXR的发展 XR(Extended Reality)是指借助计算机图形技术和可穿戴设备所生成的一个真实与虚拟组合的.可人机交互的环境.XR中的"X"只是一个变量,可以代表 ...
- 03.视频播放器Api说明
03.视频播放器Api说明 目录介绍 01.最简单的播放 02.如何切换视频内核 03.切换视频模式 04.切换视频清晰度 05.视频播放监听 06.列表中播放处理 07.悬浮窗口播放 08.其他重要 ...
- 蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化
最近在做蓝牙的宽带语音通话.相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modified SBC,改进的SBC)等.蓝牙语音通话相关的HFP(Hand ...
- 深度探索.NET Feature Management功能开关的魔法
前言 .NET Feature Management 是一个用于管理应用程序功能的库,它可以帮助开发人员在应用程序中轻松地添加.移除和管理功能.使用 Feature Management,开发人员可以 ...
- idea创建一个干净的SpringMVC项目
一.创建普通的maven项目 二.右键添加web支持 三.pom.xml配置maven环境 1 <!--导入依赖--> 2 <dependencies> 3 <depen ...
- [Unity] 为什么文件名和类名需要相同
挂载脚本时文件名和类名的关联方式 写过Unity脚本的人应该都知道,挂载脚本的文件名和类名必须相同 今天写新功能的时候偶然发现了这个规则的底层逻辑 并且发现这个规则并非必须的,实际上Unity是根据脚 ...
- Postman模拟浏览器网页请求并获取网页数据
本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到Postman软件,并进行API请求测试的方法. Postman是一款流行的API开发和测试工具,它提供了一个用户友好的界面,用于创 ...
- #莫队,根号分治#洛谷 5071 [Ynoi2015] 此时此刻的光辉
题目传送门 分析 约数个数就是 \(\prod{(c+1)}\),但是带 \(log\) 会TLE, 考虑将每个数分成 \(\leq \sqrt[3]{n}\) 和 \(>\sqrt[3]{n} ...
- OpenHarmony创新赛 | 您有一份创新激励奖待领取 请查收!
2023开源和信息消费大赛 开放原子开源大赛OpenHarmony创新赛 (以下简称"OpenHarmony创新赛") 正如火如荼的进行当中 赛程也即将进入到提交作品的关键阶段 ...
- OpenHarmony设备截屏的5种方式
本文转载自<OpenHarmony设备截屏的5种方式 >,作者westinyang 目录 ● 方式1:系统控制中心 ● 方式2:OHScrcpy投屏工具 `推荐` ● 方式3:DevE ...