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