稀疏向量 vs 稠密向量:到底有什么区别?

8
0
0
2025-07-02

稀疏向量 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):语义强、泛化好、容错性高

怎么混合?

常见方式有两种:

  1. 双路召回:一边用BM25拉粗候选,一边用向量搜索补充语义相关的内容。

  2. 稀疏+稠密融合模型:比如 SPLADE 或 HyDE,将关键词权重和语义信息同时编码为一个搜索向量。


七、最后总结一句话:

稀疏向量重“匹配”,稠密向量重“理解”;一个快一个准,组合在一起才最强。

未来的智能问答系统、搜索系统、推荐系统,几乎都会走向 “稀疏+稠密混合架构”