elasticsearch中是否有一种算法可以提供向量之间的相似性?

hof1towb  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(496)

在我开始之前,我真的不知道什么是弹性以及它是如何工作的。我是ml工程师,最近被分配到 Image - Image similarity . 我开发了一个模型,它将为每幅图像提供一个向量,然后我必须比较模型提供的向量之间的距离,例如 Manhattan, Euclidean, cosine etc . 我可以很容易地做到这一点,但问题是,我有这么大的数据约20米的图像,我不能存储在内存中的所有矢量的初学者,即使我这样做,这几乎是不可能的,我比较每一个单位,因为它将是 O(12M) 比较。
所以我想知道有没有向量搜索的算法,比如文本搜索算法 Okapi BM25 .
我的向量看起来像: [0.2,0.1,0.04,......] 等等。它们可以是任意尺寸的,这取决于用例。但是有什么算法可以让我 top-k 搜索结果。
我们队正在使用 MongoDB 如果需要信息的话。

beq87vna

beq87vna1#

elasticsearch可以做cosine相似性“开箱即用”(比如-不需要插件),因为我认为是7.7版。也有实现其他算法的插件,但我对它们没有任何经验。请记住,elasticsearch非常占用cpu和磁盘i/o,因此对于非常大的数据集,余弦相似性可能会很慢。既然你对es一点都不熟悉,我就不详细讲了,你得先学会如何使用它。
如果您的数据已经在mongodb中,那么您需要在elasticsearch中使用“dense\u vector”数据类型索引json文档,然后您可以使用cosine\u similarity内置函数。

相关问题