核心要点

  • 用户塔、物品塔各自把特征编码成同一空间的向量

  • 用内积/cosine 衡量用户-物品相似度,作为召回打分

  • 物品向量离线批量计算入库,在线只算用户向量 + ANN(如 HNSW)检索 Top-K

  • 核心局限:两塔在最后才交互,无法做用户-物品特征交叉

标准回答

结构:双塔分为用户塔和物品塔,各自接收自己侧的特征(用户塔:画像、历史行为;物品塔:ID、类目、内容特征),分别经过 DNN 编码成同一维度、同一语义空间的向量。两塔不共享底层网络,只在顶层用内积或 cosine 计算相似度。

训练:用点击/转化作为正样本,配合负采样(曝光未点 + 全局随机负样本)做对比学习,常用 in-batch softmax 或 sampled softmax,让正样本对向量更近。

在线服务:物品向量可离线批量计算并存入向量索引(FAISS/HNSW);线上只需实时算用户向量,再用 ANN 近似最近邻检索 Top-K 物品。这使得从亿级物品中毫秒级召回成为可能,是双塔做召回的核心优势。

局限:用户和物品特征只在最后一层通过内积交互,塔内部无法做用户侧与物品侧特征的交叉,表达能力弱于精排的交叉模型。因此双塔主要用于召回,精排再用交叉模型补足。

常见误区

⚠️ 常见踩坑

双塔不能在塔内引入「用户-物品交叉特征」,否则物品向量会依赖用户、无法离线预存,丧失 ANN 召回能力。这类交叉应留给精排阶段。

追问

追问 1双塔召回为什么不直接拼接做交叉?

一旦把用户特征拼进物品侧做交叉,物品向量就随用户变化,无法离线建库,必须对每个候选实时前向,无法支撑亿级物品的毫秒召回。交叉留给候选量小的精排阶段。

追问 2双塔训练的负采样为什么重要?

召回面对的是全库,正负样本极不平衡。负采样质量直接决定向量空间的判别力:只用曝光未点会导致样本选择偏差,通常混合全局随机负样本,并对 in-batch 负样本做流行度纠偏(logQ 校正)。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。