微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Opendistro KNN分数在同一查询向量上给出不同的分数

如何解决Opendistro KNN分数在同一查询向量上给出不同的分数

我在opendistro elasticsearch版本7.8.0中将“ cosinesimil”用作knn.space_type。我为属性类型为knn_vector的3个文档建立了索引(除knn_vector之外,提供的唯一其他属性是值为1的状态项)。这些文档的3个向量分别是(2,2),(2,1)和(2,3)。

令人惊讶的是,当我使用查询搜索向量(1,1)[状态为1的后置过滤器]时:

{
  "size": 1,"query": {
    "knn": {
      "embedding": {
        "vector": [1,1],"k": 1
      }
    }
  },"post_filter": {
    "term": {"status": 1}
  }
}

每次执行查询时,我都会得到不同的召回向量。有时候,我得到带有矢量(2,1)和_score 0.5的文档,而其他时候我得到了带有(s,1.0)的文档(2,2)。

问题:

  1. 为什么执行相同的查询时会得到不同的召回向量?
  2. 为什么带有来自Elasticsearch的向量(2,1)的doc _score变为0.5。只有cosinesimil会影响得分,并且(2,1)和(1,1)之间的cosinesimil大约为0.95?
  3. 当使用相同的ES查询且knn参数k = 3且大小= 3,并多次执行时…有时我得到_score 0.5的文档(2,1),而有时我得到0.95的分数(实际的余弦素)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。