核心要点
用户塔、物品塔各自把特征编码成同一空间的向量
用内积/cosine 衡量用户-物品相似度,作为召回打分
物品向量离线批量计算入库,在线只算用户向量 + ANN(如 HNSW)检索 Top-K
核心局限:两塔在最后才交互,无法做用户-物品特征交叉
标准回答
一、结构
双塔分为用户塔和物品塔,各自接收自己侧的特征(用户塔:画像、历史行为;物品塔:ID、类目、内容特征),分别经过 DNN 编码成同一维度、同一语义空间的向量。两塔不共享底层网络,只在顶层用内积或 cosine 计算相似度。
二、训练
用点击/转化作为正样本,配合负采样(曝光未点 + 全局随机负样本)做对比学习,常用 in-batch softmax 或 sampled softmax,让正样本对向量更近。
三、在线服务
物品向量可离线批量计算并存入向量索引(FAISS/HNSW);线上只需实时算用户向量,再用 ANN 近似最近邻检索 Top-K 物品。这使得从亿级物品中毫秒级召回成为可能,是双塔做召回的核心优势。
四、局限
用户和物品特征只在最后一层通过内积交互,塔内部无法做用户侧与物品侧特征的交叉,表达能力弱于精排的交叉模型。因此双塔主要用于召回,精排再用交叉模型补足。
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:双塔不能在塔内引入「用户-物品交叉特征」,否则物品向量会依赖用户、无法离线预存,丧失 ANN 召回能力。这类交叉应留给精排阶段。
追问
追问 1:双塔召回为什么不直接拼接做交叉?
一旦把用户特征拼进物品侧做交叉,物品向量就随用户变化,无法离线建库,必须对每个候选实时前向,无法支撑亿级物品的毫秒召回。交叉留给候选量小的精排阶段。
追问 2:双塔训练的负采样为什么重要?
召回面对的是全库,正负样本极不平衡。负采样质量直接决定向量空间的判别力:只用曝光未点会导致样本选择偏差,通常混合全局随机负样本,并对 in-batch 负样本做流行度纠偏(logQ 校正)。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
