2、搜索广告系统架构概览:广告检索、排序、计费、归因四大核心模块

大家好,我是老张。今天咱们聊聊搜索广告系统的骨架——四大核心模块。很多人刚入行时,总觉得广告系统是个黑盒子,往里扔钱,往外出效果。其实拆开来看,就四个环节:检索、排序、计费、归因。它们像流水线一样,一环扣一环。

我在百度做搜索广告那几年,最深的感触是:这四块缺一不可,但真正决定系统天花板的是它们怎么协同。你想想看,检索再快,排序不准,用户点都不点;计费再合理,归因搞错了,广告主直接骂娘。所以今天咱们把这四块掰开揉碎了讲清楚。

2.1 广告检索:从海量广告中找到“候选人”

检索是系统的第一道关卡。用户输入一个查询词,比如“北京 租房”,系统要在毫秒级内从几百万甚至上千万的广告库中,捞出可能相关的广告。

怎么捞?核心是倒排索引。说白了,就是给每个关键词建一个“广告名单”。比如“租房”这个词,后面跟着一堆广告ID。用户搜“租房”,直接去这个名单里拿广告就行。

关键点:检索不是越全越好,而是要在“召回率”和“精准率”之间找平衡。召回太多,后面排序扛不住;召回太少,好广告漏掉了。

我建议你在设计检索层时,至少考虑三层过滤:

  • 第一层:粗筛——基于关键词匹配,把完全不相关的广告干掉
  • 第二层:定向过滤——根据地域、设备、时段等条件,缩小范围
  • 第三层:预算过滤——把已经花完预算的广告剔除,别浪费排序资源

嗯,这里要注意:预算过滤一定要放在检索阶段做。我曾经见过一个系统,预算过滤放在排序之后,结果每次排序都要处理大量无效广告,白白浪费计算资源。

2.2 广告排序:决定谁排在前面

检索完,候选广告可能还有几千个。但搜索结果页就那么几个位置,谁上谁下?这就是排序模块的事。

排序的核心公式,业内基本统一:

排序得分 = 出价 × 预估点击率(CTR) × 质量分

这个公式看着简单,但每个因子背后都有坑。我一个个说:

  • 出价:广告主愿意为一次点击付多少钱。这是明牌,没什么好说的。
  • 预估点击率(CTR):这是排序的灵魂。系统要预测“这个广告用户会不会点”。我习惯用深度学习模型来做,输入用户特征、广告特征、上下文特征,输出一个0到1的概率值。
  • 质量分:这是平台的调节杠杆。用来惩罚低质量广告,比如标题党、落地页体验差的。

个人经验:预估CTR模型,千万别只盯着AUC看。我在项目中遇到过,AUC很高,但线上效果一塌糊涂。为什么?因为AUC只看排序的相对顺序,不关心绝对值。建议同时监控校准度(Calibration),就是预测值和真实值的偏差。

排序还有一个隐藏问题:广告和自然结果的混排。用户搜“北京 租房”,前三条是广告,后面是自然结果。怎么保证用户体验?我建议用位置偏移惩罚,广告排在越靠前的位置,质量分要求越高。

2.3 广告计费:到底该收多少钱

用户点了广告,系统要算账了。计费模块的核心是:让广告主为“真实价值”付费,而不是为“出价”付费

目前最主流的计费方式是GSP(广义第二价格)。什么意思?举个例子:

广告主 出价 排序得分 实际扣费
A 10元 100 8元
B 8元 80 6元
C 6元 60 不展示

广告主A出价10元,但实际只扣8元。这8元怎么来的?是“让A排在B前面所需的最低出价”。说白了,A只需要出比B高一点点就能赢,没必要付自己的最高价。

避坑指南:我曾经在计费模块踩过一个坑——计费延迟。用户点击广告后,计费请求异步处理,结果用户连续快速点击,系统重复计费。后来我加了去重逻辑,同一个用户、同一个广告、5秒内只计一次费。

另外,现在很多平台开始用oCPM(优化千次展示成本)。广告主不按点击付费,而是按“转化目标”付费,比如“一个注册10元”。系统自动调整出价,保证广告主成本在目标范围内。这玩意对模型要求极高,后面章节我会专门讲。

2.4 广告归因:功劳到底算谁的

用户看了广告,没点。过了两天,直接搜品牌名下单了。这个订单算不算广告的功劳?这就是归因要解决的问题。

归因模型有很多种,我列几个常见的:

  • 最后点击归因:功劳全给最后一次点击。简单粗暴,但忽略了前面的“助攻”。
  • 首次点击归因:功劳全给第一次点击。适合品牌曝光类广告。
  • 线性归因:每次点击平均分功劳。公平,但不够精准。
  • 时间衰减归因:离转化越近的点击,功劳越大。比较符合用户决策路径。
  • 数据驱动归因:用机器学习模型,算每个触点的真实贡献。这是目前最先进的,但实现复杂。

我的建议:别一上来就搞数据驱动归因。先跑最后点击归因,等数据量大了,再逐步切换到时间衰减线性归因。我见过太多团队,归因模型搞得太复杂,最后数据对不上,广告主投诉不断。

归因还有一个头疼的问题:跨设备归因。用户手机上看广告,电脑上下单。怎么关联?我习惯用登录ID + 设备指纹双重匹配。如果匹配不上,就按“最后一次设备”归因。

2.5 四大模块如何协同工作

好了,四个模块都讲完了。它们怎么串起来?我给你画个流程图:

用户搜索 → 广告检索(粗筛+定向+预算过滤) → 广告排序(出价×CTR×质量分) 
→ 广告展示 → 用户点击 → 广告计费(GSP/oCPM) → 转化发生 → 广告归因(分配功劳)

你看,这是一个完整的闭环。检索和排序是“前端”,决定了用户看到什么;计费和归因是“后端”,决定了广告主付多少钱、效果怎么算。

但这里有个容易被忽略的点:归因结果会反馈给排序模型。比如,系统发现某个广告的归因转化率很高,就会在排序时给它更高的CTR预估。这就是所谓的“数据闭环”。

个人习惯:我每次搭建广告系统,都会先确保归因数据能回流到排序模型。没有这个闭环,系统就是“盲人摸象”,永远不知道哪些广告真正有效。

最后说一句:这四个模块,每个单独拎出来都能讲三天三夜。但作为架构师,你首先要理解它们怎么配合。就像一支足球队,前锋再厉害,没有中场传球、后卫防守,也赢不了球。

下一章,咱们深入广告检索,聊聊倒排索引的优化和实时更新策略。到时候见。


公众号:蓝海资料掘金营,微信deep3321