一句话总结
离线系统就是 AI 的后方兵工厂:模型在这里训练、数据在这里加工、索引在这里搭建。线上服务能有多好,全看离线系统的底子有多厚------它是构建 AI 系统的"第一颗扣子"。
打个比方:线上服务是前台餐厅,离线系统是后厨。菜好不好吃,取决于后厨备了什么料、练了多少手艺。前台再花哨,后厨拉胯也白搭。
核心内容分两大块
第一块:模型工程------模型是怎么从数据到上线的
全量训练:完整的一条流水线
用户行为日志 → 日志收集 → 反作弊清洗 → 样本生成 → 模型训练 → 离线验证 → 上线
1)日志收集 用户在 App 上的点击、浏览、购买等行为,实时上报到服务端。用 Flume 这类工具接收。
⚠️ 日志可能被篡改,所以要加密。但黑灰产用的是真实设备(手机墙),加密也防不住,必须靠后续反作弊。
2)反作弊清洗
- 在线反作弊:靠规则快速挡,比如"两次操作间隔小于 100 毫秒"→ 非人类,直接拦
- 离线反作弊:用复杂模型找作弊者的"同伙"(Lookalike 就能用在这),从训练数据里剔除
3)样本生成 分两步:
- 数据拼接:比如 CTR 模型把"曝光日志"和"点击日志"拼在一起,生成"是否点击"的样本
- 特征投影:用第6讲学的特征工程方法处理特征
4)模型训练 + 验证 + 上线
- 用 PyTorch / TensorFlow 训练出模型文件
- 拿最近 N 天的真实数据验证,达到门槛才准上线
- 上线就是换个模型文件(比如 TensorFlow Serving 重新加载)
增量训练:"三级火箭"策略
全量训练太慢太贵,所以工业界用三级火箭兼顾实时性和成本:
| 级别 | 用什么数据 | 多久一次 | 干啥的 |
|---|---|---|---|
| 第一级 | 全量数据(比如过去一年) | 一周一次 | 打基础,算力开销最大,尽量少训 |
| 第二级 | 第一级模型 + 最近一天数据 | 每天一次 | 跟上最新变化 |
| 第三级 | 线上 24 小时内的实时数据 | 实时 | 保证实效性,和在线模型联动 |
关键注意点:
- 第三级(实时增量)没有离线反作弊参与,不能替代全量训练,必须三级配合
- 第三级要配监控,关键指标一波动就回滚、降级到非增量模式,排查完再恢复
这个"全量 + 增量"的思路,和大模型的"预训练 + 微调"是一个道理。几乎所有需要实时数据的 AI 系统都这么干。
第二块:存储索引------数据和模型怎么存、怎么查
模型准备好了,还得把内容数据存好、建好索引,线上才能快速查到。
1)倒排索引:关键词快速查内容
- 内容数据(商品、视频、广告)存在 MySQL 这类可靠数据库里
- 全量导出后,把分类、颜色、城市等属性作为查询键,建倒排索引
- 开源首选 ElasticSearch
- 增量索引是难点 :要解析 MySQL 的二进制日志(binlog)来同步新增内容,阿里开源的 canal 专门干这个
2)向量索引:语义相似度查内容
基于规则的召回容易误杀,更先进的做法是向量召回:
- 用前面学的图神经网络,把用户和物品都投影到高维空间,得到 Embedding
- 预先算好所有物品和已知用户的向量,存进向量引擎
- 用户请求时,拿用户向量去向量引擎里找"距离最近"的物品
这里的 Embedding 比 LangChain 那种文档片段 Embedding 要强得多------是 AIGC 提示语工程的重要基础。
3)其他重要存储
| 存什么 | 存在哪 | 为什么 |
|---|---|---|
| 实时特征(24小时点击数、当日曝光数) | Redis(内存键值存储) | 读写快,支持高并发 |
| 知识图谱 | neo4j(图数据库) | 天然适合表达实体关系 |
| 内容主数据 | MySQL | 可靠、持久化 |
离线系统搭好后能干啥?
有了模型 + 索引 + 数据,其实已经能搭一个不错的推荐引擎了:
用户请求 → 拿用户向量 → 向量引擎召回相近物品 → 选一个返回
这就是最基础的内容推荐流程。
必知术语
| 术语 | 大白话 |
|---|---|
| 离线系统 | 后方兵工厂,模型训练和数据加工都在这 |
| Flume | 实时收集用户行为日志的工具 |
| 反作弊 | 剔除刷单、假点击等脏数据 |
| 样本生成 | 把原始日志拼成模型能用的训练数据 |
| 全量训练 | 用所有历史数据从头训一遍,慢但准 |
| 增量训练 | 用新数据在旧模型上继续训,快但要防脏数据 |
| 三级火箭 | 全量(周) + 短期增量(天) + 实时增量,三层配合 |
| 倒排索引 | 关键词→内容列表的查表结构,搜索的基础 |
| ElasticSearch | 开源倒排索引服务,业界首选 |
| canal | 阿里开源,解析 MySQL 日志做增量索引同步 |
| 向量索引/向量引擎 | 存 Embedding,按空间距离快速查找相似内容 |
| Redis | 内存数据库,存实时特征,读写极快 |
| neo4j | 图数据库,存知识图谱 |
| TensorFlow Serving | 在线加载和提供模型服务的工具 |
记忆口诀
离线系统两件事:
- 练模型 ------ 日志→清洗→样本→训练→验证→上线;全量打底 + 三级火箭保实时
- 存数据 ------ 内容存 MySQL,倒排用 ES,向量存引擎,实时特征放 Redis,图谱放 neo4j
三句话记住离线的价值:
- 没有模型工程 → 大模型无从谈起
- 没有存储索引 → 模型变成"刚愎自用的学者",不了解外部新信息
- 没有风控 → 模型变成"一本正经胡说八道的江湖骗子"