You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch的KNN查询中结合字段权重提升?

为KNN查询添加字段权重调整方案

要给file-type=pdf的文档设置权重调整(你指定的0.1为权重系数,若需提升权重请设大于1的数值),可通过Elasticsearch的function_score查询实现,将KNN向量查询作为基础查询,再添加字段匹配的权重规则:

POST my-image-index/_search
{
  "size": 3,
  "query": {
    "function_score": {
      "query": {
        "knn": {
          "field": "image-vector",
          "query_vector": [-5, 9, -12],
          "num_candidates": 10
        }
      },
      "functions": [
        {
          "filter": {
            "term": {
              "file-type": "pdf"
            }
          },
          "weight": 0.1
        }
      ],
      "boost_mode": "multiply"
    }
  }
}

核心逻辑说明:

  • function_score:允许在基础查询得分之上,对符合特定条件的文档调整权重。
  • filter:精准匹配file-type=pdf的文档,仅对这类文档应用权重规则。
  • weight:权重系数,这里的0.1会让匹配文档的最终得分 = KNN查询得分 × 0.1;若需要提升权重,可设置为大于1的数值(如2表示得分翻倍)。
  • boost_mode:指定得分计算方式,multiply为默认值,即基础得分与权重相乘,也可根据需求选择sum(得分相加)等其他模式。

若需对多类字段设置不同权重,只需在functions数组中添加更多规则即可。

内容的提问来源于stack exchange,提问作者user2900970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:35:16