真实面经题目 · 原创解析

基于商品属性 Embedding 的推荐召回如何设计,如何处理属性特征、向量索引和冷启动?

这道题考察的是候选人能否把“商品属性 Embedding”从一个模糊向量概念,拆成一条完整召回链路。商品属性包括类目、品牌、价格带、标签、文本描述、图片特征、商家、地域、质量分等结构化和非结构化信息。设计时要先定义属性 schema 和清洗规则,再把稀疏属性编码成 item embedding,构建 ANN 向量索引,在线用用户画像、最近行为或 query embedding 召回相似商品,并处理过滤、去重、冷启动、实时更新和效果评估。好的回答要强调它适合新商品、长尾商品和行为稀疏场景,但不能完全替代协同过滤;属性相似不等于用户会转化,仍需要后续排序和实验验证。

出现于:腾讯 · 算法

60 秒回答模板

我会把基于商品属性 Embedding 的召回拆成离线建模和在线检索两部分。离线先定义商品属性 schema,包括类目、品牌、价格带、规格、关键词、文本描述、图片向量、商家、地域、质量分、库存和时效等,再做清洗、标准化、缺失填充、低频合并和多值属性处理。Embedding 可以有几种做法:一是把离散属性用 embedding table 表示后聚合成 item vector;二是用商品文本、标题、图片等内容模型提取向量;三是结合用户行为做 item2vec 或双塔训练,让属性向量更贴近点击、购买等目标。建好 item embedding 后,把向量写入 ANN 索引,例如 HNSW、IVF 或其他向量检索结构,同时保留类目、价格、库存、地域等元数据用于过滤。在线召回时,可以用用户近期点击/购买物品向量加权平均成 user intent vector,也可以用搜索词或用户画像生成 query vector,然后从索引取 topK,再做业务过滤、去重、多样性控制和多路召回融合。冷启动商品因为没有行为,也能靠属性向量进入候选池;但要注意属性质量、向量更新延迟、热门偏置和相似但不可替代的问题。评估上离线看 Recall@K、NDCG、覆盖率、冷启动曝光和长尾命中,线上看 CTR、CVR、GMV、留存、负反馈和延迟。

考点 recommender-system
难度 真实面经题
回答目标 让候选人能完整说明商品属性 Embedding 召回的设计:属性体系、向量训练、ANN 索引、在线检索、冷启动价值、过滤融合和评估闭环都能落到工程实现。

深入解析

01

属性体系

第一步不是训练向量,而是定义可用属性。商品属性通常分为结构化属性、文本属性、视觉属性和业务属性:类目、品牌、价格带、规格、标签、标题、描述、图片、商家、地域、库存、质量分等。属性要有稳定 schema、标准化口径和缺失处理,否则 embedding 学到的是脏数据和运营噪声。

02

向量构建

属性向量可以由多种来源融合。离散属性可通过 embedding table 编码后池化,文本可以用文本编码器提取语义,图片可以用视觉模型抽取表示,行为数据可通过 item2vec 或双塔训练把“被同类用户喜欢”的信号融入向量。实际项目里常用内容属性打底,再用交互目标微调,使向量既表达商品相似,也贴近点击或购买目标。

03

召回索引

物品向量规模较大时,需要构建近似最近邻索引。索引里不仅存向量,也要存元数据,便于在线过滤不可售、库存不足、地域不匹配、类目禁投或低质量商品。索引要支持批量重建和增量更新,新商品属性变化、价格变化、库存状态变化都可能影响召回结果。向量版本和索引版本要可追踪,便于回滚和实验对比。

04

在线召回

在线侧要构造检索向量。推荐场景可以把用户最近点击、收藏、购买、加购的物品向量按时间和行为强度加权,形成短期兴趣;也可以结合长期画像和搜索词形成混合 query vector。召回 topK 后要做去重、已购过滤、曝光过滤、类目约束、价格带约束和多样性控制,再与协同过滤、热门、规则、搜索等其他召回路融合。

05

冷启动价值

属性 Embedding 的优势是对行为稀疏的商品更友好。新商品还没有点击购买历史,但只要属性完整,就可以被召回到相似用户或相似场景中。它也能改善长尾覆盖,避免召回完全被历史热门物品支配。限制是属性相似未必代表转化相似,例如同类目、同价格的商品可能质量、品牌信任或履约体验差异很大,所以排序阶段仍要融合质量和转化特征。

06

评估迭代

离线可以用用户后续点击、加购、购买作为标签评估 Recall@K、HitRate、NDCG、覆盖率、长尾占比和冷启动商品命中。还要看向量邻居是否语义合理,做类目、价格、品牌和质量分的分层分析。线上 A/B 要看 CTR、CVR、GMV、停留、复购、负反馈、召回耗时和索引成本,防止只提升曝光覆盖但转化质量下降。

易错点

  • 只说把商品属性转成向量,没有说明属性清洗、编码、训练目标和索引检索链路。
  • 把属性相似直接等同于推荐效果好,忽略点击、购买、质量和履约差异。
  • 索引只存向量不存元数据,导致在线无法过滤库存、地域、类目和不可售商品。
  • 没有冷启动和长尾分析,回答只停留在常规向量召回。
  • 忽略向量和索引更新延迟,新商品或属性变化无法及时生效。
  • 只看离线邻居相似度,不看 Recall@K、NDCG、线上 CTR/CVR 和负反馈。

面试官追问

属性向量和 item2vec 向量有什么区别?

属性向量主要来自商品内容和属性,即使没有行为也能生成;item2vec 更依赖用户行为序列,能捕捉协同偏好但对新商品不友好。实际可以融合二者:属性向量解决冷启动和语义相似,行为向量增强真实用户偏好。

多值属性怎么处理?

多值属性可以先对每个属性值查 embedding,再做平均、加权池化、attention 或按属性域分组聚合。关键是保留属性域语义,例如品牌、类目、颜色、场景标签不能完全无区别相加;高置信属性和低噪声属性可以给更高权重。

新商品向量更新慢会有什么问题?

新商品无法及时进入召回池,冷启动价值会下降;属性变更后旧向量仍被检索,也会带来不相关候选。需要设计增量向量生成和索引更新链路,至少对新上架、库存状态、类目和价格等关键变化做准实时同步。

如何避免属性召回结果过于同质化?

可以在召回后做类目、品牌、价格带和商家的多样性约束,也可以在多路召回融合时给协同过滤、探索、热门和长尾召回保留配额。向量近邻天然偏相似,如果不控制多样性,用户容易看到一排高度重复商品。