推荐系统管道架构师 是做什么的?
一个用于构建可组合推荐、排序和推送管道的规范和脚手架技能。它编码了由 xAI 开源的 For You 算法(Apache 2.0)推广的 六阶段模式 — Source → Hydrator → Filter → Scorer → Selector → SideEffect。该技能是该模式的独立重新实现(MIT)——未复制原始代码。
上游仓库:https://github.com/mturac/recsys-pipeline-architect
何时使用
- 用户想要构建任何“为用户/上下文选择前K个项目”的系统
- 用户询问“我应该如何对X进行排序”或描述一个推送/个性化问题
- 用户有一个评分函数,需要围绕它搭建管道基础设施
- 用户希望从单一相关性评分迁移到具有可调权重的多动作预测
- 用户正在封装一个LLM/ML评分器,并需要在其技术栈(TypeScript / Go / Python)中添加过滤器、充实器、副作用以及可运行的脚手架
- 触发词:“推荐系统”、“推送算法”、“排名管道”、“For You 推送”、“候选管道”、“内容推荐器”、“推荐系统管道架构”、“RAG 检索重排序器”
何时不使用
- 模型架构工作(Transformer设计、双塔检索、嵌入训练)——该技能是模型周围的管道,而非模型本身
- 纯ML训练管道——评分函数是用户的责任
- 运行已部署的管道(监控、自动扩缩容)——超出范围
六阶段框架
| # | 阶段 | 工作 | 并行? |
|---|---|---|---|
| 1 | Source | 从一个或多个来源获取候选集 | 是——多个来源并行运行 |
| 2 | Hydrator | 为每个候选集丰富过滤和评分所需的元数据 | 是——独立的充实器并行运行 |
| 3 | Filter | 删除不应展示的候选(已屏蔽、过期、重复、不符合条件) | 顺序——每个过滤器看到更少的项目 |
| 4 | Scorer | 为每个存活的候选分配一个或多个分数 | 顺序——后面的评分器可以看到前面的分数 |
| 5 | Selector | 按最终分数排序,返回前K个 | 单一操作 |
| 6 | SideEffect | 缓存已提供的ID,记录曝光,发出事件,更新计数器 | 异步——绝不能阻塞响应 |
为什么是这个精确顺序
- 充实前先获取来源:在付出成本充实候选之前,先知道存在哪些候选
- 过滤前先充实:许多过滤器需要来源未提供的元数据
- 评分前先过滤:评分是昂贵阶段;先删除不符合条件的候选项
- 评分器链(而非单一评分器):真实系统组合了ML评分、多样性重排序和业务规则
- 评分后选择:使评分具有确定性和可缓存性
- 副作用最后且异步:副作用绝不能阻塞用户响应
调用时的工作流
引导用户完成以下八个步骤:
- 明确用例(一轮,三个问题):被排序的项目?输入上下文?语言/运行时?
- 识别候选来源:通常是网络内(已关注/已拥有/已订阅)+ 网络外(ML检索/热门/相似于已喜欢)
- 列出所需的充实内容:对于每个过滤器和评分器,它需要哪些来源未提供的数据?
- 列出过滤器:去重、自身、年龄、屏蔽/静音、之前提供过的、资格。顺序很重要——廉价先于昂贵。
- 设计评分器链:主要评分器(ML)→ 组合器(带权重的多动作)→ 多样性 → 业务规则
- 选择器:按最终分数降序排序,取前K个(或针对网络内/网络外进行分层混合)
- 副作用:缓存已提供的ID,发出曝光事件,更新计数器,记录分析——全部即发即忘
- 在用户的技术栈中生成脚手架
需要呈现的关键权衡(不要默默使用默认值)
1. 单一评分与多动作预测
- 单一评分:训练一个模型预测相关性。要改变行为 → 重新训练。
- 多动作:预测多个动作的
P(动作)(阅读、喜欢、分享、跳过、举报),在服务时用权重组合。要改变行为 → 改变权重。无需重新训练。
X For You 系统使用带有正负权重的多动作。当用户期望频繁调整时,推荐使用多动作。
2. 评分中的候选隔离
- 隔离:每个候选独立评分。确定性,可缓存。
- 联合:候选在评分期间相互关注(例如,对批次进行Transformer处理)。更具表达力,但跨批次不具有确定性。
默认使用隔离。仅在有特定理由时(例如,显式的批次感知多样性)才使用联合。
3. 在线与离线
- 请求时(在线):管道在每个请求上运行。延迟预算:100–300毫秒。默认。
- 预计算(离线批处理):管道定期运行,结果缓存。延迟更低,新鲜度更低。
- 混合:候选检索离线,排名在线。
硬性规则
- 不要捏造基准数字。 “快多少?” → “取决于工作负载,请自行运行。”
- 归因纪律。 当引用该模式时,应归因于“由 xAI 开源的 For You 算法推广” /
github.com/xai-org/x-algorithm(Apache 2.0)。 - 不使用商标。 不要将用户的工件命名为“类似X”或使用“For You”品牌。模式免费;品牌不免费。建议命名:“候选管道”、“推送管道”、“排名管道”、“推荐系统管道”。
- 呈现权衡。 多动作与单一、隔离与联合、在线与离线——切勿默默使用默认值。
- 生成的脚手架必须可运行。 伪代码不能当作代码。
- 过滤器顺序很重要。 廉价先于昂贵。通用先于特定用户。
- 副作用绝不阻塞。 使用即发即忘模式(goroutine / 无需 await 的 Promise / asyncio task)。
反模式
- 评分前过滤(浪费计算资源在最终会被丢弃的候选项上)
- 同步副作用(缓存写入/曝光发出阻塞响应)
- 当产品需要针对多个目标进行调优时(参与度 vs 安全性 vs 多样性 vs 广告),仅使用单一的“相关性”评分
- 默认使用联合评分(非确定性,更难缓存,不与重排序阶段组合)
- 生成“用于说明”的伪代码——脚手架必须能实际运行
上游内容
上游仓库位于 https://github.com/mturac/recsys-pipeline-architect,提供:
- 完整的
SKILL.md,包含完整的8步工作流 - 5个按需加载的参考文档:4种语言(TS/Go/Python/Rust)的接口、多动作评分模式、候选隔离、过滤器手册(12种模式)、评分器手册(加权和、MMR、多样性惩罚、位置去偏)
- 3个可运行的示例脚手架,每个在其测试套件上均为绿色通过:
- Strapi v5 插件(TypeScript / Jest — 3/3 通过)
- Zentra 兼容管道(使用泛型的 Go — 3/3 通过)
- PMAI 任务优先级排序器(Python / FastAPI / pytest — 3/3 通过)
- v0.1.0 版本已标记
- MIT 许可证;模式归因于 xAI X For You 算法(Apache 2.0)
通过 skills.sh 安装:npx skills add mturac/recsys-pipeline-architect