电商平台AI推荐系统从入门到实战:召回、排序、重排全链路技术拆解
电商平台AI推荐系统从入门到实战:召回、排序、重排全链路技术拆解
本文适合有后端开发经验、想了解推荐系统工程实现的读者。不讲概念车轱辘话,全是大白话加上真实的工程选型参考。
电商推荐不是"猜你喜欢"这么简单
做过电商后端的人都知道,用户打开APP看到首页那一屏商品,背后至少跑了三轮计算:召回(Recall)→ 排序(Ranking)→ 重排(Re-Ranking)。
每一轮都有自己的技术挑战。以下是我在实际项目中踩过的坑和最终选型方案,直接上干货。
第一层:多路召回——别指望单一算法通吃
很多人一上来就上协同过滤或者DeepFM,结果新用户冷启动直接翻车。正确的做法是多路召回并行跑,结果合并去重。
生产中常用的召回策略:
| 召回路 | 适用场景 | 常用技术 |
|---|---|---|
| 热门兜底 | 新用户/无行为用户 | Redis 实时热门榜 |
| 协同过滤(ItemCF) | 有购买/点击历史的老用户 | Spark ALS / Faiss 向量检索 |
| 语义向量召回 | 搜索词与商品标题匹配 | BERT 双塔模型 + Milvus |
| 实时行为召回 | 当前session浏览序列 | Flink + Redis 实时特征 |
| 社交/关联召回 | 同店/同品类连带 | Neo4j 图数据库 |
关键技术细节:向量召回要用 ANN(近似最近邻)搜索,全量暴力计算在百万级商品上根本扛不住。我们当时用 Faiss 的 IVF+PQ 索引,召回延迟从 120ms 压到了 8ms,精度损失不到 2%。
排序出来的 Top 100 不能直接推给用户,否则会出现"全是同一个品牌的T恤"这种尴尬情况。重排层要解决:
- 多样性控制:同一类目最多出现 3 个商品,MMR(最大边际相关性)算法
- 业务规则注入:置顶特价品、限时秒杀、品牌管控
- 打散策略:相邻位置不能出现同店商品
lambda_param 这个参数我们调了很久。设到 0.7 以上点击率漂亮但页面同质化严重,0.3 以下多样性够了但转化率掉。最终定在 0.5-0.6 之间,根据品类动态调整。
动态定价:AI 推荐的"最后一公里"
推荐系统把用户引到商品页面了,但价格不合理照样流失。动态定价是个敏感话题,但在电商场景中可以通过折扣/优惠券来实现。
定价模型用的 LightGBM,输入特征包括:用户历史最低购买价、同类商品比价差、库存深度、距离上次折扣天数。输出是一个"最优折扣率",跟运营预设的底线做 max 取值。
坑提醒:一定不要在用户反复刷新时频繁调价,会被消费者投诉大数据杀熟。我们加了 24 小时调价冷却窗口,同一个用户对同一个商品 24 小时内只出一次个性化价格。
离线评估与在线 A/B 测试
很多团队只盯着离线指标(AUC、LogLoss),上线却翻车。核心原因:离线指标跟在线指标不是线性关系。
我们踩过的坑:
- AUC 涨了 0.5%,在线 CTR 反而掉了——因为模型过于自信,推荐结果趋同,失去了探索性
- 加了很多特征后训练时间从 2 小时涨到 12 小时,但线上效果没变化——特征冗余严重
- 新模型全量上线前没做"长尾商品曝光率"检查——导致热门商品流量集中度过高
总结
电商推荐系统本质上是个工程问题大于算法问题的领域。算法模型可以复用开源方案,但实时特征管道、多路召回合并策略、多样性控制、动态定价规则这些东西,每个平台的业务逻辑都不一样,需要真刀真枪地搭。
如果你也在考虑 软件外包服务 或 AI项目定制,欢迎来聊聊你们的业务场景。一个好的推荐系统,ROI 往往超出预期。
