初识稀疏向量与稠密向量

5 阅读3分钟

在 AI 和搜索领域,向量(Vector) 是计算机理解万物的基础。你可以把向量想象成坐标,通过这些坐标,计算机就能在“数学空间”里衡量内容之间的关系。

稀疏向量和稠密向量代表了两种完全不同的“描述方式”,它们在 RAG(检索增强生成)项目中各司其职。


1. 稠密向量 (Dense Vector) —— 捕捉“语义”

稠密向量是目前大模型(LLM)和 Embedding 模型的底层核心。

  • 特点:向量的每一位通常都是非零的实数(如 0.12, -0.5 等)。维度相对固定且较低(通常是 768、1536 维)。
  • 代表算法:OpenAI Embedding、BGE、BERT。
  • 生活例子:如果要用稠密向量描述一个“苹果”,AI 不会只记录“苹果”这两个字,而是会用几千个维度来描述它:[甜度: 0.8, 颜色: 红色, 类别: 水果, 形状: 圆形, ...]
  • 优势擅长语义检索。即便用户搜“西红柿”,它也能通过语义坐标找到“番茄”,因为它知道这两个词在语义空间里靠得很近。

2. 稀疏向量 (Sparse Vector) —— 捕捉“关键字”

稀疏向量主要用于传统的关键词匹配,它非常“死板”但很精准。

  • 特点:维度极高(通常等于词典的总词数,可能有几万甚至几十万维),但绝大部分位置都是 0。只有当某个词出现时,对应的位置才有数值。
  • 代表算法:BM25、TF-IDF。
  • 生活例子:想象一个巨大的清单,上面列出了字典里所有的词。描述“苹果”这个词时,清单上只有“苹果”那一栏填了 1,其他几万个词(如“电脑”、“桌子”)全是 0。
  • 优势擅长精确匹配。当你搜索一个特定的型号(如 iPhone 15 Pro Max)或专业术语时,稀疏向量能精准锁定这个词,而不会因为“语义接近”就给你推一个 iPhone 14

3. 核心对比

特性稠密向量 (Dense)稀疏向量 (Sparse)
数值形态绝大部分是非零小数绝大部分是零
维度较低(几百到几千)极高(词典大小)
擅长领域理解意思(语义搜索)字面匹配(关键词搜索)
代表场景“给我推荐点健康的水果”“查找型号为 AB-123 的零件”

4. 为什么 RAG 项目中要强调“混合检索”?

单靠一种向量是不够的:

  1. 只有稠密向量:容易产生“幻觉”或模糊。比如搜“Java 17”,它可能觉得“Java 8”语义也挺近,结果把旧版本的文档推给了你。
  2. 只有稀疏向量:太死板。搜“提高代码质量”,如果文档里写的是“优化重构技巧”,关键词对不上,就彻底搜不到。

混合检索(Hybrid Search) 就是将两者结合:

  • 稠密向量 负责把“意思相近”的内容捞回来。
  • 稀疏向量 负责把“关键字完全一致”的内容提上来。

在 Pinecone 等向量数据库中,通过给两者分配不同的权重(Alpha 值),可以大幅提升检索的准确率。