“ 不同的向量类型可能会得到不同的检索结果,因此需要根据不同的场景选择合适的检索策略 ”
相似度检索是目前人工智能领域一个非常重要的应用场景,其不仅仅应用于人工智能技术,同样应用于搜索技术;比如搜索引擎,电商搜索等多种技术领域。
因此,向量数据库也成为现在技术领域不可缺少的一个中间件;虽然说向量检索主要就是进行向量计算,不管是余弦,还是欧式距离等算法,目的都是通过计算向量之间的位置关系来确定相似度。
但这里就产生了一个问题,使用稠密向量和稀疏向量检索会得到不一样的结果;而使用混合搜索技术又会产生另一种结果。
因此,这里就涉及到向量数据库在不同的应用场景下的检索策略的选择;什么情况下应该选择稠密向量,什么情况下应该选择稀疏向量,而什么情况下又应该选择混合搜索。
相似度检索的策略问题
milvus向量数据库支持多种类型的度量方式,常见的有余弦和欧式距离;使用不同的度量算法其结果也不尽相同,而且有的算法是值越大越好,而有的算法却是值越小越好。
而我们今天讨论的不是值大小问题,而是不同向量类型之间的检索策略问题。
在Milvus中有两种经典的向量类型,稠密向量和稀疏向量;不同类型的向量可以表示不同的信息,使用不同的嵌入模型可以更全面地表示数据的不同特征和方面。
而稠密向量和稀疏向量的主要区别是,表示语义的密集向量和表示句子中词频的稀疏向量。
因此,稠密向量类型和稀疏向量类型,使用的是两种完全不同的搜索方式;稠密向量一般使用机器学习模型,也就是Embedding模型生成语义相关的向量数据;而稀疏向量一般使用的是词袋模型或BM25算法。

在milvus向量检索中,返回值中会有一个距离值(distance),在某些情况下使用稠密向量,稀疏向量或者混合搜索的方式可能搜索到的结构都是一样的。
但其距离值distance的值却是不一样的,在某些情况下可能混合搜索策略的距离值更大,而某些情况下普通检索的距离值更大;当然,前提是使用了同样的计算策略,比如说余弦函数。

那么什么情况下应该选择稠密向量类型,什么情况下应该选择稀疏向量类型?
由于稠密向量主要进行的是语义检索,而稀疏向量主要进行的关键词匹配;所以,在选择上我们需要从多个方面进行考虑。
核心对比:稠密向量 vs 稀疏向量
维度 | 稠密向量 | 稀疏向量 |
---|---|---|
生成方式 |
|
|
维度 |
|
|
语义理解 |
|
|
关键词敏感度 |
|
|
计算开销 |
|
|
适用场景 |
|
|
Milvus 索引支持 |
|
|
当然,稠密向量搜索和稀疏向量搜索并不是非此即彼的关系,在某些场景下可以使用混合搜索的方式,也就是同时使用稠密向量和稀疏向量进行搜索。
总结建议
场景 | 推荐方案 | 案例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
(文:AI探索时代)