(1) 向量相似性检索
算向量相似度在很多算法中都有应用,对大规模服务来说,如何加速向量检索与相似度计算
是非常有价值的。
应用场景:
1 机器学习算法内部步骤:KNN, K-means
2 向量相似搜索:图像检索,word关键词检索
下面列出了其中的一些方式和方法:
两个问题:
- 1 检索-相似向量检索:
引用自:
参考文献很好的总结了相似搜索的几类方法,这里简要总结几个核心点。可以将方法分为三大类:
- 基于树的方法
- KD树是其下的经典算法。一般而言,在空间维度比较低时,KD树的查找性能还是比较高效的;但当空间维度较高时,该方法会退化为暴力枚举,性能较差,这时一般会采用下面的哈希方法或者矢量量化方法。
- 哈希方法
- LSH(Locality-Sensitive Hashing)是其下的代表算法。文献[7]是一篇非常好的LSH入门资料。
- 对于小数据集和中规模的数据集(几个million-几十个million),基于LSH的方法的效果和性能都还不错。这方面有2个开源工具FALCONN和NMSLIB。
- 矢量量化方法
- 矢量量化方法,即vector quantization。在矢量量化编码中,关键是码本的建立和码字搜索算法。比如常见的聚类算法,就是一种矢量量化方法。而在相似搜索中,向量量化方法又以PQ方法最为典型。
- 对于大规模数据集(几百个million以上),基于矢量量化的方法是一个明智的选择,可以用用Faiss开源工具。
- 2 检索成功后-向量相似度计算:
(2) 向量存储格式
稀疏矩阵存储格式
https://blog.csdn.net/wangjian1204/article/details/52149199
参考文章:
[1]火光摇曳:
[3] What are some fast similarity search algorithms and data structures for high-dimensional vectors?
友情推荐:ABC技术研习社
为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。