当前位置: 首页 > web >正文

运维视角下的广告系统之理解广告索引级联

广告索引中为什么要级联

这里的“级联”一般指的是多层索引结构,也叫级联索引(Cascade Index 或 Multi-level Index)。

在广告系统的索引中,级联设计有重要作用,主要原因如下:


1. 多维特征筛选的需求

广告投放时,需要根据多种维度(比如地理位置、兴趣标签、用户年龄段、预算等)来筛选和匹配广告。单一维度的索引无法满足复杂的场景,级联索引可以高效支持多维度查询。

示例
第一层用地域作为索引,第二层用兴趣标签,第三层用性别等。


2. 性能优化

所有广告信息直接查一遍,效率太低。通过层层过滤,每一级都快速排除掉大量无关项,极大提升查询性能。


3. 空间效率提升

平铺建立所有组合维度的索引会造成资源极大浪费。级联索引允许只对现有组合建立有效路径,节约内存和存储。


4. 易于扩展和维护

新加维度或特征时,只需增加新的级联层结构,不影响已有结构(比全量重建好很多)。


举个例子

假如广告索引包含三个条件:地域、性别、兴趣,你可能用如下级联结构:

索引根节点|-- 地域1|-- 性别1|-- 兴趣1: 广告集合A|-- 兴趣2: 广告集合B|-- 性别2...|-- 地域2...

当有用户请求时,就可以根据条件,沿着“地域->性别->兴趣”这个路径层层过滤索引,快速定位可能匹配的广告集合。


总结

级联索引能:

  • 支持多维度过滤匹配
  • 提升查询效率
  • 节省存储空间
  • 便于系统扩展

这就是广告索引中使用级联的核心原因。

举一个实际系统架构的例子

下面以美团的广告流量检索系统为例,介绍实际级联索引系统的架构,并用图文说明。


1. 美团广告索引实际架构

美团广告的投放检索需要考虑多种条件,比如:

  • 地域(city)
  • 业务线(business)
  • 关键词(keyword)
  • 广告主(user)
  • 兴趣人群(tag)
    等等。

假设一个常见的筛选顺序是:地域 → 业务线 → 关键词 → tag

1.1 级联索引的数据结构

通常会构建如下多层索引:

root||-- 区域1|      |-- 业务线A|             |-- 关键词X|                   |-- tag-兴趣人群a: [广告id1, 广告id2]|                   |-- tag-兴趣人群b: [广告id3]|             |-- 关键词Y ...|      |-- 业务线B ...|-- 区域2 ...

在美团的广告系统中,真实的索引还可能会和倒排索引、Bitmap、Trie树等混合使用,以提高性能。


1.2 实际检索流程

假设用户A来自北京、使用美团外卖业务,搜索“汉堡”,归属于“美食达人”标签。

检索大致流程为:

  1. 根据地域“北京”在一级索引过滤。
  2. 进入业务线“外卖”对应的二级索引。
  3. 根据“汉堡”做倒排筛选。
  4. 进入“美食达人”标签,获得匹配的广告id集合。

这样相比对所有广告过滤,性能提升非常大,可以做到毫秒级检索


1.3 为什么要这样设计?

  • 多条件组合检索极快:每一层都以哈希/倒排等方式组织。
  • 节约内存,只索引实际存在的广告组合。
  • 支持维度扩展,比如新增“节假日活动”这类特征,只需扩展一层结构。
  • 高QPS 支撑:大量在线广告请求,每秒数千上万次访问,层级索引大大减少单请求处理量。

2. 其它公司类似实践

滴滴阿里巴巴推荐系统 都在广告与推荐索引中采用类似级联或多级倒排结构。区别在于具体维度和数据规模不同。例如滴滴可能按城市、车型、时间分级,物流广告按路线、仓库、时效分级。


3. 技术细节补充

  • 键空间爆炸控制:一般不会直接索引所有维度笛卡尔积,而是仅对实际有数据的路径建索引。
  • 冷热索引分离:对高频区域、业务、关键词进行内存索引,低频落磁盘。
  • 增量更新:支持广告上下线、预算变化时,动态地局部更新级联结构。

总结

实际广告检索系统大量采纳多层/级联索引结构,以匹配高维实时查询、高速检索、降本增效等需求。美团、滴滴等公司都用类似思路。

http://www.xdnf.cn/news/10909.html

相关文章:

  • python实现基于声音识别的腕带式打鼾干预装置设计与实现
  • browser-use Agent 日志链路分析
  • CET6 仔细阅读 24年12月第一套-C1 大脑这一块
  • 【开发心得】筑梦上海:项目风云录(18)
  • 金蝶云星空对接旺店通案例分享
  • 使用 Golang `testing/quick` 包进行高效随机测试的实战指南
  • 第五章 5.Subnetting (CCNA)
  • 基于c++面向对象的设计(下)
  • FreeRTOS,其基本概念、定义、性质、定理
  • 【运维】统信UOS操作系统aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修复漏洞
  • 构建检索增强生成(RAG)应用:第二部分
  • agent mode 代理模式,整体要求,系统要求, 系统指令
  • 多模态大语言模型arxiv论文略读(104)
  • “轻量应用服务器” vs. “云服务器CVM”:小白入门腾讯云,哪款“云机”更适合你?(场景、配置、价格对比解析)
  • “声网AI多语种翻译官:跨境导游的生存革命“
  • 【前端AI实践】简说AI大模型:AI大模型的基本概念和使用
  • Dockerfile使用与最佳实践
  • 【Connected Paper使用以及如何多次使用教程分享】
  • Redisson单机模式
  • 无向图的点、边双连通分量
  • KINGCMS被入侵
  • 【软件工程】软件工程学概述复习资料
  • 详解开漏输出和推挽输出
  • 【免费】2004-2020年各省电力消费量数据
  • 笔记本电脑推荐简洁版Thunderbolt-250603
  • 51c大模型~合集134
  • 常见的电子元器件字母含义
  • FreeRTOS,其历史争议、兼容性、生态、未来展望
  • 请注意:配电室电压不同,绝缘胶垫的要求也大不相同
  • 【AI论文】空间多模态大型语言模型(Spatial-MLLM):增强基于视觉的空间智能中多模态大型语言模型(MLLM)的能力