从稠密到稀疏再到量化
本期播客
AI 搜索热点技术: 稀疏向量、稠密向量和向量量化
稀疏向量、稠密向量和向量量化是向量表示和处理中的三个重要概念,广泛应用于自然语言处理、信息检索、机器学习和推荐系统等领域。下面对它们进行对比和解释:
一、稀疏向量(Sparse Vector)
定义:
稀疏向量是指大部分元素为零,只有少数元素非零的向量。
特点:
高维:通常维度非常高(如词袋模型中维度等于词典大小)。 存储效率低:若用普通数组存储,会浪费大量空间存储零值。 计算效率低:在进行点积、距离计算时,需遍历大量零值。 可解释性强:每个非零维度通常对应一个明确的特征(如某个词的出现次数)。
典型应用:
词袋模型(Bag-of-Words) TF-IDF 向量 传统信息检索中的文档表示
示例:
假设词典为 ["apple", "banana", "cherry", "date"],句子 "I like apple and banana" 的词袋向量为:[1, 1, 0, 0] → 稀疏(2个非零)
二、稠密向量(Dense Vector)
定义:
稠密向量是指几乎所有元素都非零的低维向量,通常通过嵌入(embedding)技术学习得到。
特点:
低维:维度通常在几十到几百之间(如 768、1024)。 语义丰富:向量的每个维度虽无明确含义,但整体能捕捉语义、上下文关系。 存储和计算高效:无需特殊结构即可高效处理(尤其适合 GPU 加速)。 可支持相似度计算:如余弦相似度,用于语义搜索。
典型应用:
Word2Vec、GloVe、FastText BERT、Sentence-BERT 等预训练语言模型生成的嵌入 现代语义搜索、推荐系统
示例:
"apple" 的稠密向量可能是:[0.23, -0.45, 0.67, ..., 0.12](维度为 768,几乎每个值都非零)
三、向量量化(Vector Quantization, VQ)
定义:
向量量化是一种压缩技术,将高维(通常是稠密)向量映射到一个 有限的离散码本(codebook) 中的代表向量(称为“码字”或“centroid”),从而用更少的比特表示原始向量。
核心思想:
用“最近”的码字近似原始向量,牺牲少量精度换取显著的存储和计算效率提升。
常见方法:
K-Means 聚类:构建码本,每个簇中心是一个码字。 乘积量化(Product Quantization, PQ):将向量分段,每段独立量化,组合形成近似。 残差向量量化(Residual Vector Quantization, RVQ):逐层量化残差,精度更高。
优点:
大幅压缩存储:例如,768 维 float32 向量(3KB)可压缩为 1~2 字节的索引。 加速近似最近邻搜索(ANN):如 FAISS 库广泛使用 PQ/RVQ。 适合大规模向量数据库:如十亿级向量检索。
缺点:
信息损失:量化会引入误差,影响检索精度。 需预训练码本:码本质量直接影响性能。
应用场景:
大规模语义搜索(如电商商品搜索、问答系统) 向量数据库(如 Milvus、Pinecone、Weaviate) 模型压缩与加速(如语音识别、图像检索)
对比总结
总结
稀疏向量适合关键词匹配场景,但难以捕捉语义; 稠密向量通过嵌入模型实现语义理解,是现代 AI 的基础; 向量量化是对稠密向量的高效压缩手段,使十亿级向量检索成为可能。
在实际系统中,三者常结合使用:原始文本 → 稠密向量(如 BERT)→ 向量量化(如 PQ)→ 高效 ANN 检索。