稠密向量(Dense Vector)与稀疏向量(Sparse Vector)是向量表示的两种基本形式,核心区别在于信息密度和适用场景的不同。稠密向量侧重于语义泛化,稀疏向量侧重于字面精确匹配。
一、 稠密向量(Dense Vector)
1. 定义与特征
- 定义:低维向量(通常几十到几千维),绝大部分元素为非零的连续实数(如 [0.12, -0.45, 0.78, …])。
- 特征:信息紧凑,每一维代表抽象的语义特征,维度之间高度关联;计算效率高(适合GPU并行计算),但单条向量占用内存相对较大。
2. 生成方式
- 主要通过深度学习模型(如 BERT、Word2Vec、ResNet 等)生成,通过上下文学习得到,能够捕捉数据的语义和上下文关系。
3. 适用场景
- 语义搜索与跨模态检索:适合长文本理解、语义相似度计算(如通过余弦相似度计算向量距离),适用于对语义理解要求高的场景(如法律文档检索、智能客服、推荐系统)。
二、 稀疏向量(Sparse Vector)
1. 定义与特征
- 定义:高维向量(通常数万到百万维),绝大部分元素为0,仅少数维度为非零值(如 [0, 0, 3.5, 0, 0, -1.2, 0, 0] 或 {2: 0.2, 9997: 0.5})。
- 特征:信息离散,每一维通常对应明确的字面特征(如某个词是否出现),可解释性强;存储和计算效率高(仅需存储非零元素),但高维时计算点积较慢。
2. 生成方式
- 主要通过传统统计方法生成,如词袋模型(Bag-of-Words)、TF-IDF、BM25 等,基于词频或字面匹配生成。
3. 适用场景
- 精确关键词匹配:适合短文本搜索、精确术语匹配、日志分析,适用于对字面精确度要求高、对语义泛化要求不高的场景(如商品型号搜索、代码/API参数检索)。
三、 核心对比总结
| 对比维度 | 稠密向量 | 稀疏向量 |
|---|---|---|
| 维度 | 低维(如 768、1024 维) | 高维(如 10万+ 维) |
| 元素特征 | 绝大部分非零,连续实数 | 绝大部分为0,少数非零 |
| 语义能力 | 强(捕捉语义、上下文,同义词关联) | 弱(仅关键词匹配,无法识别同义词) |
| 计算效率 | 高(适合矩阵运算,GPU优化) | 中等(需稀疏矩阵运算,计算点积较慢) |
| 存储效率 | 中等(需存储所有维度) | 高(仅存储非零元素,节省空间) |
| 可解释性 | 弱(维度无明确字面意义) | 强(维度对应明确的字面特征) |
| 典型应用 | 语义搜索、推荐系统、大模型嵌入 | 传统信息检索、精确关键词检索、推荐系统(评分矩阵) |
四、 实际应用建议
- 单路检索:长文本、语义理解需求高时用稠密向量;短文本、精确关键词匹配需求高时用稀疏向量。
- 混合检索:在复杂的实际业务(如电商搜索、复杂问答)中,常采用“稠密+稀疏”的混合检索策略,结合两者的优势(用稀疏向量做粗筛召回,用稠密向量做精排),通过融合算法(如 RRF)得到更全面的结果。