广告引擎检索技术快速学习

目录

一、广告系统与广告引擎介绍

(一)广告系统与广告粗分

(二)广告引擎在广告系统中的重要性分析

二、广告引擎整体架构和工作过程

(一)一般概述

(二)核心功能架构图

三、标签检索:合理使用标签过滤和划分索引空间

四、向量检索:提供智能匹配能力

五、打分排序:用非精准打分结合深度学习模型的精准打分

六、索引精简:在索引构建环节缩小检索空间

离线过滤条件

动态索引更新

增量索引构建

定期清理

参考文章技术


一、广告系统与广告引擎介绍

(一)广告系统与广告粗分

广告系统是一个复杂的软件系统,用于管理、发布和优化广告内容以达到广告主和广告平台的商业目标。这些系统在互联网和其他媒体上广泛使用,以连接广告主(企业或个人推广者)和广告发布者(网站、应用程序、社交媒体等),从而展示广告内容给目标受众。注意广告系统与性能和效率对广告商、用户和互联网公司都具有重大影响。

对于广告的了解可以具体见互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客,

互联网广告通常可以分为两大类:搜索广告和展示广告。

  1. 搜索广告:搜索广告是与用户的搜索查询相关的广告形式。当用户在搜索引擎上输入关键词或短语时,搜索引擎会在搜索结果页面中显示相关的广告链接,通常位于搜索结果的顶部或侧边。这些广告是以关键词匹配为基础的,广告主出价竞争关键词,以确保他们的广告在相关搜索中显示。搜索广告通常在用户主动寻找信息时出现,因此具有很高的相关性。

  2. 展示广告:展示广告是用户在浏览网站、使用应用程序或浏览社交媒体时被动看到的广告形式。这些广告可以包括横幅广告、视频广告、原生广告、弹出广告等,它们通常嵌入在网页或应用程序中,而不是由用户搜索触发。展示广告的投放通常是根据广告主的目标受众和兴趣进行定位,而不是像搜索广告那样依赖用户的搜索查询。

展示广告的特点是能够在广告中包含更多的创意元素,如图像、视频和互动元素,以吸引用户的注意力。它们通常用于建立品牌认知度、推广产品和服务,以及吸引潜在客户。

这两种广告形式在互联网广告生态系统中扮演不同的角色,广告主通常根据他们的广告目标和受众来选择使用搜索广告、展示广告或两者结合来推广他们的业务。

(二)广告引擎在广告系统中的重要性分析

广告检索引擎在广告系统中扮演着至关重要的角色,其重要性可以从以下几个方面来分析:

  1. 广告匹配和选择:广告检索引擎负责从广告库中选取最相关的广告来响应用户的广告请求。这需要高效的广告匹配算法和广告检索机制,以确保用户看到的广告与其兴趣和上下文相关。一个强大的广告检索引擎能够提高广告的点击率和转化率,从而提升广告系统的效益。

  2. 实时性和低延迟:广告系统需要在极短的时间内响应用户的广告请求,通常在毫秒级别完成。广告检索引擎必须能够高效地搜索广告库,进行广告匹配和选择,然后返回响应。低延迟是为了确保用户不会等待太长时间,提供更好的用户体验。

  3. 大规模数据处理:广告系统通常面对庞大的广告库和广告请求量,需要处理海量的数据。广告检索引擎必须具备高度可扩展性,以处理大规模数据,同时保持高性能。这可能涉及到分布式计算、数据分片和缓存等技术。

  4. 实时竞价和拍卖:在广告竞价市场中,广告检索引擎需要协调广告主的出价和广告位的竞争,以选择最佳广告。这需要实时的决策和竞价算法,以最大化广告系统的收入。

  5. 智能广告投放:现代广告系统不仅仅根据关键词匹配广告,还会利用用户的行为、兴趣和上下文信息来进行智能广告投放。广告检索引擎需要整合大量的数据和机器学习算法,以提供更个性化和精准的广告。

  6. 广告效果追踪和反馈:广告检索引擎通常需要追踪广告的效果和用户反馈,以帮助广告系统不断优化广告投放策略。这包括监测广告点击、转化和用户互动等数据,并利用这些数据进行实时调整。

总的来说,广告检索引擎是广告系统的核心组件,它直接影响广告的质量、效益和用户体验。因此,广告检索引擎的性能、算法和技术是广告系统成功的关键因素之一。广告系统开发人员和工程师需要不断改进和优化广告检索引擎,以应对不断变化的广告市场和用户需求。

二、广告引擎整体架构和工作过程

(一)一般概述

广告引擎的整体架构和工作过程涉及多个关键组件,下面是一个广告引擎的一般架构和工作流程的概述:

  1. 数据收集与存储:广告引擎首先需要收集和存储各种数据,包括广告库、用户数据、网站或应用数据等。这些数据用于广告匹配和定位广告目标受众。
  2. 广告库管理:广告库包含广告主提交的广告内容和相关信息。这些广告通常包括标题、描述、目标链接、关键词和出价等信息。广告库需要经常更新,以反映广告主的新广告和变化。
  3. 用户数据和行为分析:广告引擎使用用户数据,如搜索历史、兴趣、地理位置等,来了解用户的需求和兴趣。这可以帮助引擎更好地匹配广告。
  4. 广告请求接收:当用户在搜索引擎上输入查询或在浏览网页或应用时,广告引擎会接收广告请求。这个请求通常包括用户信息、上下文和查询关键词(如果有的话)。
  5. 广告匹配:广告引擎的核心部分是广告匹配引擎。它使用各种算法和规则来将广告库中的广告与广告请求进行匹配。匹配过程考虑关键词、用户兴趣、广告出价等因素,以确定哪些广告最相关,最有可能吸引用户的注意。
  6. 出价和拍卖:如果广告系统涉及到广告拍卖,广告匹配后的广告将被提交到拍卖系统,广告主的出价和相关性将决定哪些广告将在广告位上显示。广告拍卖系统会选择最高出价且相关性合适的广告。
  7. 广告展示:选中的广告将被展示给用户,这可以在搜索引擎结果页面、网站、应用程序或其他广告位上进行。广告可以是文本、图像、视频或其他多媒体形式,具体取决于广告位和广告主的选择。
  8. 广告效果跟踪:广告引擎通常会追踪广告的效果,包括广告的点击率、转化率和其他指标。这些数据用于分析广告效果,优化广告策略和反馈给广告主。
  9. 持续优化:广告引擎需要不断优化算法和规则,以提高广告匹配的质量和广告系统的性能。这可以包括采用机器学习技术、A/B 测试和数据分析来不断改进。

总的来说,广告引擎的工作过程涉及数据收集、广告匹配、拍卖、广告展示和效果追踪等多个步骤,需要高效的算法和技术来确保广告的相关性和用户体验,同时最大化广告系统的效益。

(二)核心功能架构图

为了方便,我们按极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】中的广告引擎的核心功能架构图,从用户浏览和广告主投放广告这两个方面讲解一下广告引擎的工作过程。具体可见对应的极客时间文章。

当用户浏览网页时,网页会向广告系统的服务器发送一个广告请求。服务器收到请求后,首先进行请求解析,这涉及查询与用户唯一标识、网站地址和广告位相关的扩展信息。这些信息的查询是通过之前对用户行为的长期收集和分析来实现的。这样的分析能够帮助了解用户的兴趣,例如他们是否喜欢篮球或购物。同样,对于各种不同的网页和广告位,系统也会进行分类和分析。这些分析的结果会提前存储在Key-value数据库中,以便能够迅速查询。这种方式,广告请求解析能够通过查询Key-value数据库,迅速获得相关信息。

另一方面,广告主在投放广告时,通常会设定广告投放的限制条件,以确保广告能够达到预期效果。例如,他们可能希望广告仅对位于北京、年龄在20岁以上、对篮球感兴趣,或使用特定型号手机的用户展示。这些限制条件可以用标签的方式表示。因此,广告设置本质上是由一系列标签的组合构成。

因此,广告引擎在处理广告请求时,实际上是根据用户的广告请求信息,查找与标签匹配的广告设置,并对这些广告进行排序,然后返回给用户。这确保了广告能够有针对性地展示给最相关的受众。

三、标签检索:合理使用标签过滤和划分索引空间

在广告引擎中,合理使用标签过滤和划分索引空间是一项关键策略,用于提高广告匹配性能和效率。标签是一种有助于描述用户、广告和广告位的属性和特征的元数据。

以下是如何合理使用标签来进行索引和过滤的方法:

  1. 标签化广告和广告位: 广告库中的广告和广告位可以分配标签,这些标签可以描述广告的内容、目标受众、广告位的属性等。例如,广告可以被标记为"运动鞋"、"折扣",而广告位可以被标记为"体育新闻"、"健康与生活"。

  2. 用户标签: 对用户进行标签化,以描述他们的兴趣、行为和属性。用户标签可以包括地理位置、性别、年龄、兴趣领域等。这些标签可以通过用户的历史行为、搜索查询、点击记录等数据分析来获得。

  3. 构建标签索引: 基于标签,构建广告库的索引和用户数据库的索引。这可以是倒排索引或其他索引结构。标签索引将广告、广告位和用户数据连接起来,以便快速检索。

  4. 标签匹配算法: 开发标签匹配算法,以根据广告请求中的标签信息,匹配最相关的广告和广告位。这可能涉及标签的匹配程度、权重等考虑。

  5. 标签过滤和筛选: 在广告请求处理过程中,使用标签过滤和筛选广告库,以缩小匹配范围。这有助于减少匹配的时间和资源消耗。

  6. 标签层次结构: 创建标签层次结构,使标签之间存在父子关系,从而更好地组织和管理标签。例如,"运动"可以是一个父标签,而"篮球"和"足球"可以是子标签。

  7. 动态标签更新: 根据实时数据和用户行为,动态更新用户标签和广告标签。这有助于确保标签信息始终反映实际情况。

  8. 定向广告: 利用标签来实施广告定向,确保广告仅展示给符合特定标签条件的用户。这提高了广告的相关性和效果。

综合运用上述策略,广告引擎可以高效地利用标签来过滤、划分索引空间和匹配广告,以提供更相关的广告,提高广告系统的性能和用户体验。

四、向量检索:提供智能匹配能力

在广告引擎中引入向量检索技术可以提供更高级的智能匹配能力。向量检索允许广告引擎将广告、广告位和用户表示为向量,然后通过向量相似性来进行匹配,从而更精确地确定哪些广告最适合与哪些用户和广告位相匹配。

让我们通过一个具体案例来理解如何在广告引擎中应用向量检索以提供智能匹配能力。以一个虚构的在线体育新闻网站的广告引擎为例。

  • 广告库: 包含不同类型的体育广告,如足球、篮球、网球、高尔夫等,以及不同品牌的广告。
  • 广告位: 包括不同类型的页面和文章,如首页、足球新闻、篮球新闻、高尔夫新闻等。
  • 用户数据: 包括用户的地理位置、兴趣领域、性别、年龄等信息。

使用向量检索实现智能匹配:

  1. 向量表示: 针对广告库中的每个广告、广告位和用户,使用向量表示。这些向量可以包括广告内容、广告位属性、用户兴趣等维度。例如,一个足球广告的向量可能包括 "足球"、"体育"、品牌信息等。

  2. 聚类: 使用聚类算法将相似的广告向量分组到同一簇中。例如,所有足球相关广告可能分为一个簇,所有篮球广告分为另一个簇。

  3. 倒排索引: 为每个簇构建倒排索引,将广告、广告位和用户向量映射到它们所属的簇。这样,当广告请求到达时,可以首先确定可能相关的簇。

  4. 乘积量化: 在每个簇中,将向量应用乘积量化来降低维度。这可以将每个向量表示为一组较低维度的子向量,并应用量化来减小向量的大小。

  5. 查询处理: 当用户访问网站时,广告引擎接收广告请求,其中包括用户的信息、页面类型和内容。引擎首先使用这些信息确定可能相关的簇。然后,在这些簇中使用乘积量化技术,将请求中的向量与广告、广告位和用户向量进行匹配。最相似的向量将被选择,以决定要显示的广告。

  6. 智能排序: 匹配后,引擎可以使用向量相似性来排序广告,确保最相关的广告首先显示给用户。例如,如果用户正在查看篮球新闻,引擎会更有可能选择篮球广告并根据与用户兴趣的匹配程度来排序。

  7. 动态更新: 引擎可以定期更新向量,以反映用户行为和广告内容的变化,确保匹配仍然是智能的。

通过这种方式,广告引擎可以实现智能匹配,确保广告与用户的兴趣和页面内容相关,并提供更个性化的广告体验。这有助于提高广告效果和用户满意度。

五、打分排序:用非精准打分结合深度学习模型的精准打分

在广告引擎中,使用非精准打分结合深度学习模型的精准打分是一种常见的策略,以提高广告的排序性能。这组合了两个环节:召回(Recall)和精准打分排序(Precision Ranking),中间加入了非精准打分(Non-Precision Scoring)的环节。

  1. 召回(Recall): 首先,广告引擎执行召回环节,目的是尽可能多地检索潜在匹配的广告候选集。在这一阶段,引擎可以使用基于标签、规则或其他快速方法来检索广告候选集。召回环节的目标是捕获潜在的广告,即使其中一些不是精确匹配,也要确保不错过任何潜在的机会。

  2. 非精准打分(Non-Precision Scoring): 这是添加到召回阶段的新环节。在非精准打分中,引擎可以使用快速的打分算法,例如基于规则或标签匹配的算法,来为召回的广告候选集打分。这些打分是非精确的,主要用于粗略排序,以便稍后的精准打分排序能够更聚焦在具有更高潜在匹配性的广告上。

  3. 精准打分排序(Precision Ranking): 在这一环节,引擎使用深度学习模型或其他精确的打分算法来为召回的广告候选集中的每个广告进行更精准的打分。这些算法可以综合考虑广告内容、用户兴趣、广告位属性等多个因素,以确定广告与用户的匹配程度。广告按照精确的打分进行排序,以确保最相关的广告最先呈现给用户。

  4. 结果返回: 最终,排名好的广告将根据其得分从高到低呈现给用户。用户将看到高度相关的广告,提高了广告效果和用户满意度。

这种组合策略允许广告引擎在召回阶段宽泛地捕获潜在广告,然后通过精准打分排序在确保精确匹配的同时,提高广告的排序性能。非精准打分阶段可以快速排除一些不相关的广告,从而加速精准打分的过程。同时,深度学习模型可以学习复杂的广告与用户之间的关系,以提供更准确的排序。这种策略有助于平衡性能和准确性。

六、索引精简:在索引构建环节缩小检索空间

广告引擎和搜索引擎在检索对象的生命周期上存在显著差异。广告设置的生命周期变化快,而不是像网页一样持久存在。这种快速变化的特性需要在广告引擎的索引构建环节采取不同的优化策略,以提高检索效率。主要优化策略包括:

离线过滤条件

在离线的索引构建环节,广告引擎应用广告设置的过滤条件。这些条件可能包括时间段、预算状态、地理位置等,而不仅仅是与广告内容或用户属性相关的条件。通过在索引构建时过滤掉那些在未来某个时间点不再有效的广告设置,可以大幅减小检索空间。

动态索引更新

由于广告设置的状态和限制条件可能随时发生变化,广告引擎应该支持动态索引更新。这意味着在实时或定期基础上,广告引擎需要更新索引以反映广告设置的最新状态。例如,当广告的投放时间段结束或预算用尽时,相应的广告设置应该从索引中移除。

增量索引构建

广告引擎可以使用增量索引构建策略,只构建或更新发生变化的广告设置的索引。这减少了索引构建的计算成本,因为不必重新构建所有广告设置的索引。

定期清理

定期清理索引中的过期或不再有效的广告设置是关键的。这有助于保持索引的整洁,减小检索空间,避免对无效广告进行不必要的检索。

通过将过滤条件提前到离线的索引构建环节,并支持动态索引更新,广告引擎可以更好地适应广告设置的生命周期的快速变化。这种优化策略有助于提高检索效率,减少冗余计算开销,提供更快速的广告检索。

参考文章技术

  1. 极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】,陈东 ----- 主要学习材料
  2. 互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客
  3. 美团广告实时索引的设计与实现 - 美团技术团队
  4. https://www.cnblogs.com/ErinCodeMM/p/5033321.html
  5. 搜索,推荐,广告系统架构及算法技术资料大合集吐血整理——2019 年终分享 - AIQ
  6. https://www.infoq.cn/article/73za7ahrg1osmdtfa9tv
  7. “量效合一”背后,巨量引擎搜索广告的业务逻辑是什么? - 数英

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180273.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)报名考试参考答案及起重机司机(限桥式起重机)考试试题解析是安全生产模拟考试一点通题库老师及起重机司机(限桥式起重机)操作证已考过的学员汇总,相对有效帮助起重机司机(限桥式起…

基于PHP + MySQL实现的文章内容管理系统源码+数据库,采用前后端分离的模板和标签化方式

文章内容管理系统 dc-article是一个通用的文章内容管理系统,基于开源的caozha-admin开发,采用前后端分离的模板和标签化方式,支持文章内容管理、栏目分类管理、评论管理、友情链接管理、碎片管理、远程图片获取器等功能。可以使用本系统很轻…

Go Gin中间件

Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息&am…

WorkManger学习汇总

一.使用 WorkManger主要是用来执行一定会执行的任务的,如即使app被杀掉、手机重启都会执行。 适用场景:定期重复性任务,如定期log上传等 使用的话首先引入库(我使用的是2.7.1) implementation "androidx.work:…

2015年亚太杯APMCM数学建模大赛C题识别网络中的错误连接求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 C题 识别网络中的错误连接 原题再现 网络是描述真实系统结构的强大工具——社交网络描述人与人之间的关系,万维网描述网页之间的超链接关系。随着现代技术的发展,我们积累了越来越多的网络数据,但这些数据部…

0.专栏概述与几句闲话

引 还记得今年大年初一开始写《数据结构和算法》专栏的时候定了个小目标: 不知不觉间已经过去了十个月,我的第一个专栏也算是圆满收官了 。 这次PO一张成都熊猫基地的团子们,开启设计模式这个专栏吧。 目录与概述 犹记得一位身在广州的老…

php语言

文章目录 常用命令Apache命令php命令 常用命令 Apache命令 查看版本号 D:\cjm\soft-work\phpStudy\phpstudy_pro\Extensions\Apache2.4.39\bin>httpd -v检测运行环境 httpd -tphp命令 PHP版本号 需要进入php目录 php -v

一文搞懂设计模式之七大原则

大家好,我是晴天。在接下来的一个多月里,我将跟大家一起学习设计模式的一些基础知识和基本应用。不要问我为什么突然想起来写一个设计模式系列的文章,问就是:爱过。。。 问题引出 作为程序猿的我们,隔三岔五的就会因为…

Azure 机器学习 - 无代码自动机器学习的预测需求

了解如何在 Azure 机器学习工作室中使用自动化机器学习在不编写任何代码行的情况下创建时序预测模型。 此模型将预测自行车共享服务的租赁需求。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕…

牛客项目(五)-使用kafka实现发送系统通知

kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…

Marp: 将 Markdown 变为 PPT 式样的 VScode 插件

样例代码&#xff1a; --- marp: true size: 16:9 theme: default header: footer: --- <!-- _footer: Jia ming<br>Gansu University of Political Science and Law --> <!-- _backgroundColor: lightskyblue --> ## <!-- fit --> 笔记检验概述>…

pytorch 中 nn.Conv2d 解释

1. pytorch nn.Con2d 中填充模式 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_mode‘zeros’, deviceNone, dtypeNone) 1.1 padding 参数的含义 首先 &#xff0c;padd N, 代表的是 分别在 上下&…

鉴源实验室 | 自动驾驶传感器攻击研究

作者 | 付海涛 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 自动驾驶汽车的脆弱性 自2015年以来&#xff0c;汽车的信息安全问题受到国内外的广泛关注。而随着汽车的智能化与网联化的…

上海物理、化学高考命题趋势及2024年上海物理、化学高考备考建议

在上海高考时&#xff0c;物理、化学虽然不像语文、英语和数学那样分数高&#xff0c;但是仍然很重要。那么&#xff0c;从这几年的上海物理、化学的高考题目来看&#xff0c;我们互发现什么命题趋势和考题特点呢&#xff1f;如何备考接下来的2024年高考物理和化学呢&#xff1…

Ubuntu下安装vscode,并解决终端打不开vscode的问题

Visual Studio Code安装 1&#xff0c;使用 apt 安装 Visual Studio Code 在官方的微软 Apt 源仓库中可用。按照下面的步骤进行即可&#xff1a; 以 sudo 用户身份运行下面的命令&#xff0c;更新软件包索引&#xff0c;并且安装依赖软件&#xff1a; sudo apt update sud…

uniapp 微信小程ios端键盘弹起后导致页面无法滚动

项目业务逻辑和出现的问题整理 新增页面 用户可以主动添加输入文本框 添加多了就会导致当前页面出现滚动条,这就导致ios端滚动页面的时候去点击输入框键盘抬起再关闭的时候去滚动页面发现页面滚动不了(偶尔出现),经过多次测试发现是键盘抬起的时候 主动向上滑动 100%出现这种问…

【Linux】进程的概念

文章目录 1. 基本概念2. 进程的描述3. 进程的一些基本操作3.1 查看进程3.2 结束进程3.3 通过系统调用获取进程标示符3.4 通过系统调用来创建子进程 4. 进程状态4.1 操作系统的进程状态4.2 Linux对于这些状态的处理方式 1. 基本概念 什么是进程&#xff1f; 在回答这个问题之前…

云安全—docker Deamon攻击面

0x00 前言 本篇文章主要是讲docker Deamon的原理以及docker Deamon攻击面相关的内容&#xff0c;属于抛砖引玉系列&#xff0c;如有不妥之处还请斧正。 0x01 docker Deamon 还是先来看一下docker Deamon的一些相关知识&#xff0c;依旧是采用问答的方式来进行。为了文章的整…

2023-11-04:用go语言,如果n = 1,打印 1*** 如果n = 2,打印 1*** 3*** 2*** 如果n = 3,打印

2023-11-04&#xff1a;用go语言&#xff0c;如果n 1&#xff0c;打印 1*** 如果n 2&#xff0c;打印 1***3*** 2*** 如果n 3&#xff0c;打印 1***3*** 2***4*** 5*** 6*** 如果n 4&#xff0c;打印 1***3*** 2***4*** 5*** 6***10** 9*** 8*** 7*** 输入…

Spring底层原理(六)

Spring底层原理(六) 本章内容 介绍AOP的实现方式、JDK代理的模拟实现与源码 AOP的实现方式 使用代理模式 jdk动态代理cglib动态代理 使用aspectj的编译器&#xff0c;该编译器会直接对字节码进行修改&#xff0c;可以实现静态方法增强 使用javaagent,在jvm option中指定-…