M7-004M7: Retrieval, Ranking & RecSysSparse Retrieval (BM25 / TF-IDF)Medium
Mastery:
Sparse Retrieval (BM25 / TF-IDF): 解释 SPLADE 等学习式稀疏检索的思路。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 用 BERT + MLM 头 + ReLU + 稀疏正则,让每个词扩展为'词表上的稀疏权重',兼具语义泛化与倒排索引效率。
📌 Key Takeaways
- •用 BERT 的 MLM 头把每个词映射为'词表上的权重向量'
- •ReLU + max 池化 → 稀疏(只有少数词非零)
- •用 ℓ1 正则鼓励稀疏;最终用倒排索引存储(保持效率)
📐 Mathematical Derivations
数学机理:<strong>学习式稀疏检索(learned sparse retrieval)</strong> 的思路——把'查询/文档'表示为<strong>词表上的稀疏权重向量</strong>(维度 = 词表大小 V,大部分为 0),但权重由<strong>模型学习</strong>(而非 TF-IDF 的统计量)。<strong>SPLADE(Formal 等 2021)</strong> 的做法——(1) <strong>MLM 头</strong>——用 BERT(或类似)的 <strong>MLM(掩码语言模型)头</strong>把每个输入 token 映射为<strong>词表上的 logits</strong>(V 维);(2) <strong>ReLU + log(1+·)</strong>——把 logits 通过 ReLU(保证非负)与 log(1+x)(压缩大值);(3) <strong>max 池化</strong>——对同一词表项在多个输入位置取 <strong>max</strong>(因为不同位置可能'激活'同一个词表项):w_t=max_{i∈input} log(1+ReLU(w_it));(4) <strong>稀疏正则</strong>——在训练时加 <strong>ℓ1 正则</strong>(或 FLOPS 正则)鼓励稀疏(使大部分词表项为 0);(5) <strong>倒排索引</strong>——因为最终是稀疏向量,故可用<strong>倒排索引</strong>存储与检索(保持效率)。<strong>为什么能'扩展'词</strong>——因为 MLM 头会让'相关词'也被激活(如输入'汽车'时,'轿车'、'车辆'的词表项也可能获得非零权重);<strong>这就是'语义扩展'</strong>(类似手工的同义词扩展,但由模型学习)。<strong>与稠密检索的对比</strong>——(a) <strong>表示</strong>——稀疏(V 维,大部分 0)vs 稠密(d 维,全非零,如 768);(b) <strong>存储</strong>——稀疏可用倒排索引(省空间、可精确匹配)vs 稠密需向量索引(HNSW/IVF);(c) <strong>检索</strong>——稀疏用倒排(快、可解释:能看出'匹配了哪些词')vs 稠密用 ANN;(d) <strong>语义泛化</strong>——稀疏的'扩展'有限(只在词表内)vs 稠密可'任意语义';(e) <strong>可解释性</strong>——稀疏高(能看到激活的词)vs 稠密低。<strong>优势</strong>——(a) <strong>兼具语义与效率</strong>(有扩展 + 倒排索引);(b) <strong>可解释</strong>(能看出'为什么匹配');(c) <strong>与 BM25 互补</strong>(可混合)。<strong>局限</strong>——(a) <strong>扩展受词表限制</strong>(无法表达'词表外的语义');(b) <strong>索引膨胀</strong>(每个文档的非零项比 BM25 多,索引更大);(c) <strong>训练成本</strong>(需大规模训练)。<strong>其他方法</strong>——(a) <strong>uniCOIL / DeepImpact</strong>(更简单的学习式稀疏:只用 IDF 式权重 + 学习式扩展);(b) <strong>SPLADE-v2/v3</strong>(改进的稀疏与效率);(c) <strong>稀疏 + 稠密的混合</strong>(两路召回融合)。<strong>实证</strong>——(a) SPLADE 在 MS MARCO 等基准上显著优于 BM25(且接近稠密检索);(b) 在'零样本/领域外'上常优于稠密检索(因为它保留了'精确匹配'的能力)。<strong>实践</strong>——(a) <strong>需要可解释/精确匹配</strong> → SPLADE 系;(b) <strong>纯语义</strong> → 稠密;(c) <strong>混合</strong> → 两者融合(见混合检索题)。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'用 MLM 头做稀疏扩展'是 SPLADE 的核心创新</strong>——它把'语义扩展'引入稀疏检索;面试中能解释'为什么能扩展'是深度理解的标志。② <strong>'保持倒排索引'是它的工程价值</strong>——稀疏表示可用成熟的倒排索引(无需新的向量索引基础设施);这降低了落地成本。③ <strong>'可解释性'是稀疏的独特优势</strong>——能看到'哪些词被激活'(包括扩展词);这对调试与合规很重要。④ <strong>'索引膨胀'是代价</strong>——SPLADE 的每文档非零项远多于 BM25(可能 100+),故索引更大、检索更慢。⑤ <strong>'零样本上的优势'</strong>——SPLADE 保留了精确匹配能力,故在'领域外/长尾查询'上常优于稠密检索。⑥ <strong>面试要点</strong>——被问'学习式稀疏检索',应给出'<strong>MLM 头 → 词表权重 → ReLU+max 池化 → ℓ1 稀疏 → 倒排索引</strong>'与'<strong>兼具语义扩展与倒排效率、可解释</strong>';能指出'零样本上常优于稠密'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕以为学习式稀疏无法做语义扩展(MLM 头会激活相关词)
- ✕忽略索引膨胀的代价
🎯 Interviewer Follow-ups
- ?SPLADE 为什么能'扩展'词?
- ?学习式稀疏与稠密检索的差异?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.