QQ浏览器搜索相关性实践向量算法

作者:jesangliu,腾讯PCG应用研究员

1、前言

2、业务介绍

●融合系统:对自然结果、垂搜特型结果(卡片)进行整页异构排序,包含点击预估、异构多目标排序等阶段,同时也会进行一些业务顶层的轻量重排序或微调。

●通用垂搜子系统:垂搜检索系统由看点搜索系统演化而来,主要用于对接入对高速迭代、快速部署有很高要求,与通用检索逻辑有较大差别的业务。整体系统的特点是部署便捷、快速,这套系统从设计之初就充分考虑了多业务快速接入的场景,目前承接的主要是特型形态的结果。

●主搜子系统:对十亿级规模的索引库中,对用户的Query进行检索,一般会经历召回、精排两个重要阶段。主要的Doc形态是传统Web网页、Web图片、H5形态网页等,这套系统的特点为,业务形态、效果相对稳定、持续,问题类型有相对的共性,适合算法处于稳定器的业务,主要的难点在于满足用户的中长尾需求。

●召回层:包含文本检索和向量检索两部分,文本检索会按照Query的核心词进行语法树构建,由倒排系统进行Doc归并、截断产出文本召回集合。向量检索部分利用深度模型将Query、Doc映射到隐空间,在线利用向量检索引擎召回与Query相似的N条结果,相比倒排检索能够充分利用PLM对Query和Doc的表示进行学习,实现近似一段式检索,相比传统的召回+粗排的二段式检索有更好的效果。

C、评估体系

●interleaving:Interleaving是一种在线评估用户点击偏好的实验。它是将两个排序列表的结果交织在一起曝光给用户,并记录用户最总的点击偏好。整体的感知增益计算逻辑:

其中wins代表用户最总点击了A列表结果,ties代表持平,loss则代表落败。

则代表感知增益胜出,反之则代表落败。

●GSB:GoodvsSamevsBad是一种采用专家评估的手段。标注专家会对左右两边的排序列表进行评估,一边是来自基线线上,一边是来自试验组线上。对于标注专家而言,他不清楚那边的结果是试验组产生的,然后对这两个排序列表进行打分,GoodorSameorBad。最后统计统计整体的GSB指标:(Good-Bad)/(Good+Same+Bad)

A、1.0时代,群雄割据->三国争霸

对比思考:从系统设计上看,「大一统」VS「抽象高级特征」,是两种完全不同的思路,前者更符合机器学习的理念,暴露更多的子特征细节能够提供更多的信息;后者的思路,对目标进行了高度抽象,具有更好的可解释性。从表面看似乎没有明显的优劣可言,但从工业实践经验看,这里还是有较强的实践结论的。

下面揭晓一下结论,从工业系统设计的角度看,更倾向于「抽象高级特征」这种方案,而非「大一统」的方式。理由有以下几点:

●可解释性:工业算法系统的首要考虑就是如何支撑算法持续、高效迭代。在多目标导向下,「大一统」方式下子特征规模已经达到了100维以上,逆序的问题归因相比「高级特征」来讲,归因难度大、问题会更分散,这个模式也间接鼓励算法同学去新增能够带来指标提升的新特征,而不是去迭代已有的特征。

演进总结:

B、2.0时代,统一复用

人效问题:系统细节的差异,算法角度看,在内部的模型、特征体系、数据结构、代码库,全部是完全不同的。维护两套大型复杂系统,分别投入则必须要面对人力折半的问题,背后的压力是可想而知的。

C、领域自适应

最近几年的NLP领域,预训练方向可以称得上AI方向的掌上明珠,从模型的参数规模、预训练的方法、多语言多模态等几个方向持续发展,不断地刷新着领域Benchmark。预训练通过自监督学习,从大规模数据中获得与具体任务无关的预训练模型。那么,在搜索领域下,如何将预训练语言模型,与搜索语料更好的结合,是我们团队一直在探索的方向。

在实践过程中,我们发现通用预训练的语料,与搜索场景的任务,依然存在不小的gap,所以一个比较朴素的思想是,是否可以将搜索领域的自有数据进行预训练任务。在实际的实验中,我们发现将搜索领域的语料,在基础预训练模型后,继续进行post-pretrain,能够有效的提升业务效果,对下游任务的提升,最大可以大致9%。

SemanticMatching:注重Term间的相似关系,建模Term、Phrase、Sentence间的相似关系。(偏向query,title表达是不是相似,同时认为query和title的重要性一样)

●语义结构Compositionalmeanings:语义匹配的文本通过是具有一定语法结构的,使用语义结构的含义会非常有效。

早期的做法:行业内其实很早就有提出RelevanceMatching的概念,在Transformer结构以前的主要工作,大多通过对Query和Doc的文本建立匹配矩阵,矩阵中的每一个元素是对应位置的Term相似度,然后再通过对匹配矩阵的命中Pattern进行提取,具体来说:

●MatchPyramid(中科院2016AAAI),构建了基于字面匹配或Embedding匹配,构建query-document匹配矩阵,命中提取使用CNN+DynamicPooling+MLP完成。

●DRMM(2016中科院CIKM),提出了一个交互得模型结构,Query中的每一个Term分别与Doc中的所有的Term交互,将相似度离散到直方图上,通过MLP,以及Q中的TermGatingNetwork产出得分;其中TermGating尝试了两种方式,分别是单层FeedForward+softmax和无监督的IDF,实验效果是后者更好。由于Embedding是直接使用的300dword2vec,因此参数量非常小——Matching部分有155个参数,TermGating部分有300个参数。

●K-NRM(2017SIGIR),主要贡献在于提出了RBFKernel的Pooling方式,与前作最大的不同是,Embedding使用随机初始化并端到端训练的方式,总参数量达到了约5000w(绝大部分来自Embedding层)实验效果显著优于DRMM,其中端到端训练Embedding带来了最大幅度的提升,KernelPooling相比基线的pooling方式能带来小幅提升。

●PACRR(2017EMNLP),主要创新点:在对每一个queryterm完成pooling后,使用LSTM建模整体的querycoverage。LSTM每个timestep的输入是concat(pooling后的querytermrepresentation,normalized_IDF)。LSTM的输出维度是1,LSTM的输出直接作为最终的score。

为了兼顾SemanticMatching和RelevanceMatching两者的能力,我们提出了HybridMratrixMatching(HMM)模型,提升模型在核心成分精确匹配和语义泛化匹配两方面的综合能力。具体优化点为:

●Query-Title匹配矩阵建模:

隐式匹配矩阵构造:基于BERT产出的最后一层的tokenembedding,通过dense+cosinesimilarity的方式构造Q-T语义匹配矩阵。

显式文本匹配矩阵构造:基于query与title分词后的词粒度命中信息,构造Q-T精确匹配矩阵,并进一步打平映射到与BERT输入信息相同的token粒度。

●语义匹配与文本匹配信息融合:

CNN汇聚两种匹配矩阵信息:在模型输出层,对隐式和显式匹配矩阵拼接产出N个|Q|x|T|匹配矩阵,通过3D-CNN+WeightedSumPooling的方式来捕捉语义匹配和Term显式匹配相结合的命中pattern,产出匹配矩阵特征向量。

最终得分融合:将匹配矩阵侧产出的特征向量与BERTCLS特征向量拼接,融合产出最终的模型得分。

为了能够验证HybridMratrixMatching(HMM)模型在搜索场景下的匹配能力,我们对模型进行了离线和在线两方面的效果验证。

THE END
1.数据结构与算法设计分析——常用搜索算法二、图的遍历算法 (一)深度优先搜索(DFS) (二)广度优先搜索(BFS) 三、回溯法 (一)回溯法的定义 (一) 上界与下界 (二) 分支限界法的定义 (三)分支限界法的应用 五、回溯法与分支限界法的对比 一、穷举搜索 穷举搜索法也被称为穷举法,其基本思想是将问题的所有的候选解都枚举出来,然后对候选解按照某种顺https://blog.csdn.net/qq_43085848/article/details/134363847
2.搜索引擎是如何理解你的查询并提供精准结果的?一、搜索引擎简单介绍 搜索引擎是一种强大的工具,帮助你快速找到互联网上的信息。它通过使用复杂的算法,迅速检索成千上万甚至数十亿的网页,并将与你的搜索查询相关的结果呈现给你。搜索引擎背后涉及多种关键技术,它们协同工作以实现高效的信息检索和呈现。以下是一些主要的搜索引擎技术:这些技术共同推动搜索引擎的https://baijiahao.baidu.com/s?id=1818694222485003162&wfr=spider&for=pc
3.Python3实现旋转数组的3种算法小结python二分查找算法是一种常见的搜索算法,适用于有序数组。对于旋转数组,我们也可以利用二分查找的思想,但需要对搜索过程进行一些调整。具体步骤如下: 确定数组的左右边界; 通过二分查找,确定目标元素所在的子数组; 根据子数组的大小和左右边界的位置关系,确定目标元素的位置并返回。 https://www.jb51.net/python/30995639p.htm
4.常见的五种搜索算法搜索算法 现阶段一般有枚举算法、深度优先搜索、广度优先搜索、A*算法、回溯算法、蒙特卡洛树搜索、散列函数等算法。在大规模实验环境中,通常通过在搜索前,根据条件降低搜索规模;根据问题的约束条件进行剪枝;利用搜索过程中的中间解,避免重复计算这几种方法进行优化。https://www.dingshops.com/pub/pjgxgrr12.html
5.JVM高频面试题合集那现在我们上面所说的引用计数就不能解决这个该问题,这时我们就需要使用另外一种定位方式——Root Searching(根可达算法或根搜索算法)。 2、Root Searching(根可达算法或根搜索算法) 所谓的“根”即是:所有的程序都是从 main 方法来运行,在 main 方法里面 new 出来的对象即为根对象。 https://www.tulingxueyuan.cn/tlzx/javamst/5513.html
6.自动驾驶路径规划五大常用算法汽车技术以上几种算法简单总结: 最经典普适的Dijkstra算法,如有最优路径存在一定能找到最与路径,但是扩展的结点多,效率低下;和A*算法适合全局路径规划,利用启发式函数,搜索范围小,提高了搜索效率,但不适用于高维空间,计算量大;D*算法适用于局部路径规划,搜索效率高,但是计算量大。 https://www.auto-testing.net/news/show-116633.html
7.常见的搜索算法有哪几种?全国分支限界算法(Branch-and-boundSearchAlgorithm)https://www.1633.com/ask/150851.html
8.2025SEO优化社媒平台AI内容搜索优化:SEO策略与实战案例本文详细说明在各大社媒平台的搜索结果中出现AI内容,所以AI内容的SEO优化策略非常重要。 通过分析AI搜索数据、效果类型及算法规则等内容,玫瑰互动SEO咨询公司提供具体的SEO优化步骤和实战案例,帮助提升AI内容在搜索结果中的排名和可见度。 - 本文内容由玫瑰互动SEO咨询公司提供 - https://zhuanlan.zhihu.com/p/12912128872
9.全新复杂网络社团划分LocalSearch算法,效率超经典最快算法5倍近期发表在 Nature 子刊 Communications Physics 上的一项最新研究提出一种新的社团检测算法——局域搜索算法(Local Search)。该方法在多个标准基准测试中表现优异,尤其是在检测社团层次结构方面。与传统的社团检测方法相比,LS算法在保持高准确性的同时,显著提高了效率,例如在三十万节点、一百万条连边的大规模PubMed网络https://www.thepaper.cn/newsDetail_forward_28059124
10.人工智能技术导论复习大纲51CTO博客1.遗传算法是一种什么样的算法? 它适合于解决哪一类问题? 遗传算法时人们从生物界按自然选择和有性繁殖、遗传变异的自然进化现象中得到启发,而设计出来的一种随机优化搜索算法。 遗传算法适合解决先验知识缺乏, 希望寻找最优解,搜索空间不连续的这一类问题,如机器学习、规划、聚类、控制、调度等领域的问题。 https://blog.51cto.com/u_15080020/4198917
11.《集异璧之大成》阅读笔记及杂谈(附录一):人机博弈蒙特卡洛算法也常用于机器学习,特别是强化学习的算法中。一般情况下,针对得到的样本数据集创建相对模糊的模型,通过蒙特卡洛方法对于模型中的参数进行选取,使之于原始数据的误差尽可能的小。从而达到创建模型拟合样本的目的。 超复杂的搜索树 1·五大常用搜索算法https://www.gameres.com/846786.html
12.黑帽SEO技术手法详解,10分钟入门黑帽SEO干货关键词堆砌是比较低级的一种手法,短时间内可以获得很不错的排名。可目前来说,这种手法已经是过去式了,搜索引擎判断这种作弊行为的算法已经相当成熟,所以,一旦网页上出现关键词堆砌现象,网站很容易被惩罚。 网站SEO作弊之关键字堆砌 关键字堆砌是指在一个网页中非常密集地放置关键字。关键字堆砌的常见形式,如:标题、https://www.jxbh.cn/article/2285.html
13.网站优化人员需知的100个问答题!三、网站源码,不要经常修改网站标题与标签,搜索引擎抓取后,可能造成网站排名下降,甚至搜索降级,拔毛。 四、网站构造,改变一个网站结构,就等于让搜索蜘蛛重新来过,不要随便对网站改版,一般都是被K站没法了才改版。 五、搜索引擎算法,搜索引擎本身算法的更新,导致排名下降。 https://www.west.cn/info/html/wangzhanyunying/sousuoyouhua/20171124/4116709.html
14.自动驾驶中的决策规划算法概述常见的全局路径规划算法包括Dijkstra和A算法,以及在这两种算法基础上的多种改进。Dijkstra算法[3]和A*算法[4]也是在许多规划问题中应用最为广泛的两种搜索算法。 图2. 全局路径规划示意 1. Dijkstra算法 Dijkstra算法是由计算机科学家Edsger W. Dijkstra在1956年提出,用来寻找图形中节点之间的最短路径。在Dijkstra算法https://m.elecfans.com/article/994026.html
15.量子计算与量子密码(入门级)(下)量子算法:使用量子计算,可以在一次查询中找到目标元素,这是一个量子搜索算法的示例。以下是算法的描述: 初始化:首先,创建一个量子系统,包含两个量子比特,初始状态为∣ 00 ? |00\rangle∣00?。 量子操作:应用Hadamard门到每个量子比特,即H ∣ 00 ? = 1 2 ( ∣ 00 ? + ∣ 01 ? + ∣ 10 https://developer.aliyun.com/article/1374374
16.阿里面试官:刷4遍以下面试题,你也能从外包成功跳到大厂25.根搜索算法? 26.JVM中三种常见的垃圾收集算法? 27.标记-清除算法? 28.复制算法? 29.标记-整理算法? 30.分代收集算法? 31.垃圾收集器? 32.Stop The World? Mysql 1.什么是数据库? 2.如何查看某个操作的语法? 3.MySql的存储弓擎有哪些? https://maimai.cn/article/detail?fid=1650337220&efid=EBt1w2lyYVHJKvwIFwMu0w
17.证据计数法在落子类机器博弈中的应用3.2 PN2搜索算法 文献[1]提出了PN2算法以减少PN算法所占用的内存空间,文献[3]对算法做了更详细的阐述.PN2由两个PN搜索组成,其中第一层PN(称为PN1)调用第二层的PN(称为PN2)来对PN1的最佳前端节点进行评估.由于PN2受到能够存放在内存中的最大节点数的限制,文献[3]提出了一种对PN2所占用内存的限制方法https://xuebao.neu.edu.cn/natural/article/html/2016-8-1070.htm
18.模型评估(二)网格搜索可能是最简单、应用最广泛的超参数搜索算法,他通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方式十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大https://www.jianshu.com/p/fd51122d8835
19.科学网—[转载]转载认清虚拟筛选中的陷阱为了达到这个目的,几个关键的参数需要被经验性地测试和优化,包括(1)抽样算法及其参数;(2)张力能量(strain energy)截断值;(3)每个分子的最大构象数;(4)用于删除重复构象的rmsd阈值。训练集必须明显含有几种生物活性构象已知的对照分子,最常见的是X射线共晶或核磁共振研究。遵循良好的建模实践,从训练集中确定的最佳https://wap.sciencenet.cn/blog-3386602-1162809.html