当前位置: 首页 > news >正文

【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回

地理位置召回

GeoHash召回

  • 用户可能对附件发生的事感兴趣
  • GeoHash:对经纬度的编码,地图上一个长方形区域。
  • 系统维护一个地理位置 GeoHash 索引,GeoHash 意思是把经纬度编码成二进制哈希码,方便检索
  • 索引:GeoHash → 优质笔记列表(按时间倒排),以 GeoHash 为索引,记录地图上一个长方形区域的优质笔记
  • 做召回的时候,给定用户的 GeoHash,会取回区域内一些比较新的优质笔记
  • 这条召回通道没有个性化,召回纯粹只看地理位置。每次召回本地的一批优质笔记,完全不考虑用户兴趣
  • 就是因为没有个性化,所以才得用优质笔记。笔记本身质量好,即使没有个性化,也很有可能会喜欢看。反过来,既没有个性化,也不是优质笔记,那么召回的笔记大概率通不过粗排和精排
  • 圈出来的是 GeoHash,每个 GeoHash 都表示地图上的一个长方形区域
    在这里插入图片描述
  • 每个 GeoHash 后面都有一个笔记列表,意思是定位在这个位置的优质笔记,这个列表包含 k 篇优质笔记,排在最前面的是最新的笔记
    在这里插入图片描述
  • GeoHash 很简单,如果小红书用户允许小红书获取其定位,那么就根据用户定位的 GeoHash,取回该地点最新的 k 篇优质笔记
  • 至于这些哪些会留在最终的曝光里面,这由排序模型决定

同城召回

  • 用户可能对同城发生的事感兴趣,与上面的 GeoHash 的原理同理
  • 索引:城市 → 优质笔记列表(按时间倒排)
  • 这条召回通道没有个性化

作者召回

  • 如果你对一个作者感兴趣,系统就会给你推这个作者发布的新笔记
  • 用户对关注的作者发布的笔记感兴趣
  • 索引:新发布的笔记排最前面
    • 用户 → 关注的作者
    • 作者 → 发布的笔记
  • 召回:用户 → 关注的作者 → 最新的笔记

有交互的作者召回

  • 如果用户对某笔记感兴趣(点赞,收藏,转发),那么用户可能对该作者的其他笔记感兴趣
    • 比如我在小红书上刷到一个玉石加工的视频,我对其点了赞。虽然我没有买玉石或者收藏玉石的习惯,所以我不会关注这些作者。但给我推送这些作者新发布的玉石雕刻的视频,我很有可能会看完。所以即使我不关注作者,也应该继续推送他的视频
  • 索引:用户 → 有交互的作者,作者列表需要更新,最简单的方法就是保留最近交互的作者,删除一段时间没有交互的作者
  • 召回:用户 → 有交互的作者 → 最新的笔记

相似作者召回

  • 如果用户喜欢某作者,那么用户喜欢相似的作者
  • 索引:作者 → 相似作者
  • 作者相似性的计算类型类似于 ItemCF,如果两个作者的粉丝有很大的重合,那么就判定两个作者相似
  • 召回:用户 → 感兴趣的作者 → 相似作者 → 最新的笔记,感兴趣的作者包括用户关注的作者和用户有交互的作者,利用索引再找到相似作者,最后取回作者最新的一批笔记
  • 如果每个作者召回最新的一篇笔记:
    在这里插入图片描述

缓存召回

  • 想法:复用前 n 次推荐精排的结果
  • 背景:
    • 精排输出几百篇笔记,送入重排
    • 重排做多样性抽样,选出几十篇
    • 精排结果一大半没有曝光,被浪费。这些都经历了很多计算,但是因为随机性的原因没有被曝光,是很可惜的
  • 精排前 50,但是没有被曝光的,缓存起来,作为一条召回通道
  • 缓存大小固定,需要退场机制,比如我的缓存大小就是 100 篇笔记,那么就需要确保缓存里面最多有 100 篇笔记
    • 一旦笔记成功曝光,就从缓存退场
    • 如果超出缓存大小,就移除最先进入缓存的笔记
    • 笔记最多被召回 10 次,达到 10 次就退场
    • 每篇笔记最多保存 3 天,达到 3 天就退场
  • 这些都是比较简单的规则,还可以加上更复杂的规则,比如:假如想要扶持曝光比较低的笔记,那么可以根据笔记的曝光次数来设置规则,让低曝光的笔记在缓存里存更长时间

总结

在这里插入图片描述

http://www.dtcms.com/a/269575.html

相关文章:

  • 【Rust base64库】Rust bas64编码解码详细解析与应用实战
  • ​​​​​​​营销费用管理,如何驱动快消企业营销投资战略升级
  • 萌新赛第(一)场
  • IEEE Fellowe助力 2025年物联网、数据科学与先进计算国际学术会议(IDSAC2025)
  • C++——string的了解和使用
  • 将oracle表字段json字符串分解提取并返回单列表
  • Redis基础数据结构
  • 深度学习与图像处理 | 基于传统图像处理的自动驾驶车道线检测
  • XSLT注入与安全修复方法
  • 【快手】数据挖掘面试题0002:求某地铁站每日客流量,乘地铁经过、进出站人都包括在内
  • C#随机数生成全面详解:从基础到高级应用
  • 【ROS2 自动驾驶学习】03-ROS2常用命令
  • 网络安全护网实战:攻击手段解析与防御策略
  • 基于odoo17的设计模式详解---工厂模式
  • 阿里云mysql数据丢失,如何通过服务器备份在其他服务器上恢复数据,并获取mysql丢失数据,完成mysql数据恢复
  • Prompt Injection Attack to Tool Selection in LLM Agents
  • 深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信
  • IP 能ping通,服务器是否开机?
  • Go语言反射机制详解
  • 基于ZYNQ7000的AD9226采集卡实现(3、PS LINUX DMA驱动实现)
  • vue3 el-table 行数据沾满格自动换行
  • 【debug】git clone 报错
  • Web前端: :is(通用选择器)
  • 图像轮廓检测与绘制:OpenCV 实战指南
  • claude code-- 基于Claude 4 模型的智能编程工具,重塑你的编程体验
  • 微软上线Deep Research:OpenAI同款智能体,o3+必应双王炸
  • Web后端开发-Mybatis
  • 玩转Docker | 使用Docker部署NotepadMX笔记应用程序
  • UDP的socket编程
  • unity 模型UV重叠问题相关(重新整理)