01
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 索引、在线检索、冷启动价值、过滤融合和评估闭环都能落到工程实现。
02
深入解析
01 属性体系
第一步不是训练向量,而是定义可用属性。商品属性通常分为结构化属性、文本属性、视觉属性和业务属性:类目、品牌、价格带、规格、标签、标题、描述、图片、商家、地域、库存、质量分等。属性要有稳定 schema、标准化口径和缺失处理,否则 embedding 学到的是脏数据和运营噪声。
02 向量构建
属性向量可以由多种来源融合。离散属性可通过 embedding table 编码后池化,文本可以用文本编码器提取语义,图片可以用视觉模型抽取表示,行为数据可通过 item2vec 或双塔训练把“被同类用户喜欢”的信号融入向量。实际项目里常用内容属性打底,再用交互目标微调,使向量既表达商品相似,也贴近点击或购买目标。
03 召回索引
物品向量规模较大时,需要构建近似最近邻索引。索引里不仅存向量,也要存元数据,便于在线过滤不可售、库存不足、地域不匹配、类目禁投或低质量商品。索引要支持批量重建和增量更新,新商品属性变化、价格变化、库存状态变化都可能影响召回结果。向量版本和索引版本要可追踪,便于回滚和实验对比。
04 在线召回
在线侧要构造检索向量。推荐场景可以把用户最近点击、收藏、购买、加购的物品向量按时间和行为强度加权,形成短期兴趣;也可以结合长期画像和搜索词形成混合 query vector。召回 topK 后要做去重、已购过滤、曝光过滤、类目约束、价格带约束和多样性控制,再与协同过滤、热门、规则、搜索等其他召回路融合。
05 冷启动价值
属性 Embedding 的优势是对行为稀疏的商品更友好。新商品还没有点击购买历史,但只要属性完整,就可以被召回到相似用户或相似场景中。它也能改善长尾覆盖,避免召回完全被历史热门物品支配。限制是属性相似未必代表转化相似,例如同类目、同价格的商品可能质量、品牌信任或履约体验差异很大,所以排序阶段仍要融合质量和转化特征。
06 评估迭代
离线可以用用户后续点击、加购、购买作为标签评估 Recall@K、HitRate、NDCG、覆盖率、长尾占比和冷启动商品命中。还要看向量邻居是否语义合理,做类目、价格、品牌和质量分的分层分析。线上 A/B 要看 CTR、CVR、GMV、停留、复购、负反馈、召回耗时和索引成本,防止只提升曝光覆盖但转化质量下降。
03
易错点
- 只说把商品属性转成向量,没有说明属性清洗、编码、训练目标和索引检索链路。
- 把属性相似直接等同于推荐效果好,忽略点击、购买、质量和履约差异。
- 索引只存向量不存元数据,导致在线无法过滤库存、地域、类目和不可售商品。
- 没有冷启动和长尾分析,回答只停留在常规向量召回。
- 忽略向量和索引更新延迟,新商品或属性变化无法及时生效。
- 只看离线邻居相似度,不看 Recall@K、NDCG、线上 CTR/CVR 和负反馈。
04
面试官追问
属性向量和 item2vec 向量有什么区别?
属性向量主要来自商品内容和属性,即使没有行为也能生成;item2vec 更依赖用户行为序列,能捕捉协同偏好但对新商品不友好。实际可以融合二者:属性向量解决冷启动和语义相似,行为向量增强真实用户偏好。
多值属性怎么处理?
多值属性可以先对每个属性值查 embedding,再做平均、加权池化、attention 或按属性域分组聚合。关键是保留属性域语义,例如品牌、类目、颜色、场景标签不能完全无区别相加;高置信属性和低噪声属性可以给更高权重。
新商品向量更新慢会有什么问题?
新商品无法及时进入召回池,冷启动价值会下降;属性变更后旧向量仍被检索,也会带来不相关候选。需要设计增量向量生成和索引更新链路,至少对新上架、库存状态、类目和价格等关键变化做准实时同步。
如何避免属性召回结果过于同质化?
可以在召回后做类目、品牌、价格带和商家的多样性约束,也可以在多路召回融合时给协同过滤、探索、热门和长尾召回保留配额。向量近邻天然偏相似,如果不控制多样性,用户容易看到一排高度重复商品。