浅谈有赞搜索QP架构设计

作者:鑫强 艳萍
部门:数据中台
前言在介绍QP前先简单介绍一下有赞搜索平台的整体设计,方便大家快速了解QP在搜索平台中的作用 。下图简单展示了一个搜索请求开始到结束的全部流程 。业务通过简洁的api接入los,管理员在搜索平台新建配置并下发,完成整个搜索接入,并通过A/B Test验证QP带来的优化效果 。

浅谈有赞搜索QP架构设计

文章插图
 
文章主要分为5个章节:
  1. QP的作用
  2. QP应用整体设计
  3. QP应用分层设计
  4. QP算法插件设计
  5. 总结与展望
一、QP的作用在NLP中,QP被称作Query理解(QueryParser),简单来说就是从词法、句法、语义三个层面对query进行结构化解析 。这里query从广义上来说涉及的任务比较多,最常见的就是搜索系统中输入的查询词,也可以是FAQ问答或阅读理解中的问句,又或者可以是人机对话中用户的聊天输入 。
在有赞,QP系统专注对查询内容进行结构化解析,整合了有赞NLP能力,提供统一对外接口,与业务逻辑解耦 。通过配置化快速满足业务接入需求,同时将算法能力插件化,并支持人工干预插件执行结果 。
以精选搜索为例,当用户输入衣服时用户往往想要搜的是衣服类商品,而不是衣服架,衣服配饰等衣服周边用品 。通过将衣服类目进行加权,将衣服类的商品排在靠前的位置,优化用户搜索体验 。
浅谈有赞搜索QP架构设计

文章插图
 
QP目前应用在新零售,微商城、精选、爱逛买手店、分销市场、帮助中心知识库、官网搜索等场景,通过类目加权,产品词识别,搜索词纠错,同近义词召回提升用户搜索效果 。
二、QP应用整体设计
浅谈有赞搜索QP架构设计

文章插图
 
上图完整描述了QP请求流程和配置流程的执行情况 。当搜索请求到达QP时,根据请求体中的场景标记获取QP配置 。QP配置中包含搜索词位置标记,插件列表,dsl改写脚本等内容 。
QP根据配置,按序执行相应插件 。插件在执行后,可通过干预配置以及超参数对结果进行人工干预 。
【浅谈有赞搜索QP架构设计】QP在获取到算法插件执行结果后,根据改写配置,对搜索dsl进行改写 。如将纠错词放置在搜索词同一层级,将dsl改写成fuction score结构进行类目加权 。
三、QP应用分层设计
浅谈有赞搜索QP架构设计

文章插图
 
上图按照请求流程从上到下展示了QP的分层设计,接下来将简单描述各层作用:
  • controller层:查询改写服务入口,对请求做预处理 。
  • service层:根据场景获取QP改写配置,获取dsl里的搜索词,调用相应的插件返回qp结果 。
  • plugin层:负责算法插件执行,调用插件对应的算法实现handler,对算法结果做干预并针对调用成功或者失败做处理 。
  • handler层:算法具体实现放置在该层,该层会依赖各种算法服务(如小盒子,Milvus等) 。
  • Intervener层:负责对handler结果做人工干预 。
  • processor层:根据QP改写配置,调用改写插件,完成dsl的改写 。
四、QP算法插件设计‍ 01
预处理preprocess插件
按照配置规则对搜索词进行预处理,预处理方式如下:
  1. 删除特殊符号 " “等;
  1. 大写转小写,全角转半角;
  1. 连续英文联合切分,连续数字联合切分,其余单独切分;
  1. 默认截取list前50个字/词;
  1. 将list拼接成一个字符串 。
样例输入:"史蒂夫新款时尚套装夏修身圆领百搭钩花DWF镂空雪纺两件套套裙;"输出:"史蒂夫新款时尚套装夏修身圆领百搭钩花dwf镂空雪纺两件套套裙"02纠错Correction插件纠错插件的作用是对搜索词中错误内容进行识别,返回正确内容 。
样例输入:[上海牛黄皂]输出:[上海硫磺皂]当用户输入“上海牛黄皂”时,通过纠错插件能正确输出“上海硫磺皂”,其技术架构如下图所示:


推荐阅读