当前位置: 首页
科技数码
怎样用Spanner、BigQuery与向量嵌入构建实时推荐系统

怎样用Spanner、BigQuery与向量嵌入构建实时推荐系统

热心网友 时间:2025-12-15
转载

本文将介绍一套基于用户及产品向量嵌入的实时推荐系统,由BigQuery(Google Cloud完全托管的PB级数据仓库)及Spanner(Coogle Cloud完全托管、适合关键任务的全局规模数据库)提供支持。

译者 | 核子可乐

审校 | 重楼

作为众多行业中不可或缺的组成部分,产品推荐系统对于提供商和消费者而言至关重要,堪称消费体验与销售额提升的助推器。

企业会收集并分析大量使用情况与行为数据,借此优化购买推荐与用户满意度。而一旦推荐不准或者不及时,则可能引发销售损失并拉低消费者体验。

本文将介绍一套基于用户及产品向量嵌入的实时推荐系统,由BigQuery(Google Cloud完全托管的PB级数据仓库)及Spanner(Coogle Cloud完全托管、适合关键任务的全局规模数据库)提供支持。

向量嵌入

向量嵌入在生成推荐中扮演着关键角色,它基于用户与产品或服务间的交互来捕捉用户行为、偏好和意图,进而表示产品或服务的特征及属性。向量嵌入会将用户和产品表示为高维数值向量,并通过计算各向量间的距离以衡量产品间、用户间以及产品与用户间的相似性。

以下图为例,其中一张是棒球与球棍,另一张则是钓鱼器具。将这些图片输入Gemini,并要求大模型“为两张图片生成一个64维几量嵌入,使两个嵌入的维度保持一致”,即可为其生成JSOn数组,且维度与下图中维度标签的描述相同。

这时假定用户首先与棒球图片交互,我们可以将棒球嵌入与用户现有嵌入进行聚合以更新用户嵌入(假设用户嵌入具有相同维度)。在此示例中,我们使用简单的平均值进行聚合(大家可选择更符合自身业务需求的方式)。在与渔具图像交互后,系统会取两个嵌入向量的平均值,并将其应用于用户嵌入。更新后的向量如下所示:

使用BigQuery进行批处理

或应用上的管线数据量可能非常巨大。根据用户交互情况,大多数用户可能并不需要立即获取产品推荐。我们使用目标嵌入(如图片、横幅、按钮等 及应用元素)在BigQuery中收集并批量处理这些高容量、高速度交互数据。之后,我们使用先前计算的用户嵌入执行滚动聚合,以更新最终用户嵌入。这些用户嵌入随后会被推送至Spanner(通过反向ETL机制),以针对特定用户ID进行实时产品推荐。

批处理步骤如下:

在特定批处理时长内获取不同用户ID,这能减少后续步骤从用户表扫描的数据量。在给定批处理时长内,将事件表与目标表对接起来,以将目标嵌入映射至各用户-目标交互。将所有映射嵌入与用户表中相应的用户ID进行合并。计算各用户在每个维度上的嵌入的滚动平均值。将更新后的嵌入添加至用户表内。

----------------------------------------------------------------------------------------------- BQ Schema :----------------------------------------------------------------------------------------------- dataset.events-- user_id String,-- target_id String,-- ts Timestamp-- dataset.targets-- target_id String,-- target_emb String-- dataset.users-- user_id String,-- emb String,-- last_updated_ts Timestamp---------------------------------------------------------------------------------------------WITH -- STEP 1 dist_user_ids AS ( SELECT DISTINCT events.user_id, FROM dataset.events WHERE events.ts >= $curr_batch_ts), -- STEP 2 user_target_emb AS ( SELECT events.user_id, 1 AS target_count, targets.target_emb AS emb, FROM dataset.events events JOIN dataset.targets targets ON events.target_id = targets.target_id WHERE events.ts >= $curr_batch_ts -- STEP 3 UNION ALL SELECT usres.user_id, users.target_count, users.emb, FROM dataset.users users JOIN dist_user_ids ON users.user_id = dist_user_ids.user_id), -- STEP 4 emb_average AS ( SELECT user_target_emb.user_id, idx, SUM(user_target_emb.target_count) AS target_count, SUM(user_target_emb.target_count * emb_val)/SUM(user_target_emb.target_count) new_emb_val FROM user_target_emb, UNNEST(user_target_emb.emb) emb_val WITH OFFSET AS idx GROUP BY 1, 2), updated_user_embeddings AS ( SELECT user_id, ANY_VALUE(target_count) AS target_count, ARRAY_AGG(new_emb_val ORDER BY idx) AS new_emb FROM emb_average GROUP BY 1 ) -- STEP 5SELECT user_id, target_count, new_emb AS emb, CURRENT_TIMESTAMP() AS last_updated_tsFROM updated_user_embeddings;

用Spanner实现实时推荐

最新批次的更新用户嵌入将通过反向ETL推送至相应Spanner表内。目标嵌入的对应表也在Spanner中维护。

Spanner中仅当时间戳比BigQuery中正在处理的当前批次更晚(更新)时,才需要读取事件流数据。我们可以设置作业或分配TTL标记以定期清理此表。

除事件、用户及目标表之外,我们还须维护资产表,其中包含用于个性化推荐的预测资产。这些资产拥有自己的嵌入,且与用户及目标嵌入的维度相匹配。

当前端针对给定用户发出预测调用时:

该用户的全部最新事件将与目标表对接,以将目标嵌入映射至各用户-目标交互。将所有映射的嵌入与用户表内相应的用户ID进行合并。计算给定用户在各维度上的嵌入的最终滚动平均值。之后使用最终用户嵌入计算与资产间的距离。返回n个最接近的资产,作为个性化推测预测的内容。

--------------------------------------------------------------------------------------------- -- Spanner Schema : --------------------------------------------------------------------------------------------- -- events -- user_id String, -- target_id String, -- ts Timestamp -- targets -- target_id String, -- target_emb String -- users -- user_id String, -- emb String, -- last_updated_ts Timestamp -- assets -- asset_id String, -- asset_emb String, ---------------------------------------------------------------------------------------------WITH -- STEP 1 user_target_emb AS ( SELECT events.user_id, 1 AS target_count, targets.target_emb AS emb, FROM events JOIN targets ON events.target_id = targets.target_id WHERE events.user_id = "$user_id" -- STEP 2 UNION ALL SELECT usres.user_id, users.target_count, users.emb, FROM users WHERE users.user_id = "$user_id" ), -- STEP 3 emb_average AS ( SELECT idx, SUM(user_target_emb.target_count * emb_val)/SUM(user_target_emb.target_count) new_emb_val FROM user_target_emb, UNNEST(user_target_emb.emb) emb_val WITH OFFSET AS idx GROUP BY 1), updated_user_embeddings AS ( SELECT ARRAY_AGG(new_emb_val ORDER BY idx) AS new_emb FROM emb_average ), -- STEP 4 distances AS ( SELECT asset_id, EUCLIDEAN_DISTANCE(( SELECT new_emb FROM updated_user_embeddings), assets.asset_emb) AS distance, FROM assets) -- STEP 5SELECT asset_id, distanceFROM distancesORDER BY 2 DESCLIMIT $n

总结

根据业务需求及规则条款,前端系统将决定向用户展示哪些产品作为最终推荐。具体方式可以只考虑最短距离,也可以用更复杂的方式对预测结果进行重新排序。

综合流程图如下:

如上所示,通过实时与批处理流程相结合,即可覆盖用户的每一次交互,并根据用户当前的“空间与时间”背景推荐与其喜好相匹配的产品和服务。

更重要的是,这套架构亦具有弹性,可根据用户流量及应用需求进行灵活扩展。

原文标题:Real-Time Recommendations Powered by Spanner, BigQuery, and Vector Embeddings,作者:Yogesh Tewari

来源:https://www.51cto.com/article/823855.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
缙云黛涓无线51使用体验与功能介绍

缙云黛涓无线51使用体验与功能介绍

上世纪九十年代,寻呼机盛行,作者以“无线51”为工号成为话务员,与三位同龄女孩因相似的成长伤痛结为好友,彼此温暖。利用业余时间苦读取得大专文凭后,她转入广告公司,不久寻呼行业没落,四人各奔东西。那段交织社会现实的青春,充满艰辛与成长。

时间:2026-05-24 11:26
红米Note 17系列海外版或提前发布 新机型号已曝光

红米Note 17系列海外版或提前发布 新机型号已曝光

下一代RedmiNote17系列已现身全球移动通信系统协会数据库,包含面向全球及拉丁美洲市场的型号,预示其研发进入后期,发布可能早于传统周期。同时有消息称,小米或将从明年起统一各产品线数字代号,以简化全球用户认知并提升品牌营销协同性。最终信息有待官方确认。

时间:2026-05-24 11:26
谷歌AI搜索功能出现漏洞 无法正确处理忽略等关键词

谷歌AI搜索功能出现漏洞 无法正确处理忽略等关键词

谷歌AI搜索功能出现逻辑故障,当用户搜索“忽略”等指令性词汇时,系统会误将其当作操作指令执行,导致搜索结果页的AI概览区域显示空白,影响首屏体验。这暴露了智能交互中指令与查询边界模糊的设计挑战。

时间:2026-05-24 11:26
联想 IdeaPad Slim 5i 15IWC11 轻薄本发布 搭载酷睿7处理器32GB内存

联想 IdeaPad Slim 5i 15IWC11 轻薄本发布 搭载酷睿7处理器32GB内存

联想发布新款IdeaPadSlim5i轻薄本,搭载英特尔WildcatLake平台酷睿5或7处理器,最高可选32GB内存。配备15 3英寸120Hz高刷屏,重1 49公斤,厚度15 6毫米,提供70Wh大电池选项。接口齐全,含双USB-C且支持PD充电,扩展性强,兼顾性能与便携。

时间:2026-05-24 11:25
美国机械硬盘组件供应商遭集体诉讼 被控13年操纵价格抬高售价

美国机械硬盘组件供应商遭集体诉讼 被控13年操纵价格抬高售价

美国加州法院受理一起长达十三年的硬盘行业反垄断集体诉讼,指控TDK与NHK等核心供应商在2003年至2016年间合谋操纵硬盘悬架组件价格。该部件占全球机械硬盘市场超97%,涨价压力最终传导至消费者。诉讼将原告分为转售商和终端用户,目前案件已受理但尚未判决,符合条件的用户可自动纳入集体诉。

时间:2026-05-24 11:25
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程