排序服务流程
前置知识:
item:指要排序的物品,可以是游戏、视频、广告等
特征
用户特征
用户的一些特征,比如用户的性别、年龄、最近玩的x个游戏
item特征
物品的一些特征,以游戏为例的话,就是游戏的点击次数、游戏包名、游戏评分等
交叉特征
用户和物品的交叉特征
比如用户是否是第一次玩这个游戏
召回
选取一批特定的Item进入后续流程
serving召回
带着用户特征请求召回服务,拿到一批Item的Id
item特征会在召回服务里查,请求参数里无需携带
适用场景:根据不同的用户和不同的模型label(维度)召回,实现个性化的推荐
策略召回
根据策略获取一些Item列表,通常从本地缓存里获取
适用场景:一些适用于所有/特定用户的Item列表
具体实现:
- Redis+自定义本地缓存:将Item的唯一标识Id存在Redis的List列表里,结合本地缓存完成召回过程。请求的时候,如果本地缓存里没有数据,就去请求Redis,并且将数据存储在本地,并设置过期时间;下次请求来的时候直接读取本地缓存,减少Redis访问次数。
- atomic.Value:借助原子变量存储,数据源可以是Redis或MySQL或其他关系数据库
粗排
召回的items经过一定的强制过滤以后,需要用粗排简单筛一批出来进精排
带着 用户特征和一批item的id请求粗排服务,item特征会在粗排服务里查,请求参数里无需携带
精排
对粗排后的items根据final-socre进行截断,请求精排模型进行打分
请求参数包括用户特征、item特征以及交叉特征
重排
进行冷启动、保送等一些业务上的操作逻辑
冷启动
具体做了分层策略