基于milvus向量数据库的相似度检索问题——稀疏-密集向量检索和混合搜索

 不同的向量类型可能会得到不同的检索结果,因此需要根据不同的场景选择合适的检索策略 



相似度检索是目前人工智能领域一个非常重要的应用场景,其不仅仅应用于人工智能技术,同样应用于搜索技术;比如搜索引擎,电商搜索等多种技术领域。


因此,向量数据库也成为现在技术领域不可缺少的一个中间件;虽然说向量检索主要就是进行向量计算,不管是余弦,还是欧式距离等算法,目的都是通过计算向量之间的位置关系来确定相似度。


但这里就产生了一个问题,使用稠密向量和稀疏向量检索会得到不一样的结果;而使用混合搜索技术又会产生另一种结果。


因此,这里就涉及到向量数据库在不同的应用场景下的检索策略的选择;什么情况下应该选择稠密向量,什么情况下应该选择稀疏向量,而什么情况下又应该选择混合搜索。






相似度检索的策略问题




milvus向量数据库支持多种类型的度量方式,常见的有余弦和欧式距离;使用不同的度量算法其结果也不尽相同,而且有的算法是值越大越好,而有的算法却是值越小越好。


而我们今天讨论的不是值大小问题,而是不同向量类型之间的检索策略问题。


在Milvus中有两种经典的向量类型,稠密向量和稀疏向量;不同类型的向量可以表示不同的信息,使用不同的嵌入模型可以更全面地表示数据的不同特征和方面。


而稠密向量和稀疏向量的主要区别是,表示语义的密集向量和表示句子中词频的稀疏向量。


因此,稠密向量类型和稀疏向量类型,使用的是两种完全不同的搜索方式;稠密向量一般使用机器学习模型,也就是Embedding模型生成语义相关的向量数据;而稀疏向量一般使用的是词袋模型或BM25算法。



在milvus向量检索中,返回值中会有一个距离值(distance),在某些情况下使用稠密向量,稀疏向量或者混合搜索的方式可能搜索到的结构都是一样的。



但其距离值distance的值却是不一样的,在某些情况下可能混合搜索策略的距离值更大,而某些情况下普通检索的距离值更大;当然,前提是使用了同样的计算策略,比如说余弦函数。



那么什么情况下应该选择稠密向量类型,什么情况下应该选择稀疏向量类型? 


由于稠密向量主要进行的是语义检索,而稀疏向量主要进行的关键词匹配;所以,在选择上我们需要从多个方面进行考虑。

核心对比:稠密向量 vs 稀疏向量

维度 稠密向量 稀疏向量
生成方式
深度学习模型(如 BERT、ResNet)
词频统计方法(如 TF-IDF、BM25)
维度
低维(如 384、768 维)
高维(如 10万+ 维,大部分为0)
语义理解
⭐⭐⭐⭐⭐(捕捉上下文语义)
⭐(仅关键词匹配)
关键词敏感度
⭐⭐(可能忽略术语细节)
⭐⭐⭐⭐⭐(精确匹配关键词)
计算开销
高(需模型推理)
低(直接统计计算)
适用场景
语义搜索、跨模态检索、长文本理解
短文本搜索、精确术语匹配、日志分析
Milvus 索引支持
IVF_FLAT, HNSW, DISKANN 等
SPARSE_INVERTED_INDEX


当然,稠密向量搜索和稀疏向量搜索并不是非此即彼的关系,在某些场景下可以使用混合搜索的方式,也就是同时使用稠密向量和稀疏向量进行搜索。


总结建议

场景 推荐方案 案例
长文本、语义理解
纯稠密向量
法律文档语义检索
短文本、精确关键词匹配
纯稀疏向量
商品型号搜索
复杂需求、混合意图
混合搜索
电商搜索(“性价比 5G 手机”)
资源有限、延迟敏感
稀疏向量
日志实时分析







(文:AI探索时代)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往