稀疏向量 vs 稠密向量:到底有什么区别?
稀疏向量 vs 稠密向量:到底有什么区别?
我们常听到“稀疏向量”和“稠密向量”这两个词,它们到底差在哪?一句话概括:
稀疏 vs 稠密,说白了就是信息在向量中的分布方式不同。
一、最直观的区别
稀疏向量(Sparse Vector):大多数维度都是 0,只有少量非零元素。
稠密向量(Dense Vector):几乎 每一维都有值,没有“空位”。
所以,本质上这讲的是:向量的“信息密度”。
二、举个例子理解
比如我们要表示“apple”这个词:
如果用稀疏向量,可能是这样:
[0, 0, 0, 1, 0, 0, ..., 0](假设维度是10,000)
这就是最简单的 One-hot 编码,只有一个地方是1,其他都是0。
如果用稠密向量,可能是这样:
[0.23, -0.41, 0.06, 0.87, ..., 0.04](通常是300~768维)
每一维都是有意义的数字,正的负的都有,这些数值来源于神经网络训练。
三、稀疏向量的由来与优势
稀疏向量主要应用在早期的信息检索系统中,比如搜索引擎。
最常见的方法就是 TF-IDF 或 BM25:
TF(词频):某词在文档中出现了多少次。
IDF(逆文档频率):某词在所有文档中越少见,它的权重越高。
这类方法有几个优点:
可解释性强:你能看出来哪些词影响了相关度。
速度快:支持倒排索引,几毫秒内就能返回相关文档。
资源开销低:虽然是高维向量,但只有少量非零元素,易于压缩处理。
四、稠密向量的崛起与能力
稠密向量的走红始于 Word2Vec,再到 GloVe,再到 BERT。
这些向量的一个共同目标是:把语义相近的词放在向量空间中靠得更近。
训练方式很“聪明”:
Word2Vec:让“apple”去预测上下文,或者由上下文预测“apple”。
BERT:让模型学会理解整个句子甚至前后文的逻辑关系。
所以稠密向量能捕捉的,不仅是词义,还有上下文、语气、语法、语境下的含义。
五、本质区别是什么?
特性 | 稀疏向量 | 稠密向量 |
---|---|---|
表达方式 | 词面 | 语义 |
信息密度 | 低(大多为0) | 高(几乎都非0) |
可解释性 | 强 | 弱(黑盒) |
检索能力 | 精确关键词匹配 | 模糊语义理解 |
应用场景 | 检索系统、粗排 | 语义匹配、精排 |
向量维度 | 高(10K 级) | 低(100~1000) |
再打个比喻:
稀疏向量就像查字典 —— 你输个词,它告诉你有没有这个词、出现在哪。
稠密向量像是老编辑 —— 你讲一段话,它理解你想找什么,然后给出“相似但不完全一样”的好建议。
六、两者的结合:混合搜索是主流
在真实的应用中,往往不是“用谁不用谁”,而是“两手都要抓”。
为什么要混合?
稀疏向量(比如BM25):速度快、匹配准、可解释。
稠密向量(比如BERT Embedding):语义强、泛化好、容错性高。
怎么混合?
常见方式有两种:
双路召回:一边用BM25拉粗候选,一边用向量搜索补充语义相关的内容。
稀疏+稠密融合模型:比如 SPLADE 或 HyDE,将关键词权重和语义信息同时编码为一个搜索向量。
七、最后总结一句话:
稀疏向量重“匹配”,稠密向量重“理解”;一个快一个准,组合在一起才最强。
未来的智能问答系统、搜索系统、推荐系统,几乎都会走向 “稀疏+稠密混合架构”。