Elasticsearch 向量计算支持 dense_vector 类型数据搜索,向量相似度计算

本文介绍了 elasticsearch中如何进行向量相似度的计算,向量数据的定义

Elasticsearch 现在是支持向量数据计算的 ,向量属性类型为 "dense_vector"

参考Mapping

{
  "mappings": {
    "properties": {
      "my_dense_vector": {
        "type": "dense_vector",
        "dims": 3
      },
      "status" : {
        "type" : "keyword"
      }
    }
  }
}

添加向量测试数据

PUT my-index-01/_doc/1
{
  "my_dense_vector": [0.5, 10, 6],
  "status" : "published"
}

向量数据计算

GET my-index-01/_search
{
  "query": {
    "script_score": {
      "query" : {
        "bool" : {
          "filter" : {
            "term" : {
              "status" : "published" 
            }
          }
        }
      },
      "script": {
        "source": "cosineSimilarity(params.query_vector, 'my_dense_vector') + 1.0", 
        "params": {
          "query_vector": [4, 3.4, -0.2]  
        }
      }
    }
  }
}

这里使用了余弦相似度计算 函数 cosineSimilarity()

这里支持的向量距离计算还有这些
向量相似度计算

上一篇 下一篇


推荐文章

评论
说点什么吧?

发表评论

取消回复
  最新文章