看一看推荐系统

2025-02-24

推荐系统通过分析用户的历史行为、兴趣和偏好,向用户推荐他们可能感兴趣的内容或产品。这不仅能帮助用户快速找到所需信息,还能减少用户的选择成本,提升整体使用体验。

系统的由来

在推荐系统产生之前,微信的公众号内存在大量的文章和视频资源,这些公众号的资源,依赖用户的主动搜索后,才能触达具体的微信用户。这导致了一些优质的内容创作者,如果没有主动通过第三方渠道进行公众号资源的曝光,就无法获得持续稳定的用户流量, 这也影响了一些优秀的资源创作者的平台选择,进而产生流失。

因此,需要有一个平台,能够持续稳定的连接优质的内容创作者和大量的微信用户,由此,"看一看"推荐系统应运而生。

推荐系统整体架构

推荐系统架构图-ljgz.jpg

"看一看"推荐系统采用的是由上图所示的4层架构组成,其中的蓝色箭头表示了数据的流转关系。

元数据层

元数据层主要存储了一些原始的公众号、腾讯视频、微信的用户个人画像信息,这些信息是用于构建推荐系统的核心原始数据。这里的一些原始数据,也会来自于在线系统的反馈数据(如文章的曝光量、点击率、用户活跃度、文章停留时长等)。

离线计算层

离线计算层通过将元数据层的数据进行加工结合在线系统层通过实验系统测算的数据指标,迭代生成准实时的模型数据,推送至旁路存储系统,以提供在线系统模块使用。

旁路系统

旁路系统主要笼统的概括了推荐系统依赖的一些通用核心的外围在线服务系统,这些系统可能不仅仅只是提供给推荐系统使用。

其中比较核心的2个系统模块,一个是负责度量不同模型效果差异,遍于快速迭代系统模型的实验系统,另一个, 则是用于存储不同文档、视频、离线模型以及一些推荐反馈数据的存储系统。

这些系统的主要功能,也是为了便于连接在线推荐系统服务和离线数据模型,使得系统能够为用户提供更高质量的推荐效果,遍于核心功能的快速迭代。

在线系统层

一个完整的在线推荐系统的流程,大致如下:
推荐系统-在线服务.jpg

  1. 用户通过微信客户端访问"看一看"推荐系统
  2. 请求先到达"业务接入模块"后, 再将请求穿透至"用户画像模块"
  3. 通过"用户画像模块"中获取到的用户画像信息(主要是一些用户标签、向量化数据等),将请求访问至下游的"召回模块"。
  4. "召回模块"根据用户具体的画像信息,结合离线计算出的文档、视频的召回索引信息,进行多路召回,例如,根据标签信息召回、热点召回、相似度召回(协同过滤、向量化召回)等。召回后的数据量通常比较大,比如每路召回的数据量可能有400个item, 多路召回加上去重后的数据总量预计几千个item后, 再将请求发送至"精排模块"。
  5. "精排模块" 根据用户的画像信息和item信息,通过精排模型打分,对item进行重新排序后, 再将请求回传至"业务接入模块"。
  6. "业务接入模块"根据精排后的item顺序信息,结合当前一些产品特性和政治时事,重新进行一些item的强插、调整(比如可能会强插置顶一些国家政府要求的新闻时事宣传内容等)。
    可以看到,核心的画像、召回、精排模块都会根据用户的反馈/负反馈信息,来进行相关模型的训练,结合AB实验系统,进行模型的迭代优化, 以此来逐步核心用户指标的提升。具体旁路的AB实验系统是如何协助提升核心系统的关键指标的,我们将在另一偏文档展开详细叙述。

后记

在"看一看"推荐系统持续运营了两三年后,我们根据用户的反馈,包括曝光点击率、用户停留时长、用户留存、用户增长等核心指标数据, "视频"推荐分类的核心指标数据,显著的高于"文章"推荐分类的核心指标数据, 因此, 后续逐步诞生了"视频号"。