一句话定义:特征存储(Feature Store)是一个集中管理机器学习特征的系统——统一加工、统一存储、统一读取,让模型在训练时和线上推理时拿到同一套口径的特征。
为什么需要它
模型不吃原始数据,吃的是特征。比如预测用户会不会下单,"过去7天下单次数""距上次登录多少天"就是特征。麻烦在于:训练通常在数据仓库里用 SQL/Python 批量算一遍;线上要实时响应,往往由另一套 Java 或流处理代码再算一遍。两套代码,必然漂移:离线算7天,线上写成24小时;离线按 UTC 切天,线上按本地时区;离线空值填0,线上填平均值。模型训练时学到的规律,一上线就失真。这种现象叫训练-服务不一致(training-serving skew)。
打个比方:连锁餐厅的中央厨房。中央厨房统一采购、切配、调味,门店只负责加热出餐。如果每家门店自己切菜配料,同一道菜味道必然飘。特征存储就是中央厨房加标准菜谱:训练和线上都从同一份"料包"取特征。
它怎么做到一致
- 离线存储:存历史特征,供训练回溯读取,通常放在数据仓库或数据湖里。
- 在线存储:存每个实体的最新特征值,用低延迟键值库,供线上毫秒级查询。
- 注册表:登记特征定义、来源、负责人、版本,避免"这个字段到底谁维护"。
- 统一生产管道:同一份转换逻辑同时写入离线和在线,或由流批一体计算保证两边结果一致。
- 点时间正确性(point-in-time correctness):训练某条样本时,只能用那个时刻真正能拿到的特征值,防止把未来信息混进来,也就是避免标签泄漏(label leakage)。
和相邻概念的区别
| 维度 | 普通数据仓库 | 特征存储 |
|---|---|---|
| 主要用户 | 分析师、报表 | 模型训练与线上服务 |
| 读取模式 | 批量查询为主 | 批量回溯 + 单点低延迟查询 |
| 核心关注 | 口径统一、可分析 | 训练-服务一致、时间点正确 |
| 复用方式 | 表与视图 | 特征定义与特征组 |
它也不是模型仓库(model registry):模型仓库管模型文件和版本,特征存储管模型吃进去的原料。
对从业者的意义
少写一遍重复管道,少一次"离线AUC很好、上线效果崩了"的排查。特征能跨团队复用,新模型上线更快。对普通人来说,推荐、风控、定价这些模型的行为更稳定、更可解释,也更容易被审计。具体产品能力以官方页面为准。
