×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【经验总结】向量相似度搜索 巡山2021-08-04 11:10:25 回复 1 查看 其他
【经验总结】向量相似度搜索
分享到:

向量相似度检索,即根据一个向量Q从的向量库中寻找TopK个与Q最相似或者距离最近的向量(K-Nearest Neighbor,KNN),其在工业中有着广泛的应用场景,比如图像检索、文本语义检索以及推荐系统中基于User与Item的 ding向量召回等。

在生产环境中,被查找的向量库往往是海量,甚至超过了内存的限制,而且面临着高并发与低延迟的需求,通常会关注近似近邻(Approximate Nearest Neighbor,

ANN)问题,通过牺牲一定的召回精度,满足对内存和召回效率的需求。


在高维空间中快速进行最近邻搜索已成为一个越来越重要的问题, Erik Bernhardsson 创建了一个 ANN 基准测试工具- ANN-Benchmarks

[https://github.com/erikbern/ann-benchmarks],下图是各种ANN算法在glove-100-angular数据集上的表现。

glove-100-angular

上图中涉及的ANN算法:


根据实现方式,ANNS算法主要可分为:

  • 基于树的ANN

  • 基于哈希的ANN

  • 基于量化的ANN

  • 基于图的ANN

  • ...


不同的距离计算方式比较向量间的距离。选择合适的距离计算方式能极大地提高数据分类和聚类性能。

  • 欧氏距离 (L2)

  • 内积 (IP)

  • 杰卡德距离 (Jaccard)

  • 谷本距离 (Tanimoto)

  • 汉明距离 (Hamming)

  • ...




版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭