推荐系统实现思路

富途牛牛招聘的AI高级开发的岗位:1.参与从0到1打造公司新一代、AI驱动的用户全生命周期运营与营销自动化平台。
2.直面高可用、高扩展的架构挑战,处理千万级用户画像与毫秒级实时决策。
3.深度整合AI(机器学习、推荐算法、AI Agent)与业务,实现智能化、自动化运营。 这公司的产品形态是怎么样的
岗位还要求了(2)深刻理解AARRR模型、用户分层与精准营销,有流程编排引擎(如Flowable)或电商推荐系统相关经验者优先。 AARRR模型、用户分层 怎么结合到系统里面

设计思路

你的抽象非常精准,一针见血!

从宏观业务逻辑上来说,你总结的这个公式就是整个系统的核心骨架:
推荐决策 = (长期标签 + 实时行为 + 旅程节点) -> 匹配 -> 推荐配置表

但是,作为富途牛牛招聘的“AI高级开发”,如果系统仅仅停留在“查配置表”的阶段,是无法应对千万级用户和毫秒级并发的,也谈不上“AI驱动”。

我们可以把你这个“简单抽象”,按照技术演进,拆解为 V1.0(规则引擎时代)V2.0(AI与推荐算法时代,即这个岗位要做的) 两个层次来看:


V1.0 时代:你的抽象(基于规则和配置表)

在早期的系统或者简单的营销系统中,确实是这么做的:

  1. 运营人员在后台配表:如果 标签=高净值行为=看了3次英伟达旅程=未入金,则 推荐产品=美股免佣卡
  2. 系统执行:写一堆 If-Else 或者用简单的规则引擎(如 Drools),当用户触发动作时,去查这张“配置表”,命中规则就下发。

痛点(为什么富途要招AI高级开发来升级它):

  • 规则爆炸:当有上千个标签、几百个产品时,人工根本配不过来,配置表会变成灾难。
  • 不够个性化(千人十面,而不是千人千面):配置表只能覆盖群体,无法精确到个人。比如两个人都命中了“美股免佣卡”的规则,但A可能更吃“送苹果股票”的套路,B更吃“送现金”的套路。

V2.0 时代:AI高级开发的抽象(基于模型与算法)

在这个岗位要打造的“新一代AI驱动平台”中,你提到的“推荐配置表”将被“AI推荐算法模型”和“大模型Agent”彻底取代

新的抽象逻辑变成了这样:

1. 输入层(Input):特征工程的实时化

  • 长期标签(User Profile):存在特征库(Feature Store)里,如资产规模、历史收益率、偏好行业。
  • 实时行为(Real-time Context):不再是简单的“看了什么”,而是通过 Flink 等流处理技术,毫秒级捕捉用户的滑动、停留时长、点击,实时转化为“实时特征向量”。
  • 旅程节点(Journey State):由 Flowable 等引擎维护的当前生命周期状态。

2. 大脑层(Processing):从“查表”变成“模型打分”

当用户打开App或触发事件时,系统不再去查“配置表”,而是瞬间经历一个经典的推荐系统漏斗:

  • 召回(Recall):算法从几千个营销活动、理财产品、股票资讯中,快速筛选出这个用户可能感兴趣的 100 个候选池。(比如协同过滤、双塔模型)
  • 排序(Ranking):使用深度学习模型(如 DIN、DIEN等),把用户的【特征向量】和这100个产品的【特征向量】输入给模型。模型在毫秒级内计算出:该用户点击产品A的概率是 5.2%,点击产品B的概率是 8.1%(CTR预估)。
  • 业务策略微调(Re-ranking):结合“旅程节点”,比如虽然产品B点击率高,但用户处于“急需促入金”的旅程节点,系统会把“入金活动”的权重强行调高。

3. 输出层(Output):AI Agent 动态生成

  • 千人千面的文案:不仅推荐的产品是算法算出来的,连展示的文案都可能是 AI Agent(大模型) 结合用户性格实时生成的。
    • 比如给保守型用户生成:“稳健理财,年化5%”
    • 给激进型用户生成:“把握英伟达财报行情,立即交易”

总结

你的理解在业务本质上是完全正确的。

但在技术实现上,面试官期望听到的不是“查配置表”,而是:
“我们将用户的静态标签、实时行为序列和生命周期状态转化为多维特征向量,输入到深度学习推荐模型中进行毫秒级的 CTR/CVR 预估排序,并结合大模型 Agent 动态生成个性化触达内容,从而替代传统的人工规则配置表,实现真正的自动化与智能化。”

这就是“简单抽象”与“高级AI开发架构”的区别。

特征向量设计 和召回

这是一个非常专业且切中要害的问题!

如果你在面试中问出这个问题,面试官会立刻觉得你是“懂行”的。因为“特征怎么设计”直接决定了推荐算法能不能把东西“捞(召回)”出来。

要回答这个问题,我们首先要纠正一个工业界架构演进的认知:
传统的协同过滤(UserCF/ItemCF)其实很难直接吃下“实时特征向量”。 传统CF本质上是基于“历史共现矩阵”(你买过A,他买过A和B,所以给你推B),它通常是离线(T+1)算好的。

在富途这种要求毫秒级实时响应的现代AI架构中,我们通常使用“向量召回(Vector Recall)”,最经典的架构就是双塔模型(DSSM, Two-Tower Model)

下面我为你拆解,这个“实时特征向量”到底该怎么设计,以及它是如何把产品“召回”出来的。


一、 实时特征向量的设计(User Vector 的构造)

为了让模型能理解,我们需要把用户的所有信息“拼接”并“压缩”成一个固定长度(比如 256 维或 512 维)的稠密浮点数数组。这个向量的设计通常包含三个核心部分:

1. 静态与长期特征(Base Profile)—— 奠定底色

这部分数据从 Redis 或 Feature Store 直接读取,通过 Embedding(嵌入层)转化为向量。

  • 用户画像:年龄、性别、开户状态、风险等级(保守/激进)。
  • 资产特征:日均资产水位(AUM)、持仓偏好(偏好美股还是A股、偏好科技股还是医药股)。
  • 转化方式:比如“风险等级=激进”,在模型里会被映射为一个 16 维的向量 [0.1, -0.5, 0.8...]

2. 实时行为序列(Real-time Sequence)—— 捕捉瞬间意图(核心!)

这是 Flink 算出来的最值钱的部分。怎么把“用户刚刚看了什么”变成向量?

  • 行为序列化:记录用户过去 5 分钟、1 小时内的行为轨迹。比如:[浏览_腾讯, 搜索_英伟达, 查看_期权开户页]
  • Item Embedding:在系统里,每一个股票、每一个页面、每一个营销活动,都有一个预先训练好的“物品向量(Item Vector)”。
  • 序列池化(Pooling)或注意力机制(Attention)
    • 简单做法(Average Pooling):把用户最近看过的 5 只股票的向量加起来求平均,代表他此刻的整体兴趣方向。
    • 高级做法(DIN模型思想):根据用户当前停留的页面,对历史行为赋予不同的权重(Attention)。

3. 实时上下文特征(Context)—— 结合环境

  • 时间与状态:当前是美股盘前、盘中还是盘后?(盘中推交易工具,盘后推复盘资讯)。
  • 网络与设备:5G还是WIFI?(决定推视频还是图文)。

最终拼接(Concat)
把上述三部分的向量拼接在一起,经过几层神经网络(MLP)的压缩,最终输出一个 256维的用户实时特征向量(User Vector)


二、 召回是怎么发生的?(双塔模型与向量检索)

设计好向量后,怎么把产品(营销活动、资讯、股票)找出来?这就是“双塔模型”+“向量数据库”发威的时候。

1. 物品塔(Item Tower)提前建库

系统里有成千上万的“物料”(比如:免佣卡A、理财券B、英伟达资讯C、港股打新活动D)。
AI 团队会用另一个神经网络(物品塔),把这些物料的属性(标题、奖励金额、适用人群)也转化为 256维的物品向量(Item Vector)
这些物品向量会被存入向量数据库(如 Faiss, Milvus, Elasticsearch)中。

2. 毫秒级召回过程(点积/余弦相似度)

当用户打开富途牛牛的瞬间:

  1. 生成 User Vector:系统结合 Flink 传来的实时数据,瞬间生成该用户此刻的 256 维 User Vector。
  2. 向量检索(ANN Search):系统拿着这个 User Vector,去向量数据库里进行“近似最近邻搜索(ANN)”
  3. 计算相似度:数据库在毫秒级内,计算 User Vector 和所有 Item Vector 的内积(Dot Product)或余弦相似度(Cosine Similarity)
    • 通俗理解:在 256 维的几何空间里,算一下代表“用户”的这个点,离哪个“营销活动”的点最近。
  4. 输出 Top K:数据库瞬间返回距离最近的 100 个物品。这 100 个物品,就是被“召回”的候选集。

三、 结合富途业务的完整场景推演

假设富途后台配置了一个营销活动:“美股期权交易大礼包(送10美金)”
这个活动经过“物品塔”编码,它的 Item Vector 在高维空间里,靠近“美股”、“高风险”、“衍生品”、“科技股”这些概念。

场景发生:

  1. 静态底色:用户李雷,资产50万,平时偶尔买买腾讯(此时他的 User Vector 离“期权”还很远)。
  2. 实时行为(Flink介入):今晚美股开盘,英伟达暴涨。李雷在 3 分钟内,连续查看了英伟达的正股,并且点开了“英伟达看涨期权”的行情页,停留了 30 秒。
  3. 向量突变:Flink 瞬间捕捉到这个行为序列。经过序列 Pooling,李雷的 User Vector 在高维空间里发生了剧烈的“位移”,迅速向“美股”、“高风险”、“期权”的方向靠拢。
  4. 实时召回:系统拿着李雷突变后的 User Vector 去 Faiss 向量库里一查,发现它和“美股期权交易大礼包”的 Item Vector 距离极近(相似度得分 0.92)。
  5. 动作执行:召回成功!经过后续的排序层确认后,Flowable 引擎立刻下发指令,李雷的屏幕上方弹出了这个期权大礼包。

总结

这就是现代 AI 营销平台的核心魅力:
把人的“长期属性+瞬间冲动”变成一个动态游走的“空间坐标(User Vector)”,把所有的“营销产品”变成固定在空间里的“地标(Item Vector)”。
当用户的坐标游走到某个地标附近时,召回就自然而然地发生了。这比写一万行 if-else 规则要强大、精准得多。

posted @ 2026-03-16 23:03  向着朝阳  阅读(1)  评论(0)    收藏  举报