背景
所谓的“多路召回”就是指采用不同的策略、特征或者简单模型,分别召回一部分候选集,然后再把这些候选集混合在一起后供后续排序模型使用的策略。
阿里云开放搜索(OpenSearch)是基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,目前为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。目前开放搜索提供文本检索,通过对文本query进行分词加上一些查询分析处理,对query进行改写后再查询引擎,大大提高了搜索的效果。但是对于一些对搜索效果要求较高的场景,例如:教育搜题场景,教育拍照搜题相比传统的网页或者电商的搜索存在明显的差异,第一点是搜索的Query特别长,第二点是搜索的Query由拍照OCR识别之后得到的文本,其中关键TERM识别错误的话,就会严重影响召回排序。针对这些问题的解决方法,一种方案是继续优化QP,增强QP对文本处理的能力。另一种方案是引入向量召回,通过计算向量空间的距离来召回文档,作为对文本召回的一种补充。
功能价值
在长Query、长尾Query、Query不规范等场景时,如果基于文本检索出现召回不准确、结果不足等问题,补充向量召回可以有效地提高召回文本的效果,同时也可以提供扩召回的能力。
开放搜索提供多路召回的算法工程能力,赋予不同行业的用户定制不同的多路召回功能需求,并且已经产品化,在多个行业的用户中实践应用。其优点有以下几个方面:
1、提供灵活的算法能力,支持根据不同行业的特点对文本向量化进行技术优化,兼顾效果和性能;
2、支持cava脚本,提供更加灵活的定制排序算分能力;
3、支持带模型的分析器和不带模型的分析器,分别对无算法能力的用户和有算法能力的用户提供向量召回功能;
4、对比开源产品,开放搜索搜索准确性和搜索延迟优势更加明显,搜索延迟从开源秒级降到几十ms。
多路召回架构图
多路查询
开放搜索(OpenSearch)支持多路查询功能。配置好查询策略,可以同时查询文本Query和向量Query。当然也支持只查询文本Query或只查询向量Query。如果配置了文本向量化功能,则文本查询的时候开放搜索会对文本向量化,生成向量Query,两路结果召回后排序。
向量分析器
开放搜索(OpenSearch)支持多种类型的向量分析器,主要是行业通用向量分析器、行业定制向量分析器、以及通用的向量分析器(向量-64维、128维、256维通用)。其中通用的向量分析器需要用户自行将数据转化为向量,并以DOUBLE_ARRAY类型存储,这适用于算法能力较强的客户使用。
查询分析
赋予算法同学对不同行业的向量模型进行定制,根据以教育行业为例,
其中针对教育搜题做的特别优化有:
- BERT模型采用达摩院自研的StructBERT,并针对教育行业定制模型
- 向量检索引擎采用达摩院自研的proxima引擎,准确性和运行速度远超开源系统
- 训练数据可以基于客户的搜索日志不断积累,效果持续提升
- 改写出语义向量query, RANK上文本term, 只参与算分不参与召回,提升召回的top文本质量。
排序定制
开放搜索(OpenSearch)开放了两阶段排序:基础排序和业务排序,即粗排和精排。其中,精排支持cava脚本,更灵活地支持用户的排序需求。
多路召回流程中开放搜索最终会进行统一排序,目前支持内部排序和精排模型打分排序。内部排序直接根据多路召回的结果按照返回的分数从高到低排序。精排模型打分需要用户提供模型信息,对多路召回的结果根据模型打分排序。
多路召回实践案例
电商/零售搜索
社区论坛搜索
对比接入前后top title的不同效果
如有产品指导需求,可填写问卷获得专家指导>>https://survey.aliyun.com/apps/zhiliao/lKD_J8cRj
如果你想与更多开发者们进行交流、了解最前沿的搜索与推荐技术,可以钉钉扫码加入社群