1. 特征工程基础:特征存储、检索与平台
大家好,欢迎来到《大规模特征存储与检索实战》的第一章。
做机器学习这几年,我见过太多团队把精力全砸在模型调参上,结果上线时发现特征算不过来、存不下、对不齐。说白了,特征工程才是工业级系统的地基。而特征存储与检索,就是地基里的钢筋。
这一章我们先打基础。聊聊三个核心问题:特征存储到底是什么?特征检索为什么值钱?特征存储和特征平台又是什么关系?
1.1 特征存储:不只是“存起来”那么简单
特征存储(Feature Store),不是让你找个数据库把特征塞进去就完事了。
我个人的理解是:特征存储是一个中心化的、可复用的特征管理基础设施。它负责特征的创建、存储、共享、发现和在线/离线服务。
核心价值:避免团队重复造轮子,保证训练和推理时用的是同一批特征。
你想想看,一个典型的推荐系统团队,可能有5个算法工程师。每个人都在自己的笔记本里写特征逻辑,每个人都在自己的MySQL里存一份。结果呢?线上模型用的特征和离线训练用的特征,经常对不上。模型效果差,还找不到原因。
嗯,这就是典型的“特征债务”。特征存储就是为了解决这个债务而生的。
特征存储要管哪些事?
- 特征定义与元数据管理:谁创建的?什么时候更新的?依赖哪些原始数据?
- 特征数据存储:离线用宽表(Parquet/ORC),在线用KV存储(Redis/HBase)。
- 特征版本控制:特征逻辑变了,旧模型还能用旧版本特征做推理。
- 特征血缘追踪:这个特征是从哪个原始表、经过什么变换得来的。
我的经验:刚开始做特征存储时,别想着一步到位。先管好元数据和血缘,比先把数据存起来更重要。我在一个项目中吃过亏——存了10TB特征,结果没人知道这些特征怎么来的,最后全成了垃圾数据。
1.2 特征检索:为什么它值得单独拿出来讲?
特征检索,说白了就是“怎么又快又准地把特征取出来”。
你可能觉得这不就是查数据库吗?有什么好讲的?
但实际场景远没那么简单。在线推理时,一个请求进来,可能需要从几十个特征视图中拉取几百个特征。延迟要求是毫秒级。你想想看,如果每个特征都去查一次Redis,光网络开销就炸了。
特征检索的核心挑战
| 场景 | 延迟要求 | QPS | 典型存储 |
|---|---|---|---|
| 在线推理 | < 10ms | 10k+ | Redis / HBase |
| 近线计算 | < 1s | 1k-10k | Cassandra / TiKV |
| 离线训练 | 分钟级 | 低 | HDFS / S3 |
| 批量回溯 | 小时级 | 极低 | Hive / Spark |
我曾经在一个广告系统项目中,遇到过一个坑:离线训练时特征是从Hive里取的,但线上推理时特征是从Redis里取的。两个管道用的特征逻辑不完全一致,导致模型上线后AUC直接掉了3个点。查了整整一周才发现是特征检索路径不一致导致的。
避坑指南:特征检索必须保证“训练-推理一致性”。要么用同一套代码生成特征,要么在检索时做严格的对齐校验。我曾经因为偷懒没做校验,结果线上模型跑飞了三天才被发现。
1.3 特征存储与特征平台:谁是谁的一部分?
很多人把特征存储和特征平台混为一谈。我刚开始也搞混过。
简单来说:特征存储是特征平台的核心组件,但不是全部。
特征平台是一个更上层的东西。它除了特征存储,还包括:
- 特征计算引擎:实时/批量的特征生成管道
- 特征服务层:统一的在线/离线检索API
- 特征监控与告警:特征延迟、缺失率、分布漂移
- 特征治理工具:权限管理、成本分析、生命周期管理
你可以把特征平台想象成一个“特征超市”。特征存储是超市的仓库,负责把货(特征)存好、管好。而特征平台还包括货架(检索API)、收银台(服务层)、监控摄像头(监控系统)等等。
两者的关系可以用一张图说清楚
从图上可以看得很清楚:特征存储是特征平台的心脏。没有它,其他组件都是空中楼阁。但光有存储也不行,计算、服务、监控、治理缺一不可。
我的建议:如果你团队刚起步,先搭一个轻量级的特征存储(比如用Redis+MySQL+Airflow),把元数据和一致性管好。等业务规模上来了,再逐步补齐计算引擎、监控、治理这些能力。别一上来就搞大而全的平台,容易烂尾。
1.4 本章小结
这一章我们聊了三件事:
- 特征存储是中心化的特征管理基础设施,核心是元数据、版本、血缘和一致性。
- 特征检索要解决在线/离线不同场景下的延迟和一致性挑战,训练-推理对齐是红线。
- 特征平台包含特征存储,但还多了计算、服务、监控、治理等能力。存储是核心,但不是全部。