是否可以使用特征向量查询Elastic Search?

发布于 2021-02-01 11:51:55

我想将n维特征向量<1.00, 0.34, 0.22, ..., 0>与每个文档一起存储,然后提供另一个特征向量作为查询,其结果按余弦相似度排序。Elastic Search可以做到吗?

关注者
0
被浏览
86
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    我没有特定于Elastic
    Search的答案,因为我从未使用过它(我使用构建了elasticsearch的Lucene)。但是,我正在尝试为您的问题提供一个通用的答案。给定查询向量,有两种获取最近向量的标准方法,如下所述。

    Kd树

    第一种方法是借助支持最近邻居查询的数据结构(例如 kd树)
    将向量存储在内存中。甲kd树是二叉查找树中的意义上的概括,所述的二叉查找树分区一个的每一个电平
    ķ
    尺寸分成两个部分。如果您有足够的空间来加载内存中的所有点,则可以在kd树上应用最近的邻居搜索算法,以获取按余弦相似度值排序的检索到的向量的列表。这种方法的明显缺点是,它无法像信息检索中经常遇到的那样扩展到大量的点集。

    逆量化向量

    第二种方法是使用 反量化矢量 。一个简单的基于范围的量化将 伪项 标记
    分配给矢量的实数,以便以后可以由Lucene对其进行索引(或就此而言为Elastic搜索)。

    例如,我们可以将标签分配 于范围 [0,0.1) 到范围 [0.1,0.2) 等等…在你的问题的样本矢量随后被编码成
    (J,d,C, ..A) 。(因为[.9,1]是J,[0.3,0.4)是D,依此类推)。

    因此,实数向量因此转换为字符串(可以视为文档),并因此使用标准信息检索(IR)工具进行索引。查询向量也被转换成一袋伪术语,因此可以计算集合中与当前最相似(在余弦相似度或其他度量方面)的一组其他相似向量。

    该方法的主要优点是,它可以很好地扩展以用于大量实数向量集合。关键缺点是,计算出的相似度值仅是真实余弦相似度的近似值(由于量化中遇到的损失)。较小的量化范围以增加索引大小为代价获得更好的性能。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看