召回配置
一、概述
PAI-Rec 推荐算法定制提供丰富的召回算法体系,覆盖从简单统计到深度学习的不同场景需求。本文介绍推荐算法定制支持的所有召回算法,并介绍 TorchEasyRec 环境下 DSSM 向量召回的功能特性。
召回算法分类:
深度学习召回:DSSM 向量召回
协同过滤召回:ETrec、Swing、SimRank
统计召回:全局热门、分组热门
二、DSSM 向量召回(TorchEasyRec 版本)
2.1 算法原理
DSSM(Deep Structured Semantic Model)是深度双塔模型,将用户和物品分别编码为固定维度的向量,通过向量相似度进行召回。
User Features Item Features
| |
┌─────┴──────┐ ┌─────┴─────┐
│ User Tower │ │ Item Tower│
│ (DNN) │ │ (DNN) │
└─────┬──────┘ └─────┬─────┘
user_embedding item_embedding
└──── dot product ────┘
Match Score
2.2 核心优势
优势 | 说明 |
双塔解耦 | Item 向量离线预计算建索引,User 向量在线实时计算 |
语义泛化 | 通过深度网络学习用户-物品的隐式语义匹配 |
高效检索 | 百万级候选毫秒级召回,支持本地 FAISS 向量检索 |
特征丰富 | 支持用户画像、物品属性、行为序列等特征 |
2.3 关键配置参数
参数 | 说明 | 典型值 |
| 模型名称 | dssm |
| 模型类型 | dssm / mind(多兴趣) |
| 负采样策略 | 1024 个负样本 |
| 训练天数 | 30 天 |
| Embedding 维度策略 | EMB_SQRT4_STEP4(详见下方计算公式) |
| 在线模式 | true/false |
2.4 Embedding 维度计算策略
embed_dim_policy 用于自动计算离散特征的 Embedding 维度,假设特征枚举数为 N:
策略名称 | 计算公式 | 说明 |
|
| 四次方根,步长为 8 |
|
| 四次方根,步长为 4(默认) |
|
| 自然对数,步长为 8 |
|
| 自然对数,步长为 4 |
计算示例(假设特征枚举数 N = 10000):
EMB_SQRT4_STEP4: round(10000^0.25 / 4) × 4 = round(10 / 4) × 4 = 8EMB_LN_STEP4: round(ln(10000) / 4) × 4 = round(9.21 / 4) × 4 = 8
2.5 TorchEasyRec 环境下的 DSSM 特性
在 TorchEasyRec 环境下,DSSM 具备以下特性:
特性 | 说明 |
训练框架 | TorchEasyRec(PyTorch 后端) |
训练平台 | PAI-DLC(GPU 训练) |
向量索引 | FAISS(IVF 类型) |
在线服务 | EasyRec Processor(Torch 版本) |
特征工程 | FG 特征编码(离线/在线一致性) |
模型热更新 | 支持 steady_mode 自动加载 |
负采样配置:
{
"negative_sampler": {
"sampler_type": "negative_sampler",
"num_sample": 1024
}
}
负采样对向量召回至关重要,通过动态采样负样本提升模型区分能力。
2.5 TorchEasyRec 在线服务架构
TorchEasyRec 服务组件:
FG 编码:保证离线/在线特征一致性
User Tower:Torch ScriptModule 实时推理用户向量
FAISS 索引:CPU 即可高效检索(部署在 PAI-EAS CPU 机型)
TorchEasyRec Processor:
easyrec-torch-{version},参考版本列表
部署配置示例:
{
"processor": "easyrec-torch-1.12",
"model_config": {
"fg_mode": "normal",
"faiss_neigh_num": 500,
"faiss_nprobe": 1000,
"steady_mode": true,
"period": 2880
}
}
三、热门召回
3.1 全局热门召回
原理:基于全站用户行为统计,返回全局最热门的物品。
计算公式:
适用场景:
新用户冷启动(无历史行为)
兜底召回策略
热门内容分发
配置要点:
参数 | 说明 |
行为权重 | 不同行为(曝光/点击/转化)赋予不同权重 |
时间衰减 | 近期行为权重更高 |
去重策略 | 按物品/作者/类目去重 |
3.2 用户分组热门召回
原理:将用户按属性(性别、年龄段、地域等)分组,统计各组内的热门物品。
适用场景:
猜你喜欢首页
不同人群偏好差异大的场景
优势:
相比全局热门更个性化
实现简单,无需用户历史行为
3.3 物品分组热门召回
原理:按物品属性(类目、标签等)分组,统计各组内的热门物品。
适用场景:
详情页相关推荐,当协同过滤等算法得到的相关物品不够时(下面的ETrec I2I 召回),用分组热门补全
基于当前物品的同类热门推荐
四、协同过滤召回
4.1 ETrec U2I 召回
参考文档:协同过滤etrec
原理:基于物品的协同过滤算法(Item-based CF)。通过统计用户-物品交互行为,计算物品之间的共现相似度,为用户推荐与其历史交互物品相似的其他物品。
核心特点:
支持实时行为触发(U2I Trigger)
时间衰减:近期行为权重更高
多行为融合:点击、收藏、加购等行为加权
关键配置:
参数 | 说明 | 典型值 |
| 行为时间窗口 | 15 天 |
| 时间衰减系数 | 0.2 |
| Trigger 选取数目 | 10 |
| 召回数目 | 500 |
| 召回引擎 | FeatureStore / Hologres |
4.2 ETrec I2I 召回
原理:基于物品的协同过滤,计算物品之间的相似度。
适用场景:
相关推荐(看了又看)
详情页相似物品推荐
相似度计算:
基于共现:两个物品被同一用户交互的次数
基于向量:物品 Embedding 的余弦相似度
4.3 Swing U2I 召回
参考文档:Swing算法工具
原理:改进的协同过滤算法,通过用户-物品二部图的 Swing 结构计算相似度。
核心思想:
如果两个物品被大量共同用户交互,则它们相似
引入用户活跃度惩罚:活跃用户权重降低
优势:
缓解热门物品过度推荐问题
发现长尾物品的关联关系
4.4 SimRank U2I 召回
参考文档:SimRank++相似度计算算法
⚠️ 资源提示:SimRank 计算涉及多次迭代和全图随机游走,资源消耗较大。建议使用 MaxCompute 包月资源以降低成本。
原理:基于图结构的相似度算法,通过随机游走计算节点相似度。
核心思想:
如果两个用户交互的相似物品多,则他们相似
如果两个物品被相似的用户交互,则它们相似
适用场景:
用户行为稀疏的场景
需要挖掘间接关联关系
特点:
迭代计算,收敛较慢
能捕捉多跳关联
五、场景划分:猜你喜欢 vs 相关推荐
5.1 为什么要分场景?
不同场景的用户意图和推荐目标不同,需要采用不同的召回策略:
维度 | 猜你喜欢 | 相关推荐 |
页面位置 | 首页/推荐流 | 详情页/内容页 |
用户意图 | 发现兴趣,浏览消费 | 深入了解,决策辅助 |
触发条件 | 用户画像 + 历史行为 | 当前浏览物品 |
推荐目标 | 个性化探索 | 相似/互补推荐 |
多样性要求 | 高(跨类目) | 中(同类目相关) |
5.2 猜你喜欢场景
适用算法:
DSSM 向量召回:核心算法,深度个性化
ETrec U2I:基于用户历史行为的协同过滤
Swing U2I:发现长尾兴趣
SimRank U2I:挖掘间接关联
用户分组热门:冷启动兜底
配置特点:
强调用户个性化
多路召回融合
多样性控制
5.3 相关推荐场景
适用算法:
ETrec I2I:基于物品相似度的协同过滤
物品分组热门:同类目热门推荐
DSSM 向量召回:语义相似度匹配
配置特点:
以当前物品为触发
强调内容相关性
同类目/同主题优先
5.4 算法-场景映射表
算法 | 猜你喜欢 | 相关推荐 |
DSSM 向量召回 | ✅ 核心 | ✅ 辅助 |
ETrec U2I | ✅ 核心 | ❌ |
ETrec I2I | ❌ | ✅ 核心 |
Swing U2I | ✅ | ❌ |
SimRank U2I | ✅ | ❌ |
全局热门 | ✅ 兜底 | ✅ 兜底 |
用户分组热门 | ✅ | ❌ |
物品分组热门 | ❌ | ✅ |
六、算法选型建议
6.1 按业务阶段选型
阶段 | 推荐算法 |
冷启动期 | 热门召回 + 分组热门 |
成长期 | 协同过滤(ETrec/Swing) |
成熟期 | DSSM 向量召回 + 多路融合 |
6.2 多路召回融合
生产环境通常采用多路召回策略:
融合策略:
加权融合:各路召回设置不同权重
去重融合:按物品 ID 去重,保留最高得分
配额融合:每路召回固定配额数量
七、总结
PAI-Rec 推荐算法定制提供了完整的召回算法体系:
算法类型 | 代表算法 | 核心能力 | 适用场景 |
深度学习 | DSSM(TorchEasyRec) | 语义匹配、高效检索 | 大规模个性化 |
协同过滤 | ETrec/Swing/SimRank | 行为关联、长尾发现 | 中规模场景 |
统计召回 | 热门/分组热门 | 简单高效、冷启动 | 兜底/新用户 |
TorchEasyRec DSSM 核心优势:
PyTorch 后端训练,支持复杂模型结构
FAISS 向量索引,CPU 机型即可高效检索
EasyRec Processor(Torch)统一在线服务
FG 特征编码保证离线/在线一致性
steady_mode 支持模型热更新
EasyRec(TF)与 TorchEasyRec 向量索引对比:
框架 | 向量索引方案 | 说明 |
EasyRec(TensorFlow) | Hologres Proxima | 不支持 FAISS,Item 向量存储在 Hologres 向量引擎 |
TorchEasyRec | FAISS | 支持 FAISS 索引,索引文件与模型一起存储在 OSS,在服务启动后加载到内存 |
最佳实践:
以 DSSM 向量召回(TorchEasyRec) 作为核心深度召回
协同过滤 作为补充,挖掘行为关联
热门召回 作为兜底,保证覆盖率
按场景(猜你喜欢/相关推荐)选择合适算法组合