特征向量,目前被广泛运用于ML各种领域。特征向量的基本含义在此不再赘述,简单来说是通过数值的形式描述某个对象,主要用于处理处理图片、视频、语音、文本等非结构化数据。
向量检索的核心是通过某种评判标准来判定两个特征向量(两个对象)的相似程度。
随着智慧城市,短视频,商品个性化推荐,视觉商品搜索等新兴应用领域的出现,处理这些非结构化数据最主流的方法就是通过ML/DL算法,提取数据的特征向量,然后通过对这些特征向量的相似度对比来实现数据分析与检索。
向量检索使用的算法主要是KNN(K-NearestNeighbor)和ANN(Approximate Nearest Neighbor )两种,两者的算法实现与适用场景略有不同。随着海量数据处理的需求增加,ANN的方式逐渐成为主流。<meta charset="utf-8">
专注向量搜索的引擎似乎还没有完全成熟的解决方案,但是也有很多优秀的开源项目:
还有很多ANN的benchmark也值得参考Github
两种算法 | 适用场景 |
---|---|
KNN | 数据量小(单分片100w以下); 先过滤其他条件,只剩少量数据,再向量召回的场景; 召回率100% |
ANN | 数据量大(千万级以上); 先向量过滤再其他过滤; 召回率不需要100% |