QQ浏览器是如何提升搜索相关性的?

399187edd1347533396c9db61dbdbf74.gif导言 | 搜索相关性主要指衡量Query和Doc的匹配程度,是信息检索的核心基础任务之一,也是商业搜索引擎的体验优劣最朴素的评价维度之一。本文作者刘杰主要介绍QQ浏览器搜索相关性团队在相关性系统及算法方面的实践经历。值得一提的是,本文会特别分享在QQ浏览器搜索、搜狗搜索两个大型系统融合过程中,在系统融合、算法融合、算法突破方面的实践经验。希望对搜索算法以及相关领域内的同学有帮助。

e62a8f563973262019825659e7d47ac8.jpeg业务介绍

搜索业务是QQ浏览器的核心功能之一,每天服务于亿万网民的查询检索,为用户提供信息查询服务,区别于一些垂直领域的站内搜索,从索引规模、索引丰富度来看,QQ浏览器的搜索业务可以定位成综合型的全网搜索引擎。具体来说,检索结果的类型,不仅包含传统Web网页、Web图片,也包含新型富媒体形态,例如小程序、微信公众号文章、视频四宫格卡片、智能问答等移动互联网生态下的新型富媒体资源。

6f847968d85273678869ee13fb54f519.png

从相关性的视角看,QQ浏览器的业务场景,既包含传统综合搜索引擎的基本特点,即承接不同群体、不同兴趣、不同地域的海量用户的查询Query。从需求角度来看,QQ浏览器的搜索业务有着大量的用户主动查询,其需求种类、表达形式、结果偏好,存在非常大的差异性,对系统的检索、Query理解、相关性判别有着巨大的挑战;同时,从资源类型角度看,依托集团自有的生态优势,QQ浏览器的搜索场景包含海量的新形态的内容搜索,例如微信公众号文章、企鹅号图文、企鹅号视频,这些资源与传统网页在内容表述、内容形式上与传统网页有着较大的区别,也对相关性算法提出了新的要求。

ed977dbfc1e49ef2dbe634857020ec7d.png

77aa4245e7b8faa15ed7a32afde880fe.jpeg搜索相关性介绍

1)搜索主体框架

cb140851cc6119f759bdebcefc73c500.png

在介绍相关性实践前,首先介绍下系统当前的现状。我们于2021年完成了看点、搜狗两套系统的系统级融合,经过不断地思考、讨论、推演、演化后,整体系统的整体最终演化为如图所示的样子(示意图)。在整个系统融合的过程中,整个团队进行了充分的人员、技术融合,同时也进行了相当长时间的系统改造。系统从逻辑上分为了两大搜索子系统,即主搜子系统和通用垂搜子系统,分别由搜狗系统、看点系统演化而来,同时在系统顶层将两个子系统结果进行进一步融合排序,最终输出检索结果。具体来说分位,分为三个逻辑层次:

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

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

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

2)算法架构

7fbf3cadc7cb2d74c04bce7d54574740.png

搜索算法的计算流程,大致可以分为召回和排序两大逻辑部分。从算法处理的Doc规模来看,在工业界的一般算法架构,都是类似金字塔型的漏斗结构(QQ浏览器目前的主搜子系统、垂搜子系统,虽然定位不同,但都遵照了上述模式):单个Query会从海量的索引中,检索出一个初始Doc集合,然后经过系统的几个重要的Ranking阶段,逐步对上一个阶段的Doc集合进行筛选,最终筛序出系统认为最好的N条结果。具体来说,如图所示可以分为:

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

第二,粗排层:粗排层使用计算复杂度相对低的方式进行特征捕捉,基本上分为三类:第一类为相关性类特征,文本相关性、语义相关性,其中语义相关性受限于这个位置的算力,主要采用双塔结构,将Query、Doc表示为向量,用点积或者半交互得到。第二类为Query、Doc的静态特征,例如Query的一些长度、频次、Doc质量、Doc发布时间等。第三类特征为统计类特征,例如历史窗口下的用户行为数据。

第三,精排层:对粗排层输入的Doc集合进行更精细化的区分,按照搜索多目标来,精排层要对Doc以下几个维度进行综合判断,例如相关性、时效性、质量权威性、点击预估等几个维度进行综合考量。

相关性计算的位置:按照上述介绍的算法架构,QQ浏览器的搜索相关性计算主要分为粗排相关性、精排相关性两部分,其中粗排相关性用于在万级别->百级别这个筛选阶段,算法大部分使用基于倒排的文本匹配特征,同时加上双塔结构的语义特征,在计算复杂度相比精排更轻量;精排相关性,主要用于百级别->个级别的筛选,算法相比粗排,利用了Doc的正排数据,建模方式更精细和计算复杂度也相对更高,本文在算法实践方面,会偏向于介绍团队在精算阶段的经验。

3)评估体系

搜索相关性的评估,主要分为离线和在线评估。离线评估主要看重PNR以及DCG的指标变化,在线评估上主要看重interleaving实验以及人工的GSB评估。下面将详介绍几种评估指标的计算方式:

第一种,PNR:Positive-Negative Ratio是一种pairwise的评估手段,用来评估搜索相关性效果。它的物理含义是在一个排序列表中的结果按照query划分,对每个query下的结果进行两两组pair,计算正序pair的数量/逆序pair的数量。值越大说明整个排序列表中正序的比例越多。

第二种,DCG:Discounted Cumulative Gain是一种listwise的评估手段。它的物理含义是整个排序相关性,并且越靠前的item收益越高。

e96d99c9902bd9f7ae4c62bbafeaa171.png

其中r(i)代表相关性label。一般而言K选择1或者3。

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

c390b65b4983ed01275525822dbf6f6c.png

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

0503c7b764e3caac2e5785c3a9a3ca17.png

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

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

(Good-Bad)/(Good + Same +Bad)。

576a1cc3ca3eed045ecaf4e6930e2bd5.jpeg相关性精算的系统演进

搜狗搜索作为一款历经迭代18年的搜索产品,在数据积累、技术打磨、系统成熟度方面有很强的先天优势。QQ浏览器·搜索是搜索行业较为年轻的新人,在架构选型、技术代际、历史债务方面有很强的后发优势。为了兼顾两家之长,在系统融合的过程中,团队的首要目标就是充分融合两套系统的特有优势。以相关性视角来看,我们大致经历了以下几个改造时期

1)1.0时代,群雄割据->三国争霸

从相关性的视角看,面临最大的难题是两套系统相关性得分不可比的问题。具体来说:

标准差异:两套系统的相关性判定标准、标注方法不同,从根本上不可比。

建模差异:两个系统对于多目标(相关性、时效性、点击、权威性)的建模方式存在较大差异:主搜系统以End-To-End思路解决搜索多目标的问题,具体来说使用GBDT作为融合模型,所有子特征一并送入融合模型,我们后继称之为「大一统」模型。垂搜系统对多目标进行了进一步的拆解,尽量将同一个维度的特征系列汇聚形成高级特征,以相关性为例,垂搜的会存在一个单独的基础相关性精算阶段,输出相关性高级特征,再将高级特征替换所有的子特征的方式进入融合排序,我们后继称之为「抽象高级特征」。

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

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

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

第二点,业务需求:「大一统」方式下,一旦脱离该阶段的多目标排序后,后继的更High-Level的融合场景即失去判断相关性的载体,无法对相关性维度进行比较。更High-Level的融合不得不将必要的子特征继续向上传递,往往看到某些子特征从最底层一路透传到最顶层,对子特征的可比性、覆盖率、迭代维护成本都要很大的要求

第三点,特征管理:High-Level的业务同学大量使用子特征也会造成管理混乱,一旦某些子特征在后继的业务中使用,该特征迭代就与其在后继业务中的形成了耦合,例如比较常见的通过某个特征MagicNumber进行过滤,很有可能的情况是,特征迭代时也要去调整该MagicNumber。所以,以相关性为例,使用具有物理含义的统一「高级特征」会大大减少子特征的管理问题。

改进方式:我们在垂搜子系统、主搜系统按照同样的设计思路,抽象了一个基础相关性计算阶段,这个阶段的目标是单目标的相关性,即不考察Doc的质量、时效性等。这一阶段会接管所有刻化相关性目标的特征,通过相关性模型,输出相关性高级特征。同时,相关性高级特征,会经过Probility Calibration算法将score转化为是否相关的概率(对齐标准、档位,跨系统可比),同时具有较好的分布稳定性、跨Query可比性,即具有物理含义的相关性得分。应用视角上看,分为两部分,即交给融合排序模型,替换一批刻化相关性的子特征,另外一部分是直接用于High-Level的场景,例如某些业务会将相关性大于某个阈值的Doc进行过滤或者提权。

演进总结:首先,我们明确了标准。主要的业务场景对齐了相关性标准,特别是每个档位物理含义。其次,具有物理含义的相关性得分:对相关性特征进行归纳和融合,通过Probility Calibration算法对得分进行相关概率校准,在ranking任务能力尚可的情况下,能够保证跨Query、跨业务可比,同时从特征管理的角度看,也从特征割据的时代进入了三足鼎立的时代。

2)2.0时代,统一复用

1.0阶段我们通过校准算法、相关性标准统一,输出了具有一定的物理含义相关性得分,可以基本做到子特征保持差异的情况下,基本实现跨业务可比的问题。此时,虽然校准可以解决系统内部的实现上的差异问题,但团队面临更核心问题是系统的近一步融合问题,具体来说:

第一,算法融合:如果说「大一统」「高级特征」两种模式的统一是系统级方法论的对齐,那么「相关性算法融合」角度,则需要进一步将执行细节对齐。如何最大化算法能力,兼两家之长,是最基本的融合初衷。

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

在上述背景下,22年重新对两套系统进行了整合,力图用统一的一套相关性服务,服务于主搜索系统和垂搜系统。这里介绍下我们其中一项重要的重构,重新设计构建了相关性精算服务,统一了主搜系统和垂搜系统的相关性能力,做到90%代码级别的复用。

c7c0240d97a125b58a4efd179ecf665d.png

相关性精算服务:新的相关性精算服务,定位于精算旁路系统,为搜索精排阶段提供高级相关性得分,服务内部可以高速并行获取Doc正排,进行精细化的相关性特征计算、GPU计算、模型预测等。算法统一,一套代码,90%的特征属于通用基础匹配,10%特征根据场景差异,对该业务的独有问题进行独立刻化。具体来看,新的服务相比之前提供的能力包括:

调研实验效率:新的相关性精算服务,调研实验周期由周级下降为天级,背后的效率提升,主要是由于模块位置带来的调研环境搭建成本上的区别。在以前的系统,相关性大部分非GPU类的特征,均在召回层实现,这样带来的问题是,由于召回层的架构大部分都是分布式系统,调研成本相比精算模块需要更多的机器成本,这也造成了该阶段的调研需要团队共用1-2套调研环境,调研&实验成本将会大大增加。

1738f4742573e66865ff9cb0b1377eb9.png

算力能力:相关性分布式计算,最重要的贡献是能够让系统的计算条数变的更多,这种思路在GPU并行技术出现以前是非常有效的设计,将相关性计算放到召回层不仅能够最大限度的利用分布式架构,同时也节省了Doc正排在HighLevel获取的存储和带宽,这部分正排数据往往是召回层必须的可以兼顾复用。但最近几年随着深度学习、GPU并行加速技术在搜索系统重越来越多的应用,业务越来越需要重型计算,这样的重型计算是召回层的算力远远无法满足的,召回层的相关性计算只有基于倒排的特征,更关心是否命中、命中距离,缺少对未命中词与query的关系刻化。

算法独立性:相比之前最大的区别是,新的相关性精算服务,与召回层解耦。从基础数据结构、特包括Query信息、Doc正排,进行重构对齐,传导至特征设计、实现,也能够相应的进行统一。最终做到算法统一,一套代码,90%的特征属于通用基础匹配,10%特征根据场景差异,对该业务的独有问题进行独立刻化。

1786e8086610dfd0121fceeed9eebc77.png

f6ef7bb84af5a26ff8c4c1e80f912a0a.jpeg搜索相关性技术实践

1)相关性标准

QQ浏览器搜索下的相关性标准,主要用于基础相关性样本的标注,为了能精细化的表达是否相关这一概率,我们将相关、不相关这个二分类任务,拓展到了五档分类,能够提供更多的监督信息。同时,每一档的物理含义,在不同的业务下,尽量保持对等。例如,搜用搜索场景、视频搜索场景下,同一档位的Doc需要具有对等的相关程度,即应具备同一等级的相关性。这样做的好处是,在High-Level场景下,当分类能力尚可的情况下,通过Probility Calibration可以对不同的业务下的doc进行得分的比较,但仍可以对相关性内部特征的实现保留一定的差异性,对系统非常友好。

6c71c851c6c955afc58b2e122b8321a5.png


2)相关性的技术架构

8f65b4244ea3040d2addfe4631aefd63.png


3)深度语义匹配实践

  • QQ浏览器搜索相关性的困难与挑战

QQ浏览器的搜索业务每天服务于亿万网民的查询检索,因为业务场景偏向于综合搜索业务,每天的用户的查询表达都呈现海量量级,在这个场景下的用户Query天然的具备很强的长尾效应,对搜索相关性的匹配能力提出了巨大的挑战。

75fb6c5e29f4f0841bab7300378b422c.png


  • 深度语义的现状

为了解决一词多义等模糊表达的问题,QQ浏览器的搜索相关性场景,进行了大量的语义匹配工作实践。随着深度学习技术的兴起,基于预训练语言模型的方法,特别是基于BERT模型的语义匹配,目前是我们工作的主要研究方向。当前系统按照表达方式来看,主要包括基于表示的匹配方法(Representation-based)和基于交互的匹配方法(Interaction-based)。

基于表示的匹配方法:使用深度模型分别学习Query和Doc的Embbeding,在线通过cosine计算Query和Doc相似度来作为语义匹配分数。计算框架上,借鉴百度的SimNet双塔结构,由于在线计算相对交互式模型更友好,目前普遍应用于粗排语义相关性的计算。

基于交互的匹配方法:将Query和Doc(Title)拼接后输入给BERT模型,经过N层Transformer Block后,将CLS Token的Embbeding接入下游相关性任务,由于交互式普遍需要比较高的计算复杂度,一般用于QQ浏览器的精排阶段。

f7159377ab6088b9b6e266b0db03b50b.png


  • QQ浏览器搜索相关性深度语义实践

相关性Ranking Loss:目前我们的相关性标注标准共分为五个档位,最直接的建模方式,其实是进行N=5的N分类任务,即使用Pointwise的方式建模。搜索场景下,我们其实并不关心分类能力的好坏,而更关心不同样本之前的偏序关系,例如对于同一个Query的两个相关结果DocA和DocB,Pointwise模型只能判断出两者都与Query相关,无法区分DocA和DocB相关性程度。因此搜索领域的任务,更多更广泛的建模思路是将其视为一个文档排序场景,广泛使用Leaning To Rank思想进行业务场景建模。

Pairwise 方法通过考虑两两文档之间的相关对顺序来进行排序,相比 Pointwise 方法有明显改善,因此我们对BERT模型的Fine-tuning任务,也进行了RankingLoss的针对性改进。Pairwise Loss下的训练框架,任务输入的单条样本为三元组的形式,在多档标注下,我们对于同一Query的多个候选Doc,选择任意一个高档位Doc和一个低档位Doc组合成三元组作为输入样本。

0cd278b70095562e2eeba27f0b6fa0fa.png


深度语义特征的校准问题——Ranking Loss的问题:相关性是搜索排序的基础能力,在整个计算流程的视角看,相关性计算不是最后一个阶段,所以当相关性内部子特征的目标如果直接使用RankingLoss,要特别注意与上下游的配合应用,特别要关注单特征的RankingLoss持续减少,是否与整体任务的提升一致。同时,RankLoss由于不具有全局的物理含义,即不同Query下的DocA和DocB的得分是不具有可比性,这直接导致了其作为特征值应用到下游模型时,如果我们使用例如决策树这种基于全局分裂增益来划分阈值的模型,会有一定的损失。

49c39cebae0feabb3efdf1b695015226.png

搜索系统一般为了追求可解释性,往往会将高级特征通过一些解释性较强的模型进行融合。以相关性高级特征的产出过程为例,我们在产出整体的相关性得分时,会使用例如XGB模型对相关性N维子特征进行最终的打分预测,如果此时放大这个打分过程,即当训练好的决策树进行最终模型预测时,当执行到某一个决策树时,会按照特征分裂值判断走左子树还是右子树,这个分裂值就要求该特征在全部Query下都按照此分裂点判断,这里如果当前的特征值域在不同Query下差异很大,在个别Query下的打分准确率一定会大打折扣。

76d82ba6bbf6b76be14c3ac3bfc48ea6.png

实践中我们对语义特征的ranking loss,也同时进行了一部分pointwise loss结合,目的是希望单特征得分的分布尽量在全局有一定的可比性,即对其进行一定Calibration能够帮助相关性模型整体的PNR提升。由图所示,当单特征持续以PairwiseLoss训练,随着训练步数的增加,单特征PNR是持续上升的,但其放入相关性模型后,整体的PNR并不是线性上升的,此时观察单特征ECE(Expected Calibration Error 期望标定误差)有较大波动。如果将单特征变成Pairwise+PointwiseLoss,发现随着训练过程的进行,模型ECE持续下降,单特征PNR微弱上升,且相关性整体的PNR能够上升,且最终高于单纯使用Pairwise的方式。

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

60e0de46aaf4a8afa5d66247f59488f9.png

3f28b87e5204ccfb482b6db71d492393.png

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

4)相关性语义匹配增强实践

  • 深度语义匹配的鲁棒性问题

在NLP领域,预训练语言模型(Pretrained Language Model)已经在很多任务上取得了显著的成绩,PLM搭配领域Finetune也同时在工业界成为解决搜索、推荐等领域的标准范式。在搜索相关性业务中,行业内在2019年开始,就已将神经网络模型全面转为基于Transformer结构的模型结构上来。区别于传统的字面匹配,语言模型能够有效解决Term模糊匹配的问题,但大力出奇迹的同时,也引入了很多核心词缺失等问题。例如,基于预训练语言模型,“二手车”和“二手摩托车”会判定为比较匹配,但实际上二者明显不同。如何解决此类鲁棒性问题,是预训练语言模型下的语义匹配要解决的核心问题。

  • 什么是相关性匹配(RelevanceMatching)

搜索业务下的核心词缺失问题,我们认为传统的预训练方向并不能提供一个统一的解决方案,因为该问题属于搜索领域的特型问题,我们在实际工作中发现,搜索场景下很多形态的问题,与NLP的SemanticMatching任务的差异还是比较明显的,例如短Query和长Title的匹配。对此,我们更倾向于通过对特型问题独立建模和处理,为了强化搜索相关性的鲁棒性,提出了Relevance Matching的概念和对应的建模方式,二者的区别,具体来说:

Relevance Matching:注重关键词的精确匹配,相应的需要考虑核心词的识别、多种维度的要求。(一般需要关注query的重要性以及提取匹配信号,同时形态上Q比较短)

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

相似度匹配信号 Similarity matching signals:和准确的单词匹配相比,捕获单词、短语和句子的语义相关性/相似性更重要。语义结构 Compositional meanings:语义匹配的文本通过是具有一定语法结构的,使用语义结构的含义会非常有效。全局匹配 Global matching requirement:语义匹配通常将文本的两个片段作为一个整体来推理它们之间的语义关系。

b39666a5b4dd5c1f575ee436f994f4b7.png


  • 相关性匹配的相关工作

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

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

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

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

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

Bert以后的做法:大部分从预训练语言模型的角度,在MASK机制、外部知识引入、参数规模等角度进行研究,也取得了显著的效果提升。但在搜索相关性业务上,大部分交互式的应用方式,是将Query和Title完全拼接后输入Bert,最后在输出层基于CLS这个特殊Token的Embbeding做领域任务。目前我们了解到的是,除了CEDR这个工作外,很少有直接使用非CLS以外的Token的模型架构。这里可能对Transformer比较熟悉的同学会觉得,每一个Transformer Block内部架构其实会天然的对两两Term进行Attention计算,形成多头AttentionMap,与Relevance Matching中的Matrix的设计思路几乎一致,是否还有必要继续再手动进行一次Matri Matching的计算。对此我们在22年通过一系列实践,证明Relevance Matching的重要意义。

8278749e42348a6eecef516dbf83bdb1.png


  • 相关性匹配增强

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

第一,Query-Title匹配矩阵建模。隐式匹配矩阵构造:基于BERT产出的最后一层的token embedding,通过dense + cosine similarity的方式构造Q-T语义匹配矩阵;显式文本匹配矩阵构造:基于query与title分词后的词粒度命中信息,构造Q-T精确匹配矩阵,并进一步打平映射到与BERT输入信息相同的token粒度。

第二,语义匹配与文本匹配信息融合。CNN汇聚两种匹配矩阵信息:在模型输出层,对隐式和显式匹配矩阵拼接产出N个|Q|x|T|匹配矩阵,通过3D-CNN + Weighted Sum Pooling的方式来捕捉语义匹配和Term显式匹配相结合的命中pattern,产出匹配矩阵特征向量;最终得分融合:将匹配矩阵侧产出的特征向量与BERT CLS特征向量拼接,融合产出最终的模型得分。

eb8ad046b4f25fd8886dd7199f96d85e.png


  • 实验&效果

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

离线实验:我们对新模型进行了消融实验分析,其中几个比较重要的实验结论为:隐式MatchingMatrix结构,单独进行下游任务预测时,测试集的PNR、NDCG等指标几乎与只用CLS进行下游任务相同;(2)隐式Matrix+CNN后与CLS拼接融合后,整体去做相关性任务,在PNR、NDCG指标上看,相对只用CLS进行下游任务,相对提升大约1.8%;外部Matrix的引入,包括多层显示匹配矩阵,能够继续为HMM模型整体的提升带来2.3%的提升。外部匹配Matrix带来的额外信息能够带来效果提升,也证明了精确匹配能力在搜索这个任务中的考核占比是比较高的,将外部精确匹配信号的引入,能够帮助模型强化这部分能力。

在线实验:HMM模型目前已在搜索相关性场景下全量部署,实验期间我们通过ABTest系统和Interleaving系统对实验组效果进行观察,其中Interleaving感知相关性指标在实验期间显著正向,这也与模型升级对精确匹配、核心词命中能力提升等预期比较吻合。同时,我们每次项目实验评估,需要将实验效果送第三方评估团队进行SideBySide评估,由专家标注员对实验组和对照组进行Good、Same、Bad打分,最终随机Query下的送评结果显示,有比较显著的变好趋势。

57ec1aa18e3cf606d247894387c1f834.png

417c4e80a084e3baffbe05713940742b.jpeg

小结

搜索相关是一个充满了技术挑战的硬核方向。无数网民的检索需求、五花八门的查询表达、越来越新颖的内容模态,全部对系统的效果提出了极其艰巨的挑战。目前QQ浏览器搜索相关性团队的开发者,在搜狗并入腾讯的大背景下,逐步将两套系统的优势合并,完成大量的技术重构、‍技术债务清理,逐步形成了一个高可用、高性能的业界头部大型搜索系统。接下来,我们将继续在搜索相关性领域持续投入,结合工业界、学术界在NLP领域、AI领域等最前沿的技术突破,为提升业务效果不断努力。希望这些实践经验分享对你有帮助。

你可能感兴趣的腾讯工程师作品

d9c2331b6723b2bcd1ccb57b7e330e31.png

724177d9153c57ee93daed5fa32ff24d.png

| 由浅入深读透vue源码:diff算法

| 优雅应对故障:QQ音乐怎么做高可用架构体系?

| 详解全网最快Go泛型跳表【内附源码】‍

| 十亿人都在用的健康码,运维体系是怎么设计的?

技术盲盒:前端|后端|AI与算法|运维|工程师文化

9c6190bba549dbcd0985dbc938b08acd.png

🔹关注我并点亮星标🔹

工作日晚8点 看腾讯技术、学专家经验

点赞|分享|在看 传递好技术

b5e19d5462149e582baa161a31fb61b9.png

‍

‍

‍

相关推荐

大模型的Agent Skill功能,在LLM HTTP底层交互流中是怎么承载的?

网络文章文本的 skill,昨天我实现了之后也就开始好奇起 Skills 的底层原理了——相比起各种花里胡哨的 agrnt 应用,我一直以来都很对大模型在纯粹的 HTTP 交互层面是如何交互的更感兴趣。Skill 的全部"魔法"都发生在 system prompt 的措辞和 SKILL.md 文件的编写质量上——本质上是一种 prompt engineering + 文件系统的组合。但是各种天花乱坠的 skills,是如何在底层的 HTTP 中,与大模型——这个只会嘴遁的工具交互的呢?

QcloudCommunity的博客 401

万字入门AI Infra:深入理解大模型中的数学与Infra优化

关注腾讯云开发者,一手技术干货提前解锁👇AI Infra科普、入门或者进阶 ~~ 不到 5 万字,带你融会贯通理解大模型的数学、算法、硬件到系统工程。任何问题欢迎沟通交流。可怕,我竟然有点认同这句话。当然大概率是因为姚顺宇太懂AI了,而我则是因为无知者无畏。不过仔细想想,大模型推理中的数学逻辑确实不复杂,很多原理只需要高中数学知识就能看懂。但是为什么像 vLLM 这种推理系统这么复杂呢?本文将拆解大模型中几个核心操作(RMSNorm、Softmax、Causal Mask、Sampling)背后的数学与

QcloudCommunity的博客 1159

平平无奇的源码,竟藏着Agent的核心秘密?

System Prompt 是剧本,Skill 是剧本的扩展包,Agent Loop 是演员按剧本行动。欢迎留言,我们将邀请作者针对性回复你的评论,我们将选取1则优质的评论,送出腾讯云定制文件袋套装。,让 Agent 能主动"巡逻",而不只是被动等待用户消息。OpenClaw 的 System Prompt 分层结构。的"行为底线",任何 Skill 或用户命令都无法覆盖它。精华 2:Skill 的"按需加载"避免 token 浪费。精华 1:System Prompt 是"分层乐高积木"

QcloudCommunity的博客 424

QQ音乐Harness Engineering实践

一个看似简单的需求,背后可能牵动服务调用链、配置、灰度、埋点、错误码、接口契约和历史兼容性。当 AI 开始快速生成大量代码,真正的瓶颈就不再是"写不出来",而是"看不完、想不清、管不住"。在对话式编码阶段,一种典型的工作模式逐渐流行:开发者把需求丢给 AI,扫一眼输出"看起来对"就直接采纳,不审 diff、不追问逻辑、不验证边界。以音乐商业化业务为例,一个需求可能从 TAPD 单开始,经过需求评审、技术方案、服务影响面分析、IDL 契约变更、业务代码实现、测试验证、CR、灰度上线,最后才进入稳定运行。

QcloudCommunity的博客 712

从Prompt、Context到Harness,工程的三次进化与终局之战

同时,强制要求散落各处的决策记录(Slack、邮件、文档)全部迁移至代码仓库,确保 Agent 的唯一信息来源是可信的、版本受控的仓库。更坑爹的是,研究表明,当上下文过长时,模型会出现"中间遗忘(Lost in the Middle)"现象:它对开头和结尾的内容记忆较好,对中间大段内容的关注度大幅下降。这篇文章,我想带你完整走一遍这三次进化的逻辑:它们分别解决了什么问题,它们之间是什么关系,它们的边界在哪里,以及:当三者融合,AI 工程师的终极形态究竟是什么?大语言模型的本质,就是这位金鱼助理。

QcloudCommunity的博客 714

让Skill自己训练自己:8阶段Loop、3层评测、5维AND门控,从此实现自进化

所以每一轮改动都是有据可查的,不是「感觉这里可以优化」,而是「Case 41 挂了,因为 agent 把离职问题路由到了邮箱分类,但正确答案在通讯录,所以我改 root_index.md 加个易混淆提示」。但让我最后决定把它记录下来的,不是这的个「吸收」过程,而是它真的在替我探索我不想费脑力触达的边界,这看起来更像是一个机器智能应该有的样子。不准跨层,每轮只改一层的东西。但我经过这 19 轮之后觉得,更准确的描述是互补——你在明处看着,AI 在暗处替你试错,你看不见的那一半就是 AI 能贡献的地方。

QcloudCommunity的博客 1119

只加两行代码,为什么要两天?一文深度理解业务系统的复杂性

关注腾讯云开发者,一手技术干货提前解锁👇业务系统复杂性一直是令开发者头痛的问题。复杂的不是增加一个需求需要耗费多少时间,而是在增加一个需求后带来的蝴蝶效应:其它功能会不会受到影响、要如何去找到这些影响,最终如何实现系统正常运行......功能之间隐秘增加的耦合、不可避免的代码腐化在导致业务复杂性增加。大家都在说的软件开发提效到底在提什么?程序员日常工作中应该如何提升开发效率?敏捷开发、瀑布流式开发孰是孰非?欢迎阅读。业务背景与目标我依然非常清晰地记得某个时候,我所在团队 Leader 曾讲过一段话:“我担

QcloudCommunity的博客 708

从零设计生产级 Multi-Agent Harness:架构、评估、记忆、成本与 MCP 工具接入全拆解

在 AI Agent 领域,Multi-Agent Harness 指的是把多个 Agent 的能力、工具、状态、通信、编排、监控统一收束在一个运行时之内的框架。第三,Agent 路由。一个输入框,一个大模型,几个工具,一段写得很漂亮的 System Prompt,再配上一个炫酷的前端,看起来就像一个能干活的“数字员工”。Multi-Agent 完全不一样——它有计划、有中间步骤、有工具调用、有 Agent 协作、有重试、有反思、有最终合成。增加 Budget、权限、重试、压缩、轨迹评估、审计、回归测试。

QcloudCommunity的博客 705

拆完Hermes源码,我发现Agent的“自我进化“根本不需要训练模型

两个月 5.2 万 Star,Hermes Agent 用一个"LLM 审判官"机制实现了 Agent 的自我进化——不改模型权重,只改"怎么用模型"的策略。OpenClaw(社区昵称"龙虾"🦞)是 2025-2026 年最火的开源 Agent 框架,30 万+ Star,插件市场 ClawHub 里有数千个插件,能接入 Telegram、WhatsApp、Slack、飞书、企业微信——几乎是一个"个人 AI 操作系统"。Skill 是英语写的,Memory 是英语写的,审查 Prompt 也是英语写的。

QcloudCommunity的博客 904

AI Infra 其实没有多少新东西

传统 Infra 追求横向扩展,而 AI Infra 呈现 “AI 大型机”特性,是因为传统后台服务的可以容忍毫秒级延迟,但 AI 集群不行,GPU 的算力是 CPU 的数百倍,微秒级的延时等待也会造成很大的算力损耗,需要硬件的高度集成。在可预见的1-3年的未来,这样的专用硬件+网络的集中式架构很难发生比较大的改变。与之相似,模型推理的批处理就是将多个输入样本打包(batch),将原本串行的 N 次轻量的推理计算,合并为 1 次重量的计算,实现单位时间内处理更多的请求,提高了 GPU 利用率。

QcloudCommunity的博客 820

程序员越早想通这些越好

永远没有正确架构,你永远无法偿还完所有的技术债务,如同你永远不会设计出完美的界面,请避开完美主义的陷阱,永远没有完美的代码,能够满足当前需求,又为未来不管是自己还是他人留有扩展空间,就很好了。我们努力的方向就是将现实世界映射到有限的数据结构中,这就需要用户自定义类型,如果你的代码中包含类似 trader portfolio 这样的概念,你就可以使用他们的名称来建模,而不是使用基本数据类型复杂嵌套表述你的目的。从另一个角度看,代码里的注释都是补丁,是碎片化的,局部的注释很难推导模块整体的顺序及耦合关系。

QcloudCommunity的博客 464

RAG已死?不,是Grep回归了!

这样一来可以直接复用已有的计算缓存,只为新增的增量部分付全价,前面累积的大头按约 1/10 的缓存价计费。所以实际的工具组合方式是灵活的:Grep(默认模式)→ Read 是最常见的路径,但 Grep(content 模式)可以独立使用,LLM 也可以直接调 Read(如果已经知道文件路径),或者一次同时发起多个 Grep 并行搜索。它从零开始构建自己的对话历史,不继承主对话的消息,这意味着它搜索过程中产生的大量 grep 结果、代码片段都留在自己的 context 里,主对话只收到一段总结性的文本结论。

QcloudCommunity的博客 571

深入浅出Harness Engineerring之核心模式与理念

在智能体生命周期的关键节点(如会话开始、工具调用后)自动触发预设动作(如代码格式化),由系统确保关键流程被执行,不依赖可能被模型遗忘的指令。简单讲就是利用向量存储这个技术,来实现模糊检索,原理是:即使字面不同,但语义相近的文本,其向量在数学空间中的位置也很接近。根据命令类型、参数和影响,自动评估其风险等级(安全、有风险、危险),并采取自动执行、请求确认或直接拦截等不同策略。关键特性是可隔离、可重建、可扩展。不是一次判断就定终身,允许你改变、允许情况复杂,通过不断观察、思考、调整,越来越懂真实的你。

QcloudCommunity的博客 621

Harness Engineering实践心得:如何高效驾驭AI?

但如果这些经验被拆成一条条 Rule、一个个 Skill、一项项 Script 检查——"XAML 不能有中文"、"编译要用这个路径的 MSBuild"、"SVN 命令必须带认证参数"——AI 就能在秒级时间里"吸收"十年的踩坑经验。然后可以看到下方的图,我的PM会很顺利的调度其他agent分别负责不同的事项,遇到问题的时候也能准确的找到合适的agent。MCP 本质上是在扩展 AI 的"感知范围"——Rule 管"该怎么做",Skill 管"怎么操作",MCP 管"能看到什么、能碰到什么"。

QcloudCommunity的博客 838

从第一性原理思考 Agentic Engineering

需要注意的是,这一结论是有条件的:如果 AI 缺乏领域知识,过早介入反而可能引入 1.2 节所述的"似是而非"损耗——因此上下文供给(实践 1)是 AI 全链条参与的前提,而非结果。通过一个专门的自迭代 Skill 实现——当 AI 在协作过程中识别到自己被纠正(用户否定了 AI 的输出并给出了正确方向),它自动评估这个错误的根因,搜索现有的 Rules 和 Skills 中是否已有针对该类问题的处理规则。事实上,越是复杂的项目,工程师的认知负担越重(公理 3),AI 分担认知负担的潜在边际价值也越大。

QcloudCommunity的博客 755

万字干货!Harness Engineering如何工程化落地?

关注腾讯云开发者,一手技术干货提前解锁👇Harness Engineering 的概念已经火了有一阵了,全网很多文章基本都是在讲理念,讲为什么今天做 AI 开发,不能只靠一段提示词,也不能把模型当一个“更聪明的代码补全”。但与此同时,一个问题也在持续地发酵:这个问题特别重要。因为 Harness 这个词听上去很大,很像一个抽象的方法论,但它如果不能落到工程、目录、文档、脚本、工作流里,那它最后就只是一句漂亮的话。事实上,不同项目落地出来的 Harness,表面上可能完全不一样。有的项目是 CI 很强,有的

QcloudCommunity的博客 1160

全方位对比:Hermes VS OpenClaw

多账号矩阵运营 如果你的业务涉及同时管理多个社交媒体账号、多个平台的内容分发、多渠道的客户互动——OpenClaw是目前市场上的"无可替代的底座"。一个有专业背景的个人,现在可以快速构建一个垂直领域的AI助手:比如"财务分析Hermes"、"法律咨询Hermes"、"技术架构Hermes",直接通过微信提供服务,积累自己的专业IP。跨平台生态融合 如果你的工作流涉及飞书、Slack、Discord等多个平台的深度集成,需要这些平台之间的数据流转和联动——OpenClaw的生态支持是强大的。

QcloudCommunity的博客 1216

一文讲透:Harness Engineering即控制论!

而研发模式的升级我认为将会是一个飞跃的过程,之所以现在我们仍然需要需要参与编码,一个非常大的原因就是缺乏传感器和基建,仍然需要人来串流程,比如需要人来验证UI是否正确、需要人来告诉AI代码不符合代码规范,因此在有些场景我们仍然感觉 AI 完成的很吃力,但这不是 AI 能力不行,而是我们并没有为 AI 提供友好的环境……控制论中的突变理论介绍了矫枉过正和飞跃现象之间的矛盾,如果质变中经历的中间过渡态是不稳定的,那么他就是一个飞跃的过程,如果中间过渡态是稳定的,那么他就是一个渐变的过程。但是这些阶段要解决的。

QcloudCommunity的博客 1202

神级开源插件!一句话让QClaw变3D小镇,Agent工作可视化,赛博云监工

这个架构是翻了几次车才想通的—原有AI的实现机制是用 setTimeout 猜动画时长导致了幽灵 NPC、工位撞车、越改越崩,后面我停下来换了思路,推翻原有的架构,按照“意图+回传”的架构进行重构,之前的问题一次性全部解决。15 天,我和 AI 吵了 185 次架, 4.5 万行代码,开发了一款 QClaw / OpenClaw 的UGC游戏插件,这可能是人类跟 Agents 交互的新范式,插件已完全开源,有需要的欢迎自取~我天天用,用着用着我就在思考,Agent 产品现在的交互体验,基本都一个样。

QcloudCommunity的博客 1195

一文搞懂Hermes:新顶流Agent如何从经验中自我进化

Voyager 是一个能在 Minecraft 中自主探索、学习技能、无限积累能力的 AI Agent,它提出了 "Skill Library"(技能库)的概念——Agent 将成功的行为序列编码为可复用的技能函数,存储在一个持续增长的代码库中。如果 Skill 的名称和描述不够精准,或者用户的任务描述与 Skill 的触发条件有语义差距,Agent 可能会错过相关的 Skill。如果进程在写入过程中崩溃,目标文件要么是旧内容(还没被替换),要么是新内容(替换已完成),绝不会出现写了一半的损坏文件。

QcloudCommunity的博客 2628

自掏腰包一万元,拥抱AI这一年,我的工具、实践和思考

其实也很好理解,过往的每个领域(比如前端、后端、设计、测试等等)都主要是这个领域的从业者在为它添砖加瓦,但是大模型时代的 AI 应用领域却几乎是所有使用 AI 的人类一起在迭代,无分领域,无分文理,无分老少。因为每个时期的 AI 都有着不同的特点,很多时候当我费尽心思去钻研,自以为有点弄明白 AI 应该怎么玩的时候,基座模型和行业范式常常就会迎来颠覆式的变革,很多过往的经验都会倾覆,然后只能从头再来。过去一年多,被热议的 AI 范式大概是沿着四个阶段递进演化,每一个阶段其实都在解决前一个阶段的核心问题。

QcloudCommunity的博客 626

办公Agent的CI/CD时刻到来了

核心观点是:企业给员工配了一堆 AI 工具,试点跑了几百个,但真正拖慢 AI 转型速度的瓶颈不在模型能力,在"最后一公里":AI 输出和实际工作流之间的那道鸿沟。代码写完,打个 tar 包,开 FTP 传到服务器上,SSH 进去解压,改配置文件,重启服务,刷一下页面祈祷别 500。你复制,切窗口,粘贴到腾讯文档里,发现 Markdown 格式全乱了,手动调标题层级,代码块重新标记语言类型,表格散架了重排一遍。模型是越来越聪明了,但"生成"到"落地"之间那段路,还是你自己在走,一步一步,手动搬运。

QcloudCommunity的博客 607

4亿token买来5个教训:让6个AI Agent连写4天代码发生了什么?

Watchdog 检测到崩溃 → 启动诊断 Agent 分析原因 → 诊断 Agent 跑满 20 轮没搞定 → Watchdog 判定“已修复”,重启系统 → 重启的系统因为诊断 Agent 留下的环境变量被继承,连续 3 次拒绝启动 → 触发连续失败保护退出 → Watchdog 第 3 次巡检,发现进程和记录文件都没了,尝试手动重启,自己也停了。启动前我翻了论文、做了架构设计、写了监控+修复异常的脚本。这个发现让我的情绪从沮丧变成了兴奋——不是那种"终于修好了"的释然,是"我找到根因了"的快感。

QcloudCommunity的博客 583

赛博斗蛐蛐:9大模型决战三国志,天命在谁?

我猜是这样的,当Gemini面临决策的时候,一系列关键词比如 守城,劣势,粮草,三国等等,在语义层面的关联性中LLM发现了竖壁清野这个关键词概率非常高,所以以此为策略,然后再根据这个策略完美执行操作。MiMo 的外交是三方中最精明的。Kimi作为国产模型,也同样颠覆了我对他的看法,最后的比赛他甚至一度是优势者,存在很多夺冠的可能性,要知道他的对手可是claude和gemini,而他经常出兵慢,回过头来想想或许正是他的策略,毕竟中后期他的优势都来自于稳健的发展和较少的战斗频率(和claude比).

QcloudCommunity的博客 871

Claude Code是怎么知道你在骂他的?这 12 条发现值得关注

确实存在——5,500+ 行,集成了消息队列、工具装配、MCP 编排、会话状态、权限、分析、文件持久化和优雅关闭,基本上一个文件干了所有事。对抗虚假声明——"不要在输出显示失败时声称所有测试通过,不要压缩或简化失败的检查来制造绿色结果"。完整的 KAIROS 是一个持续驻留的守护进程,能感知你在不在电脑前、主动寻找有用的工作做,更像是住在终端里的全职同事。源码里藏着一个叫 "Buddy" 的电子宠物系统,完整度令人惊讶——这不是一个 TODO,而是一个从数值系统到 ASCII 动画都实现了的完整功能。

QcloudCommunity的博客 701

逆向深扒Claude Code源码,我发现了什么!?

Anthropic 内部用户获得更严格的质量控制 prompt、更好的验证机制(独立 Verification Agent)、以及针对 model 弱点的专门对策(如 Capybara v8 的 29-30% 错误声明率对策)。这不是代码混乱的标志——它是整个 Agent Loop 的心脏,所有的流式处理、工具调度、上下文压缩、子代理管理都在这个文件中协调。这种"胖核心"设计是刻意的:保持核心循环的原子性,避免分散到多个模块导致的协调复杂度。核心价值:Fork 代理的工具输出不会回到主代理的上下文窗口。

QcloudCommunity的博客 885

一文讲透如何构建Harness——六大组件全解析

本文将从"裸模型的四个硬伤"出发,逐一拆解 Harness 的六大组件——文件系统、Bash + 沙箱、记忆(AGENTS.md)、Web Search + MCP、上下文工程、编排 + Hooks——带你看清 AI Agent 真正的竞争壁垒,不在模型层,而在 Harness 层。如果你用过 Agent 做复杂任务,你一定有过这样的体验:一开始 Agent 的表现很好,但随着对话变长,它开始"变笨"——遗忘之前的约定,重复之前犯过的错误,甚至对同一个问题给出前后矛盾的回答。对于简单的问答场景,这无所谓。

QcloudCommunity的博客 758

Harness Engineering 来了,SDD 还有意义吗?

他们的解法是把「品味」编码进规则,然后用一个定期运行的「doc-gardening」Agent 自动扫描漂移、发起修复 PR——「技术债务就像一笔高息贷款,不断地以小额贷款的方式偿还,总比让债务不断累积要好」。代码仓库本地的、已版本化的工件,才是 Agent 所能看到的全部。在 Vibe Coding 模式下(即不做规划、随意向 AI 提需求的开发方式),大量设计决策、跨服务约定、「为什么不选另一个方案」的讨论,全部停留在一次性的 AI 对话里——下一个人,或者下一次 AI 会话,完全无从获取。

QcloudCommunity的博客 417

零废话!一文讲透从0构建AI Agent

每个工具都要写一套"定义→解析→执行"的胶水代码。上下文管理就是在"记住足够多"和"别超标"之间找平衡,常见策略包括滑动窗口、摘要压缩、RAG 检索增强。上下文窗口是 Agent 的"工作记忆",但它有硬性限制。LLM 负责"动脑"决策,代码负责"动手"执行。这是从"聊天机器人"进化到"Agent"的关键一步。每次调 API 都把完整对话历史发过去,LLM 本身是无状态的,"记忆"完全靠客户端的数组模拟。这样 Agent 一开始就知道自己"在哪里"、"手头有什么",不需要先花一轮工具调用去探索环境。

QcloudCommunity的博客 710

距离AI把小编我裁掉还有72小时

这是一个基于 OpenClaw 开源生态打造的本地化 AI Agent 助手,已于上周开启全量公测,无需复杂配置,三步即可上手,自带安全防护,支持微信直连绑定,内置多款优质国产大模型,现阶段也是完全免费使用,基本上前面提到过的痛点都可以靠它解决。对了,这里特别强调一点,上面的截图让产品同事汗流浃背,再三找我确认 QClaw 思考过程中优美的“草”字说法,不会是默认出现的吧?AI 好,AI 得学,但更重要的是,在你的工作和生活里,哪些东西是能结构化地被 AI 所接入的,不要死守着那些脏活累活不放。

QcloudCommunity的博客 673
上一篇: 腾讯云官方课:EMR数仓全套教程重磅首发
下一篇: “数实融合” 新时代,解读数据治理的新风向
腾讯云开发者
腾讯云开发者 企业官方账号 企业官方账号
博客等级 码龄10年 6290粉丝 1962原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值