一、行业搜索的背景
1、达摩院自然语言智能大图
上图是达摩院自然语言处理智能的技术框图,从下到上包含:
- NLP 数据、NLP 基础的词法、句法语义,分析的技术,以及上层 NLP 技术
- 行业应用:达摩院除了做基础研究之外,还赋能阿里集团,以及结合阿里云去赋能行业产业。赋能的很多行业场景都是搜索。
2、行业搜索本质
面向产业和消费互联网的搜索本质都是一样的:用户有信息获取需求,同时有信息资源库,通过搜索引擎把两者桥接起来。
以电商场景来举例说明。比如用户在电商里面搜索 aj1 北卡蓝新款球鞋。为了更好地理解这样一个用户的 query,需要进行一系列任务:
- 查询理解的分析:NLP 纠错、分词类目预测、实体识别词权重、 query 改写等技术
- (离线)文档分析:NLP分析,质量效率的分析
- 检索排序:通过对 query 的分析以及文档的分析,来结合搜索引擎本身一些检索排序的机制,就能实现把两者桥接的目标。
3、行业搜索链路
如果按搜索的范式来分,一般分为 sparse retrieval 及 dense retrieval。
- sparse retrieval:传统的基于字或基于词去建立倒排索引,同时基于此去构建很多查询理解的一系列的能力,包括一些文本相关性排序等;
- dense retrieval:随着预训练语言模型的兴起,基于预训练底座来实现单塔、双塔模型,再结合向量引擎建立搜索机制。
一般将搜索做这样一个链路性的划分:召回、排序(粗排、精排、重排)。
召回阶段:
- 传统 sparse retrieval 的关键词召回
- dense retrieval 向量召回,个性化召回
- 粗排阶段:使用文本相关性(静态)分数来做过滤
- 精排阶段:相对复杂,会有相关性的模型,可能结合业务的效率模型(LTR)
从左到右,模型复杂度、效果精度变高。从右到左,处理 Doc 数变多。以淘宝电商为例,比如召回(几十亿),初排(几十万),到精排(几百、上千),到重排(几十)量级。
搜索生产链路是检索效果跟工程效率 trade-off 的系统。随着算力的增长,复杂模型开始往前置换。比如说精排的模型,现在慢慢会下沉到粗排、甚至召回这个阶段。
搜索效果评估:
- 召回:recall 或无结果率
- 排序:相关性、转化效率(贴近业务)
- 相关性:NDCG、MRR
- 转化效率:点击率、转化率
4、消费互联网和产业互联网的搜索
搜索在不同行业场景里区别是很大的,在此把它分为消费互联网搜索与产业互联网搜索:
- 用户群体和 UV:消费互联网搜索 UV 非常大,产业互联网面向政企内部的员工。
- 搜索追求指标:消费互联网,除了追求搜得到、搜得准之外,还追求转化率高。在产业互联网,它更多是信息匹配的需求,所以关注召回跟相关性。
- 工程系统要求:消费互联网 QPS 的要求会很高,沉淀大量的用户行为,需要有实时日志分析、实时模型训练。产业互联网的要求会低一些。
- 算法方向:消费互联网会从 offline、nearline、online 的海量用户行为分析建模获得更大收益。产业互联网的用户行为稀疏,所以会更注重内容理解,比如 NLP 或者视觉的理解,研究方向包括 low resource、transfer learning。
二、相关技术研究
搜索是跟系统框架紧密耦合的:包括离线数据,搜索服务框架(绿色部分),搜索技术算法体系(蓝色部分),其底座是 Alicemind 预训练语言模型体系,同样会汇聚做文档分析、query 理解、相关性等。
1、AliceMind 体系
AliceMind 是达摩院构建的层次化预训练语言模型体系。包含了通用预训练模型,多语言、多模态、对话等,是 NLP 所有任务的底座。
2、分词
搜索的分词(原子能力),决定了检索索引粒度,同时也与后续相关性、BM25 粒度有关。针对 task specific 任务,如果去定制一些预训练,能比通用的预训练效果更好。比如最近研究希望在原生 BERT 预训练任务上增加无监督的统计信息的任务,比如统计字词、Gram 粒度、或者边界熵,然后以 mse-loss 增加到预训练。在 CWS/POS、NER上(右图),的诸多任务都达到 SOTA。
另一个研究是跨领域。每次需要标数据、构建监督任务的成本很高,所以需构建跨领域无监督分词的机制。右下角的表格为例,电商分词相比开源的分词质量有明显改善,这套方法也发布到 ACL2020。
3、命名实体识别
搜索命名实体识别主要是对 query 、Doc 进行结构化的理解,识别出关键短语及类型。同时搜索知识图谱的构建也依赖 NER 功能。
搜索 NER 也面临一些挑战。主要是比如 query 常常是比较短的,上下文不足。比如说电商里面 query 实体的歧义性很高,知识性很强。所以这几年在 NER 核心的优化思路,就是通过上下文或者引入知识的方式来增强 NER 的表征。
在 2020年、2021年做了隐式增强的工作 combo embedding。把已有 word extractor 或者 GLUE 的表征动态融合,能搭载在很多业务任务上面达到 SOTA。
2021年,研发基于显式的检索增强,对一条文本会通过搜索引擎得到增强的上下文,融合到 transformer结构。这个工作发表在 ACL 2021 上了。
基于这个工作,我们参加了 SemEval 2022 多语言 NER评测拿了 10 项冠军,以及 best system paper 。
检索增强:输入句子本身之外,检索得到额外 context 并 concat 到输入,结合 KL 的 loss 来帮助学习。在很多开源数据集拿到 SOTA。
4、自适应多任务训练
BERT 本身效果是很好的,但实际生产很少有 GPU 集群,每个任务都要去做 inference性能代价很大。我们思考能否只做一次 inference,在 encoder 之后每个任务自己再做适配,就能得到比较好的效果。
一个直观的方法就是通过 meta-task 的框架纳入 NLP query 分析任务。但传统的 meta-task 是均匀采样的分布。我们提出了 MOMETAS,一个自适应基于元学习的方法,来自适应不同任务的采样。在多个任务去学习的过程中,我们会阶段性用 validation data 做测试看不同任务学习的效果。reward 反过来指导前面训练的采样。(下方表格)在很多任务上结合这个机制,相比 UB(均匀分布)有不少提升。
把上述机制应用在搜索很多行业的场景里去,带来的收益是仅通过一次 BERT 的编码并存储,在很多的下游任务直接复用,能大幅提升性能。
5、搜索召回预训练语言模型
深度检索,无外乎是双塔或单塔,通用的训练范式是有监督信号以及预训练模型,进行 finetune 获得 embedding,对 query 和 doc 进行表征。近期的优化路线主要是数据增强或难样本挖掘,另外是优化预训练语言模型。原生 BERT 不是特别适合搜索的文本表示,所以有针对搜索文本表示的预训练语言模型。其他优化是在于做 multi-view 文本表示,以及特别的 loss 设计。
相比原生 BERT 的随机采样,我们结合搜索词权重提升词权重比较高的词来提升采样概率,学习到的表征更适合搜索召回。除此之外,增加 sentence level 对比学习。结合这两个机制,提出了 ROM 的预训练语言模型。
在 MS MARCO 做实验,对比先前做法能够达到最好的效果。在实际的场景搜索任务中,也能带来较大的提升。同时该模型也参与了 MS 刷榜。
6、HLATR 重排模型
除了 ROM 这个召回阶段之外,在精排、重排阶段,提出了一套 list aware 的 Transformer reranking,即将精排很多分类器的结果通过 Transformer 有机的融合在一起,有比较大的提升。
结合 ROM 和 HLATR 两个方案,3 月份至今(7 月份)仍旧是 SOTA 结果。
三、行业搜索应用
1、地址分析产品
达摩院研发的地址分析产品,背景是各行各业有很多通讯地址。中文的通讯地址有很多特点,比如口语化表达有很多缺省。同时地址本身是人事实物,是客观世界很多实体桥接的一个重要实体单位。所以基于此建立了一套地址知识图谱,提供解析、补齐、搜索、地址分析。
这是产品的技术框图。从下到上包含了地址知识图谱的构建,以及地址预训练语言模型,包括基于搜索引擎的框架串接整个链路。上述提到的基准能力,以 API 的方式提供出来包装成行业方案。
这套技术里面比较重要的一个点是地理语义的预训练语言模型。一个地址在文本表示会是字符串,其实在空间里面它往往是表征成经纬度,在地图中还有对应的图片。所以这三种模态的信息是把它有机融合成一个多模态的地理语义的语言模型,以此来支持在定址里的任务。
上述提到需要做地址相关的很多基础能力,比如分词、纠错、结构化等分析。
最核心的链路是将地理预训练语言模型、地址基础任务、引发搜索引擎的方式将它们桥接起来。比如说搜索浙一医院,可能会对它去做结构化、同义词纠错、term weighting 做向量化、Geohash 的预测。基于分析结果做召回。这个链路是标准的搜索链路,进行文本召回、拼音召回、向量召回,还增加地理召回。召回之后是多阶段的排序,包括多粒度的 feature 融合。
地址搜索体系直观的应用,就是填地址后 suggestion 场景,或者高德地图里面去做搜索,需要把它映射到空间一个点位上。
接下来介绍两个比较行业化的应用方案。第一个是新零售 Family ID,核心诉求是维护一套客户的管理系统,然而各个系统用户信息没有打通,无法实现有效的整合。
比如品牌厂商卖了一个空调,家人由于购买、安装、维修而登记了各种地址、手机号,但对应的实际上是同一个地址。建立的地址搜索归一技术,把不同表示的地址进行归一,生成指纹,将不同用户 ID 聚合到 Family 概念中。
通过家庭聚合的概念,可以做到更好的渗透分析、广告投放触达等新零售下的营销活动。
另外一种应用场景,是 119、129、应急等智能接警应用。因为涉及到老百姓的人身财产安全,所以分秒必争。希望结合语音识别、文本语义理解技术把这个效率提升。
(左边例子)场景有很多特点,比如 ASR 转写的错别字、不流畅、口语化等问题。目标是希望基于自动语音转写分析推断报警地点。
我们提出了一整套系统方案,包括对话理解的口语顺滑纠错、意图识别,以及结合一套搜索从召回粗排精排的机制来最终实现地址推荐。链路已经比较成熟,在中国上百个城市的消防系统落地;消防从报警对话识别出具体的地点,结合推荐、匹配、地址围栏判断具体地点,对应出警。
2、教育拍照搜题
接下来介绍教育行业的拍照收集业务,在 To C、面向老师端也有不少需求。
拍照搜题有几个特点,本身有增量更新的题库,用户群体较大。另外,不同学科、年龄段对应的领域知识性很强。同时是一个多模态的算法,从 OCR 到后续语义理解、搜索等一套链路。
近几年针对拍照收集构建了一整套从算法到系统的链路。
比如,在手机拍照以及 OCR 识别后,会进行拼写纠错、学科预测、分词、词权重等一系列工作,帮助做到检索。
由于 OCR 对英文识别没有空格,训练了一套 K12 英文的预训练算法模型,进行英文的切分。
同时,学科、题目类型都是未知的,需要做一个提前预测。使用多模态,结合图片和文本进行意图理解。
拍照搜题跟普通的用户搜索不太一样,用户搜索往往 query 是比较短,拍照搜题往往是一道完整的题目。题目里面很多词是不重要的,需要做词权重分析,丢弃不重要的词或者排序予以降权。
在拍照搜题场景中优化效果最明显的是向量召回。性能上的要求不太能用 OR 的召回机制,需要用 AND 逻辑,对应特点是召回比较少。去提升 recall 的话,需要做 term weighting、纠错等较冗余的模块。(右图)通过文本加向量的多路召回效果,超过纯 or 逻辑,在 latency 降低 10 倍。
拍照搜索的链路包括了图像向量召回、公式召回、个性化召回。
提供两个例子。第一个是纯文本的 OCR 结果,(左列)旧结果是基于 ES,简单的 OR 召回,加上 BM25 的结果,(右列)经过多路召回以及相关性召回的链路有较大提升。
第二个是拍照含有图形,多路中是必须结合图片召回。
3、电力知识库统一搜索
在企业搜索中有很多半结构化和非结构化数据,提供统一搜索,帮助企业整合数据资源。不仅在电力,其他行业也有类似需求。这里的搜索不再是狭义的搜索,还包含了对文档的预处理文档的AI和知识图谱的构建,还包括后续桥接问答的能力。以上是在电力知识库里,去做一套制度标准文本,从结构化到检索,到应用端的示意图。