M7-008M7: Retrieval, Ranking & RecSysDense Retrieval & Dual-EncodersEasy
Mastery:
Dense Retrieval & Dual-Encoders: 解释双塔(dual encoder)检索的架构与训练。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 查询与文档各用一个编码器映射到同一向量空间,用内积/余弦算相似度;文档向量可离线预计算。
📌 Key Takeaways
- •双塔:查询塔 + 文档塔(可共享或不共享)
- •相似度 = 内积/余弦(无交叉交互)
- •文档向量离线预计算 → 在线只编码查询 → 可用 ANN 索引
📐 Mathematical Derivations
数学机理:<strong>双塔(dual encoder / bi-encoder)</strong> 的架构——(1) <strong>两个编码器</strong>——查询塔 E_q 与文档塔 E_d(可以是同一模型共享参数,也可以是两个独立模型;DPR 用独立模型);各自把输入编码为 d 维向量。(2) <strong>相似度</strong>——用<strong>内积</strong>(或余弦)计算:s(q,d)=⟨E_q(q), E_d(d)⟩;<strong>关键</strong>——查询与文档<strong>在编码阶段无交互</strong>(各自独立编码),只在最后用内积比较。(3) <strong>训练</strong>——用<strong>对比学习</strong>:正样本对(查询,相关文档)的相似度应高于负样本;损失为 InfoNCE(见 M4 的对比学习题):L=−log[e^{s(q,d⁺)/τ}/(e^{s(q,d⁺)/τ}+Σ_j e^{s(q,d_j⁻)/τ})];负样本常来自 <strong>in-batch negatives</strong>(同一 batch 内的其他文档)。(4) <strong>检索流程</strong>——(a) <strong>离线</strong>——用文档塔编码<strong>所有文档</strong>,建立向量索引(ANN);(b) <strong>在线</strong>——只编码<strong>查询</strong>(一次前向),做 ANN 检索。<strong>为什么能离线预计算</strong>——因为<strong>文档向量与查询无关</strong>(双塔无交叉交互);故文档只需编码一次(离线),在线只编码查询(快)。<strong>这是双塔的核心工程优势</strong>——它使'百万/十亿级文档'的检索可行。<strong>表达力限制</strong>——因为查询与文档<strong>无交互</strong>,双塔<strong>无法建模'词级匹配'</strong>(如'查询中的词是否在文档的特定语境中出现');这使它的<strong>精度低于 cross-encoder</strong>(见重排题)。<strong>改进方向</strong>——(a) <strong>更强的编码器</strong>(BERT/RoBERTa/E5/BGE);(b) <strong>难负样本挖掘</strong>(提升区分度);(c) <strong>指令式嵌入</strong>(加 query/passage 前缀);(d) <strong>多向量/晚交互</strong>(ColBERT,兼顾效率与精度);(e) <strong>蒸馏</strong>(用 cross-encoder 蒸馏双塔)。<strong>与稀疏检索的对比</strong>——(a) <strong>表示</strong>——稠密(d 维、全非零)vs 稀疏(V 维、大部分 0);(b) <strong>语义泛化</strong>——稠密强 vs 稀疏弱;(c) <strong>精确匹配</strong>——稠密弱 vs 稀疏强;(d) <strong>可解释</strong>——稠密弱 vs 稀疏强;(e) <strong>存储</strong>——稠密需 d×4 字节/文档(如 768×4=3KB)vs 稀疏用倒排(更省);(f) <strong>索引</strong>——稠密需 ANN vs 稀疏用倒排。<strong>实践</strong>——(a) <strong>召回</strong>用双塔(快、可扩展);(b) <strong>精排</strong>用 cross-encoder/LLM;(c) <strong>混合</strong>用稀疏 + 稠密。<strong>度量</strong>——(a) Recall@k(召回);(b) MRR/NDCG(排序);(c) 延迟与索引大小。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'无交叉交互 → 可离线预计算'是双塔的核心权衡</strong>——它换来了'可扩展性',代价是'精度';面试中能指出这一权衡是深度理解的标志。② <strong>'in-batch negatives'的规模效应</strong>——batch 越大负样本越多(见稠密检索的假负样本题);这是训练的关键。③ <strong>'指令式嵌入(前缀)'不可漏</strong>——E5/BGE 等需加 'query:'/'passage:' 前缀;漏加会显著降低效果(常见部署错误)。④ <strong>'与稀疏的互补'</strong>——稠密强语义、稀疏强精确;故混合检索是主流(见混合检索题)。⑤ <strong>'蒸馏提升双塔'</strong>——用 cross-encoder 的输出蒸馏双塔,可缩小'双塔 vs 交叉编码器'的精度差距。⑥ <strong>面试要点</strong>——被问'双塔检索怎么做',应给出'<strong>两塔独立编码 + 内积相似度 + 对比学习训练 + 文档离线预计算</strong>'与'<strong>无交互 → 可扩展但精度低于 cross-encoder</strong>';能指出'指令式嵌入的前缀不可漏'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕以为双塔能建模词级交互(无交叉交互)
- ✕漏加指令式嵌入的前缀(显著掉点)
🎯 Interviewer Follow-ups
- ?为什么双塔能离线预计算?
- ?双塔的表达力限制是什么?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.