字节笔记本
2026年4月18日
详解 BGE-M3 与 SPLADE:两种学习型稀疏向量模型的工作原理
在信息检索领域,Embedding 向量经历了从传统稀疏向量到稠密向量,再到"学习到的稀疏向量"的演进。学习型稀疏向量结合了传统稀疏向量的精确匹配能力和稠密向量的丰富语义理解,是目前 RAG 系统中检索环节的重要技术方向。
这篇文章详解两个能生成这类向量的模型:BGE-M3 和 SPLADE。
三种 Embedding 向量类型
先快速回顾一下基础概念。
传统稀疏向量:高维且多数维度值为零,维度通常代表不同词汇标记,非零值反映该标记在文档中的重要性。BM25 就是典型的传统稀疏向量方法,擅长关键词匹配。
稠密向量:维度较低但信息密度高,所有维度均为非零值。由 BERT 等模型生成,擅长基于语义相似性而非关键词匹配来排序结果。
学习型稀疏向量:融合了前两者的优点。通过融入上下文信息来增强稀疏向量检索,能学习到可能出现但并未直接出现在文本中的相关标记。SPLADE 和 BGE-M3 就是生成这类向量的模型。
BERT:两个模型的共同基石
BGE-M3 和 SPLADE 都基于 BERT 架构。BERT 的核心是双向自注意力机制——同时考察整个词序列来捕捉词汇的上下文,而不是单向处理文本。它通过两种预训练策略建立语言理解能力:Masked Language Modeling(随机隐藏部分词汇,训练模型预测)和 Next Sentence Prediction(学习判断句子间的逻辑连贯性)。
BERT 生成稠密向量的过程:文本先经过分词,加入 [CLS] 和 [SEP] 标记,通过 Embedding Matrix 转化为向量并加入位置编码,再经过多层 Encoder(每层含 Self-attention 和前馈网络),最终输出每个 Token 的上下文化 Embedding。[CLS] Token 的输出通常代表整个句子的向量表示。
BGE-M3:多功能多语言多粒度
BGE-M3 在 BERT 基础上扩展了能力,强调三个"Multi":
- Multi-Functionality:不只生成稠密向量,还能生成学习型稀疏向量
- Multi-Linguistic:支持多语言
- Multi-Granularity:支持不同粒度的文本表示
BGE-M3 生成学习型稀疏向量的过程比标准 BERT 多了几个步骤。输入文本经分词和编码后,它不只依赖 [CLS] token 的表征,还评估序列中每个 Token 的情境化嵌入。然后通过一个额外的线性层计算每个 Token 的重要性权重,再应用 ReLU 激活函数确保权重非负,最终输出的稀疏 Embedding 中每个 Token 都关联一个表示其在整个文本中重要性的权重值。
这种表达方式对需要同时关注语义和词汇要素的任务(如大规模数据库中的搜索和检索)特别有用。
SPLADE:基于 MLM 的稀疏检索
SPLADE 的思路更巧妙——它直接利用 BERT 预训练中的 MLM 机制。
在 MLM 中,模型需要根据上下文预测被掩盖的词汇。对于每个掩码位,模型生成一个概率分布,表示 BERT 词表中每个 Token 出现在该位置的可能性。
SPLADE 在编码阶段对所有标记位置应用 MLM,计算每个 Token 与 BERT 词汇表中每个单词的对应概率,再对每个词汇的概率进行聚合,通过带对数饱和效应的规范化方法促进稀疏性。最终得到的权重反映每个词汇与输入文本的关联性。
SPLADE 的一个显著优势是术语扩展能力。它能识别并包含原始文本中未出现的相关术语。比如输入中虽然没有"探索"和"创建"这两个词,但它们仍然会出现在生成的稀疏向量中。对于短查询来说,这种扩展能力可以显著提高检索精度。
对比与选择
两个模型各有侧重:
- BGE-M3 更适合需要多功能、多语言支持的场景,一个模型同时输出稠密向量和稀疏向量
- SPLADE 在术语扩展方面更强,对短查询的检索精度提升更明显,特别适合追求术语广泛度和精细度的搜索场景
在实际的 RAG 系统中,两者都可以作为检索层的 Embedding 模型,配合向量数据库(如 Milvus)进行混合搜索,兼顾语义匹配和关键词匹配的优势。