Skip to content

算法用了你的哪些数据

For You 推荐读取的用户数据清单:互动序列、关系与设置、已看记录、画像与请求上下文、帖子公开互动数、嵌入里的作者画像、可见性规则读的设置与国家

Updated

本页面向创作者和运营,按开源源码列出 For You 推荐读取的用户数据。本页只列这套代码读了什么,不推测 X 在仓库之外收集了什么。每条结论附一个源码出处;开关值都是开源默认值,线上值可能不同。

结论

算法在三个位置读你的数据:

  1. 你刷 For You 时:home-mixer 按你的用户 ID 现查互动序列、关系、设置和画像,再交给模型和过滤器。
  2. 你发帖时:后台把你的账号资料写进帖子的嵌入,排序模型还读帖子的公开互动数。
  3. 可见性检查时:可见性过滤读你的敏感内容设置、年龄、账号年龄和所在国家。

其中分量最重的是互动序列:你最近点赞、回复、转发、停留过的帖子。排序不靠你填写的兴趣标签。

flowchart LR
    REQ["请求:用户 ID + 国家 + 语言 + 设备"] --> QH["查询水合器<br/>现查序列、关系、画像"]
    QH --> M["召回与排序模型"]
    QH --> FL["过滤器"]
    POST["你发的帖子 + 账号资料"] --> EMB["帖子嵌入与互动数"]
    EMB --> M
    M --> VF["可见性过滤<br/>读设置、年龄、国家"]

请求本身只带少量字段。其余数据由查询水合器(query hydrator)补齐。查询水合器是按用户 ID 去各个存储取一类数据的组件。内层流水线装配 21 个查询水合器(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:285-347)。

一、互动序列:模型的核心输入

home-mixer 向用户行为聚合服务取三条序列(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:286-294):

序列 给谁用
打分序列 Phoenix 排序模型
沉浸式视频打分序列 视频沉浸页的打分,只在该场景开启
召回序列 Phoenix 召回

排序模型的旗舰配置读取最近 1022 条互动,包括点赞、回复、转发、引用和浏览停留(phoenix/xrex/configs/xrecsys.py:316-319)。模型既看你做了什么,也看你刷到却没停留的帖子。

另有两组“近期互动信号”,开源默认开启(home-mixer/params/param.rs:735-746)。它们按类型列出你最近点赞、转发、回复、收藏、分享、原创发帖、展开图片和看完视频的帖子(home-mixer/models/engagement_signals.rs:5-15)。SimClusters 用这些帖子作种子,找相似帖子(home-mixer/sources/simclusters_source.rs:279-291)。

二、关系与设置

home-mixer 读取你的 6 项关系与设置(home-mixer/models/user_features.rs:7-14):

数据 用途 出处
关注名单 区分站内帖和站外帖 home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:301-303
拉黑名单 剔除你拉黑的作者,以及转发或引用他们的帖子 home-mixer/filters/author_socialgraph_filter.rs:9-45
静音名单 剔除你静音的作者 home-mixer/filters/author_socialgraph_filter.rs:9-45
订阅名单 判断你能否看订阅者专属帖 home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:304-306
屏蔽词 剔除命中你屏蔽词的帖子 home-mixer/filters/viewer_muted_keyword_filter.rs:26-40
你的粉丝数 随请求读入 home-mixer/server.rs:143

另外三项也影响你的推荐流:

  • 谁拉黑了你。 作者拉黑你时,他的帖子也被剔除(home-mixer/candidate_hydrators/blocked_by_hydrator.rs:24-49)。
  • “允许 For You 推荐”设置。 这项设置为否时,For You 只给站内帖(home-mixer/server.rs:100-101)。
  • 你排除的话题。 请求带排除话题时,话题过滤器生效(home-mixer/filters/topic_ids_filter.rs:15-17)。

三、已看与已推送记录

为了不重复推同一条帖子,home-mixer 读四份记录:

记录 来源 用途 出处
已看 ID 客户端随请求带上 剔除你看过的帖子 home-mixer/filters/previously_seen_posts_filter.rs:16-30
曝光布隆过滤器 请求未带时现查 一种压缩的“看过集合”,用途同上 home-mixer/query_hydrators/impression_bloom_filter_query_hydrator.rs:15-17
已推送 ID 客户端随请求带上 翻页时剔除已推给你的帖子 home-mixer/filters/previously_served_posts_filter.rs:14-29
推送历史 外层流水线现查 外层模块的疲劳控制 home-mixer/candidate_pipeline/for_you_candidate_pipeline.rs:210-216

已看 ID 还会写入 Kafka 消息队列,供下游使用;这一步受开关 EnablePublishSeenIdsToKafka 控制(home-mixer/side_effects/publish_seen_ids_to_kafka_side_effect.rs:35-37)。另一个“已曝光帖子”查询水合器在代码里构造了,但没有装进流水线(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:350)。

四、画像与请求上下文

home-mixer 把下列数据作为“用户上下文”发给 Phoenix 召回和排序(home-mixer/util/phoenix_request.rs:89-148):

数据 来源 开关(开源默认) 出处
国家、语言、客户端版本、IP 地址、账号角色 请求自带 无 home-mixer/util/phoenix_request.rs:89-97
年龄段、性别、州(地区) 账号资料 EnableContextFeatures(开) home-mixer/query_hydrators/user_demographics_query_hydrator.rs:14-16
年龄(岁) 账号资料 无 home-mixer/util/phoenix_request.rs:118
推断性别及置信分 系统推断 EnableInferredGenderHydration(开) home-mixer/params/param.rs:811-816
关注的 Grok 话题、关注的推荐关注包 你主动选择 EnableContextFeatures(开) home-mixer/query_hydrators/followed_grok_topics_query_hydrator.rs:24-26
由 IP 推算的经纬度和城市区域码 系统推断 EnableIpFeature(开) home-mixer/query_hydrators/ip_query_hydrator.rs:14-16
已安装应用列表 设备数据 EnableUserInstalledAppsHydration(开) home-mixer/params/param.rs:790-795
最近搜索词 你的搜索 EnableRecentSearchQueriesHydration(关) home-mixer/params/param.rs:797-802

home-mixer 把数据发给模型,不等于模型一定使用它。排序模型的旗舰配置使用国家、语言、经纬度、性别和年龄,不使用已安装应用(phoenix/xrex/configs/xrecsys.py:351-359)。模型还为你的用户 ID 和 IP 地址各查一组哈希嵌入,见 哈希嵌入。

请求开始时,home-mixer 还用国家、语言、客户端、账号角色、是否绑定手机号、回流时间等字段,决定你落入哪组实验参数(home-mixer/server.rs:103-122)。

五、你发帖时:帖子公开互动数

排序模型给每条候选帖子读 5 个公开计数:点赞、回复、转发、引用、浏览(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:417)。帖子发布超过 1213200 秒(约 14 天)后,这 5 个计数置零,不再输入模型(phoenix/xrex/data/recsys/feature_config.py:87-88、phoenix/crates/common/xai-recsys/src/util.rs:765-790)。

新作者扶持也读你的粉丝数,以及帖子在首页的曝光数和点赞数(home-mixer/scorers/author_cold_start.rs:188-193、home-mixer/scorers/author_cold_start.rs:243-255)。详见 新号与冷启动。

六、你发帖时:嵌入里的作者画像

后台的 Grox 在帖子发布后生成帖子嵌入。嵌入是把帖子转成一组数字向量,用来比较相似度。v8.2 与 v8-search 两种嵌入的输入文本以“作者块”开头,作者块包含你的账号资料(grox/flows/mm_emb/renderer_v82.py:187-243):

  • 显示名和用户名、简介、所属机构。
  • 认证颜色:政府为灰标,企业为金标,付费为蓝标,后附订阅档位(grox/flows/mm_emb/renderer_v82.py:245-266)。
  • 粉丝数和关注数,各附一个档位标签。
  • 注册月份、国家、账号语言。
  • 是否受保护账号、是否有恶搞或评论账号标签。
  • NSFW 标记:账号自标或被审核员标为 NSFW 时写入(grox/flows/mm_emb/renderer_v82.py:277-284)。

同一段文字由不同账号发出,得到的嵌入不同。Phoenix 召回用帖子嵌入生成语义 ID(phoenix/README.md:110-114)。详见 多模态帖子嵌入器。

七、可见性规则读的数据

可见性过滤 决定一条帖子能不能展示给你。它读你的下列数据:

数据 作用 出处
是否允许显示敏感媒体 不允许时,成人或血腥媒体加遮罩 visibility-filtering/rules/tweet_rules.rs:454-476
是否登录、是否未成年、是否未填年龄 对这三类查看者隐藏成人内容 visibility-filtering/rules/tweet_rules.rs:294-380
账号国家与请求国家 未填年龄时,按国家清单判断是否隐藏成人内容 visibility-filtering/rules/tweet_rules.rs:346-380
请求国家 法律下架和媒体地理限制按国家生效 visibility-filtering/models/tweet.rs:74-98
账号是否注册不足 24 小时 新查看者规则 visibility-filtering/hydration/decode/viewer.rs:116
拉黑、静音、静音转发、关注 对应丢弃规则;关注决定站内或站外 visibility-filtering/rules/author_rules.rs:42-65
订阅关系、Trusted Friends 名单 订阅者专属帖与小圈子帖 visibility-filtering/rules/tweet_rules.rs:396-452

八、标签路径读的数据

后台给账号打分的系统也读你的行为。它们不在请求时运行,结果变成账号标签。详见 账号级信号(agatha、bdsm、user-cred-v2):

  • agatha:你的账号收到的拉黑、举报、垃圾举报,相对站外点赞的比率(agatha/scalding/labels/rate_based_labels/RateBasedLabels.scala:29-57)。
  • BDSM:你最近 512 个动作的序列,含动作类型、产品界面、停留时长、设备与客户端信号(bdsm/README.md:26-29、bdsm/README.md:102-103)。
  • user-cred-v2:谁关注你,以及近 7 天谁给你点赞、转发(user-cred-v2/UserCredV2Config.scala:25、user-cred-v2/UserCredV2App.scala:79-100)。

边界

  • 本页列的是开源代码读取的数据。X 在仓库之外收集和使用的数据,源码未包含。
  • 带开关的数据,某次请求是否读取,取决于线上开关;线上开关值源码未包含。
  • 用户行为聚合服务、人口属性服务等数据源的内部实现,源码未包含。

出处

结论 技术页 主要源码
21 个查询水合器 home-mixer 编排层 home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:285-347
排序读最近 1022 条互动 Phoenix 排序模型 phoenix/xrex/configs/xrecsys.py:316-319
6 项关系与设置 过滤流水线 home-mixer/models/user_features.rs:7-14
已看记录用于去重 过滤流水线 home-mixer/filters/previously_seen_posts_filter.rs:16-30
发给 Phoenix 的用户上下文 Phoenix 排序模型 home-mixer/util/phoenix_request.rs:89-148
公开互动数约 14 天后不再输入 Phoenix 排序模型 phoenix/xrex/data/recsys/feature_config.py:87-88
嵌入里的作者画像 多模态帖子嵌入器 grox/flows/mm_emb/renderer_v82.py:187-284
可见性规则读的设置与国家 可见性过滤(Visibility Filtering) visibility-filtering/rules/tweet_rules.rs:294-394

相关页面

Type to search…

↑↓ navigate↵ selectEsc close