X推荐算法,从特征到排序的完整链路是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
X推荐算法,从特征到排序的完整链路是怎样的?
2026 年 1 月,X 平台 向全球开发者开放了其“For You”推荐算法的源代码。本文基于 x-algorithm编写,聚焦算法层面的分析。如有理解不对的地方,欢迎指正,我倾向于...!
推荐系统的标准阶段
本文从推荐算法的视角, 聚焦 X推荐系统的算法部分按照推荐系统的标准阶段进行拆解:

先说说是召回阶段,然后是精排阶段,再说说是重排阶段。
召回阶段
我倾向于... X 的召回策略比较简单,没有粗排,只做了召回截断。
召回的具体细节:用户序列的处理方式很普通,而且只有互动序列一种,太虐了。。
| 参数 | 说明 |
|---|---|
| history_seq_len | 历史序列长度 |
| candidate_seq_len | 候选物品数量 |
是不是? 只有1个上下文特征产品界面。其他特征并没有送入模型,而是做了一些未开源的策略。
精排阶段
X 的精排模型基于 Grok Transformer与传统的Transformer Encoder区别:FFN 因子、Attention logits 缩放因子等,是不是?。
| 参数 | 说明 |
|---|---|
| widening_factor | FFN 因子 |
| attn_output_multiplier | Attention logits 缩放因子 |
| num_layers | Transformer 层数 |
| emb_size | Embedding 维度 |
| num_q_heads | Query 头数 |
| num_kv_heads | Key/Value 头数 |
X 抛弃了统计特征、 交叉特征,直接全部使用 ID特征 ,我好了。。
是不是? ID通过2种hash方式, 得到2个hash值,分别过look-up table得到128d的embedding。接着把他们concat起来过一个无激活函数的Linear层再压缩回128d。
# Hash configurationhash_config = HashConfig,最后说一句。
为什么用多重 Hash?
X的用户和帖子的 ID 空间巨大, 如果只用 1 次hash,要把冲突率降到极低, 也是醉了... 表必须开得很大,所以呢这里采用多重Hash Embedding 的方案:
精排模型的预测目标
精排模型直接一边预测 18 种用户行为的概率 P、P、P、P、P、P等等。
| 预测目标 | 说明 |
|---|---|
| retweet_score | P |
| reply_score | P |
| favorite_score | P |
所有预测后来啊通过加权求和得到 weighted_score
重排阶段
精排之后 X 通过一系列重排策略对候选进行到头来调整:去重、时效过滤、平安过滤等。
过滤器 |
说明 |
|
|---|---|---|
我傻了。 RetweetDeduplicationFilter |
过滤本次下发的物品 具体的权重值未开源 过滤条件 语言偏好 本文基于 x-algorithm编写…… … … | |
太刺激了。 VFFilter 防止同一作者的帖子霸占信息流 | ||
操作一波。 AuthorSocialgraphFilter 好家伙... 作者在 blocked 或 muted 列表 | ||
| … | … | |
| … | …
…
一下吧~!喵!🐈💕😂🤣😃😆🙃😍🙃🙂☺️😊☺️😌😌😌你说是不是呢, 是吧,老铁💁♀️👩🎤🧖♀️🤦♀️🤷♀️👩💼🚺🛀🧖♂️🤦♂️🤷♂️👨💼🚹🛀啊哈~!哦豁~!呀呼~!🎉🎊👏💥🎁🔥🎈🪄💫⭐️🌟🌠🌡️🌤️🌪️🌫️🔵🔴🛑🚫🤯🥶☠️💀👻🕷️🤡🦇😹👺🤥🤫🧐🤓🥸🤠👽🦸♂️🦸♀️👮♂️👮♀️🚔🚓🚗🚲🛴🛵🚴🏻♂️🚴🏻♀️🏋🏻🏋🏻✍🏻📝📚📖💡📣📢📰📱📞🔊📻🎧📺📻🔍🔎🗨🔘✔✅❗⚠️➰©®™‼⁉‽⚜⚛〽⚔⚒⚑✇✍☾❄⛅☁⛈⛆〰〽⚓⚒✈︎❄☃⛄︎☾☆⭐︎🌟🌠〰〽⚔⚒⚑✇✍☾❄⛅☁⛈⛆〰〽⚓⚒✈︎❄☃⛄︎☾☆⭐︎🌟🌠) |
X推荐算法,从特征到排序的完整链路是怎样的?
2026 年 1 月,X 平台 向全球开发者开放了其“For You”推荐算法的源代码。本文基于 x-algorithm编写,聚焦算法层面的分析。如有理解不对的地方,欢迎指正,我倾向于...!
推荐系统的标准阶段
本文从推荐算法的视角, 聚焦 X推荐系统的算法部分按照推荐系统的标准阶段进行拆解:

先说说是召回阶段,然后是精排阶段,再说说是重排阶段。
召回阶段
我倾向于... X 的召回策略比较简单,没有粗排,只做了召回截断。
召回的具体细节:用户序列的处理方式很普通,而且只有互动序列一种,太虐了。。
| 参数 | 说明 |
|---|---|
| history_seq_len | 历史序列长度 |
| candidate_seq_len | 候选物品数量 |
是不是? 只有1个上下文特征产品界面。其他特征并没有送入模型,而是做了一些未开源的策略。
精排阶段
X 的精排模型基于 Grok Transformer与传统的Transformer Encoder区别:FFN 因子、Attention logits 缩放因子等,是不是?。
| 参数 | 说明 |
|---|---|
| widening_factor | FFN 因子 |
| attn_output_multiplier | Attention logits 缩放因子 |
| num_layers | Transformer 层数 |
| emb_size | Embedding 维度 |
| num_q_heads | Query 头数 |
| num_kv_heads | Key/Value 头数 |
X 抛弃了统计特征、 交叉特征,直接全部使用 ID特征 ,我好了。。
是不是? ID通过2种hash方式, 得到2个hash值,分别过look-up table得到128d的embedding。接着把他们concat起来过一个无激活函数的Linear层再压缩回128d。
# Hash configurationhash_config = HashConfig,最后说一句。
为什么用多重 Hash?
X的用户和帖子的 ID 空间巨大, 如果只用 1 次hash,要把冲突率降到极低, 也是醉了... 表必须开得很大,所以呢这里采用多重Hash Embedding 的方案:
精排模型的预测目标
精排模型直接一边预测 18 种用户行为的概率 P、P、P、P、P、P等等。
| 预测目标 | 说明 |
|---|---|
| retweet_score | P |
| reply_score | P |
| favorite_score | P |
所有预测后来啊通过加权求和得到 weighted_score
重排阶段
精排之后 X 通过一系列重排策略对候选进行到头来调整:去重、时效过滤、平安过滤等。
过滤器 |
说明 |
|
|---|---|---|
我傻了。 RetweetDeduplicationFilter |
过滤本次下发的物品 具体的权重值未开源 过滤条件 语言偏好 本文基于 x-algorithm编写…… … … | |
太刺激了。 VFFilter 防止同一作者的帖子霸占信息流 | ||
操作一波。 AuthorSocialgraphFilter 好家伙... 作者在 blocked 或 muted 列表 | ||
| … | … | |
| … | …
…
一下吧~!喵!🐈💕😂🤣😃😆🙃😍🙃🙂☺️😊☺️😌😌😌你说是不是呢, 是吧,老铁💁♀️👩🎤🧖♀️🤦♀️🤷♀️👩💼🚺🛀🧖♂️🤦♂️🤷♂️👨💼🚹🛀啊哈~!哦豁~!呀呼~!🎉🎊👏💥🎁🔥🎈🪄💫⭐️🌟🌠🌡️🌤️🌪️🌫️🔵🔴🛑🚫🤯🥶☠️💀👻🕷️🤡🦇😹👺🤥🤫🧐🤓🥸🤠👽🦸♂️🦸♀️👮♂️👮♀️🚔🚓🚗🚲🛴🛵🚴🏻♂️🚴🏻♀️🏋🏻🏋🏻✍🏻📝📚📖💡📣📢📰📱📞🔊📻🎧📺📻🔍🔎🗨🔘✔✅❗⚠️➰©®™‼⁉‽⚜⚛〽⚔⚒⚑✇✍☾❄⛅☁⛈⛆〰〽⚓⚒✈︎❄☃⛄︎☾☆⭐︎🌟🌠〰〽⚔⚒⚑✇✍☾❄⛅☁⛈⛆〰〽⚓⚒✈︎❄☃⛄︎☾☆⭐︎🌟🌠) |

