一种将推荐组件分离成独立、可互换层的模块化架构是实现即插即用推荐系统的关键。这种设计允许开发者无需重做整个系统,即可替换或升级单个模块(如特征提取器、候选生成器或排序器)。其核心思想是标准化组件之间的接口,确保它们通过明确定义的数据格式和协议进行通信。例如,候选生成模块可能会以特定模式输出项目 ID 列表,然后排序模块无需关心这些候选是如何生成的即可对其进行处理。这种解耦实现了实验和部署的灵活性。
一种实用的实现方法是两阶段召回和排序管道,这在大型系统中很常用。在召回阶段,轻量级模块(如近似最近邻搜索或基于规则的过滤器)快速将候选集从数百万缩小到数百。只要这些模块遵循相同的输入/输出接口,就可以进行替换——例如,用神经网络嵌入模型替换基于协同过滤的召回器。然后,排序阶段使用更复杂的模型(例如,深度神经网络)对召回的项目进行评分。TensorFlow Recommenders (TFRS) 等框架通过提供预构建的层(用于嵌入查找、交叉特征交互和排序损失)来支持这一点,开发者可以自由组合和搭配使用。
另一种方法是基于微服务的架构,其中每个推荐组件都作为一个独立的服务运行。例如,特征工程服务可以暴露一个返回用户/项目嵌入的 API,供单独的排序服务使用。只要 API 契约保持稳定,这允许团队更新嵌入模型而不影响排序服务。Kubernetes 或 Docker 等工具简化了编排,而 gRPC 或 REST API 处理通信。Netflix 和 Spotify 等公司使用这种设计,通过在不同模块版本之间路由流量,在生产环境中进行推荐算法的 A/B 测试。通过强制模块之间严格的契约并使用版本化 API,开发者在不断演进的系统中实现了灵活性和稳定性。