opendistro knn分数在同一查询向量上给出不同的分数

l2osamch  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(321)

我在OpenDistroElasticSearch7.8.0版本中使用“cosinesimil”作为knn.space\u类型。我为3个属性类型为knn\u vector的文档编制了索引(除了knn\u vector之外提供的唯一其他属性是值为1的状态项)。这些文档的3个载体分别是(2,2),(2,1)和(2,3)。
令人惊讶的是,当我使用查询搜索向量(1,1)[使用status=1的post filter]时:

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

每次执行查询时,我都会得到不同的回调向量。有时,我得到向量(2,1)为0.5的doc,而有时我得到向量(2,2)为1.0的doc。
问题:
为什么在执行同一个查询时会得到不同的回调向量?
为什么elasticsearch中向量为(2,1)的doc的∗得分为0.5。只有cosinesimil应该影响得分,cosinesimil在(2,1)和(1,1)之间大约是0.95?
当使用相同的es查询,knn参数k=3和size=3,并执行多次时…有时我得到的doc(2,1)的分数为0.5,有时我得到的分数为0.95(实际cosibil)。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题