稀疏向量 vs 稠密向量
·
稀疏向量 vs 稠密向量
在向量检索、NLP 和 AI 应用中,稀疏向量和稠密向量是两类最核心的向量表示方式,二者在生成逻辑、存储计算、语义表达、适用场景上有本质区别,也是理解混合检索(Hybrid Search)的基础。
一、基础定义与直观理解
1. 什么是向量?
向量是对数据(文本、图像、音频)的数学化表示,本质是一组有序的浮点数 / 整数数组,用来量化数据的特征。
- 维度:向量中元素的个数(如 768 维、1024 维)
- 相似度:通过向量间的距离(欧氏距离、余弦相似度)衡量数据的相似程度
2. 稀疏向量(Sparse Vector)
核心特征:绝大多数元素为 0,非零元素占比 < 1%,非零位置代表特征存在
直观理解:像一个「稀疏的表格」,大部分位置是空的,只有少数位置有值,值代表这个特征的权重。
- 举个例子:10000 维的稀疏向量,可能只有 15 个非零元素,其余 9985 个都是 0
# 稀疏向量示例(维度=10,仅2个非零值)
[0, 0, 2.3, 0, 0, 0, 5.1, 0, 0, 0]
3. 稠密向量(Dense Vector)
核心特征:绝大多数元素都有非零值,每个维度都承载语义信息,无空值
直观理解:像一个「填满的数组」,每个位置的数值都代表数据的某一层语义特征,没有冗余的 0。
- 举个例子:BGE 模型生成的 768 维向量,768 个元素几乎都是非零浮点数
# 稠密向量示例(维度=5,所有元素均非零)
[0.12, -0.34, 0.78, 0.21, -0.56]
二、核心区别全对比
| 维度 | 稀疏向量 | 稠密向量 |
|---|---|---|
| 非零元素占比 | <1%,绝大多数为 0 | >99%,几乎无 0 值 |
| 典型维度范围 | 1000 维~100 万维(高维度、极稀疏) | 128 维~4096 维(低维度、稠密) |
| 生成方式 | 传统统计方法:TF-IDF、BM25、One-Hot、词袋模型(BoW) | 深度学习 Embedding 模型:BGE、OpenAI Embedding、Sentence-BERT、CLIP |
| 语义表达逻辑 | 关键词匹配:非零位置对应词典中的词,值代表词的重要性只捕捉字面匹配,不理解语义 | 语义嵌入:每个维度对应神经网络学习到的隐层语义能理解同义词、上下文、深层语义 |
| 存储方式 | 仅存储「非零位置 + 对应值」,无需存 0,极致压缩100 万维稀疏向量仅占几 KB | 必须存储所有维度的数值,体积固定768 维稠密向量占约 3KB |
| 计算方式 | 仅计算非零位置的运算,计算量极小 | 全维度参与运算,计算量和维度成正比 |
| 召回特性 | 精确关键词匹配好,长尾词、专业术语召回率高同义词、语义相似但用词不同的内容无法召回 | 语义匹配能力强,能理解同义表达、上下文关键词精确匹配弱,容易漏专业术语 |
| 优点 | 计算快、存储成本低、可解释性强、关键词匹配精准 | 语义理解能力强、泛化性好、支持跨模态 |
| 缺点 | 无法理解语义、维度爆炸、泛化性差 | 计算成本高、可解释性差、关键词漏召 |
| 典型场景 | 全文检索、关键词匹配、标签检索、广告定向 | RAG 语义检索、多模态检索、推荐系统、相似度匹配 |
三、稀疏向量详解
1. 常见生成方式
(1)One-Hot 编码(最基础稀疏向量)
-
词典有 N 个词,每个词对应一个维度,某个词出现则对应位置为 1,其余为 0
-
例子:词典为
[Milvus, 向量, 数据库, AI],文本「Milvus 向量数据库」的 One-Hot 向量为:[1, 1, 1, 0] # 4维,3个非零值 -
缺点:完全没有语义,无法表达词的重要性,维度随词典大小爆炸
(2)TF-IDF / BM25(工业界最常用稀疏向量)
- 核心逻辑:词在文档中出现越频繁、在全局语料中越罕见,权重越高
- BM25 是当前全文检索的工业标准(Elasticsearch 核心算法),比 TF-IDF 更鲁棒
- 生成的向量:维度 = 词典大小(通常 1 万~100 万维),每个非零值对应一个词的 BM25 权重
- 优势:精准匹配关键词,专业术语、专有名词召回率 100%
(3)稀疏 Embedding 模型
- 最新的稀疏模型(如 Splade、SparseEmbed):用深度学习生成稀疏向量,兼顾关键词和弱语义
- 比传统 BM25 语义能力更强,同时保留稀疏向量的计算优势
2. 稀疏向量的核心优势
- 极致性价比:100 万维稀疏向量存储仅几 KB,检索速度是稠密向量的 10 倍以上
- 可解释性强:每个非零位置对应具体的词,能清楚知道「匹配了哪个关键词」
- 长尾匹配好:专业术语、生僻词、特定命名实体的召回率远高于稠密向量
- 无 Embedding 依赖:不需要调用大模型生成向量,直接基于文本统计生成,成本为 0
3. 适用场景
- 全文检索、法律 / 医疗等专业文档检索(术语多)
- 电商商品标题搜索(关键词匹配要求高)
- 广告定向、标签匹配、用户画像检索
- 对成本敏感、QPS 要求极高的场景
四、稠密向量详解
1. 常见生成方式
所有稠密向量都来自深度学习预训练 Embedding 模型,是大模型时代的主流向量表示:
- 文本 Embedding:BGE、M3E、OpenAI text-embedding-3、Sentence-BERT
- 输出维度:768 维、1024 维、1536 维
- 多模态 Embedding:CLIP、BLIP(同时编码文本和图像)
- 输出维度:512 维、768 维
- 代码 Embedding:CodeBERT、StarCoder Embedding
2. 稠密向量的核心优势
- 真正的语义理解:能识别「同义词、改写、上下文语义」,比如:
- 「如何安装 Milvus」和「Milvus 部署教程」会被判定为高度相似(稠密向量相似度高)
- 但稀疏向量会因为用词不同,判定为不相似
- 泛化能力强:能处理从未见过的句子,支持跨语言、跨领域匹配
- 支持多模态:同一向量空间可以同时编码文本、图像、音频,实现跨模态检索
- 长尾语义捕捉:能理解隐含语义、情感倾向,是 RAG 的核心基础
3. 稠密向量的核心痛点
- 成本高:生成需要调用 Embedding 模型,检索需要全维度计算,10 亿级稠密向量的存储和计算成本是稀疏向量的 10 倍以上
- 关键词漏召:对生僻词、专业术语、精确命名实体的召回率远低于稀疏向量
- 比如搜索「Milvus 2.5.7 JSON 索引」,稠密向量可能召回大量 Milvus 相关但不包含 JSON 索引的内容
- 可解释性差:每个维度的语义是黑盒,无法解释「为什么这两个向量相似」
4. 适用场景
- RAG 检索增强生成(核心场景)
- 语义搜索、问答系统、知识库检索
- 多模态检索(以图搜图、图文互搜)
- 推荐系统、内容去重、相似内容推荐
五、稀疏 + 稠密混合检索(Hybrid Search)
1. 为什么要混合使用?
稀疏向量和稠密向量是完全互补的关系:
- 稠密向量:抓「语义相似」,解决同义词、改写问题
- 稀疏向量:抓「关键词精确匹配」,解决专业术语、精确匹配问题
单独用任何一种都有缺陷:
- 只用稠密:专业术语漏召,关键词匹配不准
- 只用稀疏:语义匹配差,同义表达无法召回
2. 混合检索的工作流程(RAG 场景最佳实践)
- 双路召回:
- 用户查询同时生成「稠密向量」和「稀疏 BM25 向量」
- 分别用稠密索引和稀疏索引召回 Top-N 结果
- 结果融合:
- 对两路召回结果进行重排序(Rerank),融合相似度得分
- 最终返回兼顾语义和关键词匹配的最优结果
3. 效果提升
混合检索相比单一稠密检索,RAG 场景的召回率提升 20%~40%,是当前生产级 RAG 系统的标准配置。
六、Milvus 中的稀疏向量支持
Milvus 2.5 + 版本原生支持稀疏向量,是少数同时支持稠密 + 稀疏混合检索的向量数据库:
1. 原生 BM25 稀疏向量
- 无需额外对接 Elasticsearch,直接插入原始文本,Milvus 自动生成 BM25 稀疏向量并构建索引
- 内置 Tantivy 搜索引擎,BM25 检索性能是 ES 的 3~7 倍
- 支持和稠密向量在同一个 Collection 中进行混合检索
2. 稀疏向量索引
- 支持 WAND(Weak AND)索引:专门为稀疏向量优化的索引,检索速度提升 10 倍
- 支持稀疏向量的标量过滤、分区检索,和稠密向量用法完全一致
3. 混合检索 API
# Milvus 混合检索示例(稠密+BM25稀疏)
res = client.hybrid_search(
collection_name="rag_knowledge",
# 稠密检索参数
dense_params={
"data": [dense_query_vector],
"anns_field": "dense_embedding",
"limit": 10
},
# 稀疏BM25检索参数
sparse_params={
"data": "Milvus 2.5 JSON索引特性", # 直接传文本,自动生成BM25稀疏向量
"anns_field": "sparse_bm25",
"limit": 10
},
# 融合方式:加权求和
fusion_type="weighted_sum",
output_fields=["content"]
)
总结:选型建议
| 场景 | 向量选型 |
|---|---|
| 快速原型、小知识库、通用语义检索 | 仅稠密向量 |
| 专业文档、法律 / 医疗知识库、电商搜索 | 稀疏 + 稠密混合检索 |
| 高 QPS、成本敏感、纯关键词匹配 | 仅稀疏向量 |
| 生产级 RAG 系统 | 稀疏 + 稠密混合检索 + Rerank 重排序 |
更多推荐



所有评论(0)