发布于: Jul 29, 2020

Amazon Elasticsearch Service 现在支持 k 最近邻 (k-NN) 余弦相似度距离指标,可以供您的相似度搜索引擎使用。余弦相似度用于衡量两个向量之间的相似度(不考虑向量的大小),最常用于信息检索、图像识别、文本相似度、生物信息学和推荐系统。 

我们以前在 Amazon Elasticsearch Service 中发布了 k-NN 相似度搜索功能,该功能可以对以向量表示的数十亿个文档运行最近邻搜索,涵盖数千个维度。最初发布的 k-NN 使用欧氏距离来衡量向量之间的相似度。余弦相似度衡量的是两个向量在同一方向上的夹角的余弦值,余弦角越小,就说明向量之间的相似度越高。您现在可以利用余弦相似度来衡量两个向量之间的方向。例如,假设您使用词袋来比较两个长度相差很大、但出现频率最高的词均为“宠物”的文档,该词在较大的文档中出现 300 次,在另一个文档中出现 75 次。由于量级不同,两个文档之间的欧氏距离可能很大;而如果使用余弦相似度来衡量,由于其内容的方向相同,两个文档可能会被视为相似。利用 Elasticsearch 的聚合和过滤等后处理功能,可以进一步提高基于余弦相似度的 k-NN 搜索结果的精度。利用 Elasticsearch 的高度分布式架构,您可以建立一个具有高召回率的高性能企业级余弦相似度搜索引擎。 

k-NN 余弦相似度搜索使用轻量高效的非度量空间库 (NMSLIB) 构建而成,由 Open Distro for Elasticsearch 提供支持,该工具是 Elasticsearch 的 Apache 2.0 许可发行版。要了解有关 Open Distro for Elasticsearch 及其 k-NN 插件的更多信息,请访问项目网站。 

余弦相似度搜索现已在运行 Elasticsearch 7.7 的域上推出。要了解更多信息,请参阅文档。