使用 Learning To Rank 进行搜索

编辑

使用 Learning To Rank 进行搜索

编辑

此功能在 8.12.0 版本中引入,并且仅适用于某些订阅级别。有关更多信息,请参阅 https://elastic.ac.cn/subscriptions

将 Learning To Rank 用作重排序器

编辑

一旦您的 LTR 模型在 Elasticsearch 中训练和部署完成,它就可以用作 重排序器,在 搜索 API 中使用。

resp = client.search(
    index="my-index",
    query={
        "multi_match": {
            "fields": [
                "title",
                "content"
            ],
            "query": "the quick brown fox"
        }
    },
    rescore={
        "learning_to_rank": {
            "model_id": "ltr-model",
            "params": {
                "query_text": "the quick brown fox"
            }
        },
        "window_size": 100
    },
)
print(resp)
response = client.search(
  index: 'my-index',
  body: {
    query: {
      multi_match: {
        fields: [
          'title',
          'content'
        ],
        query: 'the quick brown fox'
      }
    },
    rescore: {
      learning_to_rank: {
        model_id: 'ltr-model',
        params: {
          query_text: 'the quick brown fox'
        }
      },
      window_size: 100
    }
  }
)
puts response
const response = await client.search({
  index: "my-index",
  query: {
    multi_match: {
      fields: ["title", "content"],
      query: "the quick brown fox",
    },
  },
  rescore: {
    learning_to_rank: {
      model_id: "ltr-model",
      params: {
        query_text: "the quick brown fox",
      },
    },
    window_size: 100,
  },
});
console.log(response);
GET my-index/_search
{
  "query": { 
    "multi_match": {
      "fields": ["title", "content"],
      "query": "the quick brown fox"
    }
  },
  "rescore": {
    "learning_to_rank": {
      "model_id": "ltr-model", 
      "params": { 
        "query_text": "the quick brown fox"
      }
    },
    "window_size": 100 
  }
}

第一阶段查询,提供要进行重排序的文档。

上传到 Elasticsearch 的已训练模型的唯一标识符。

要传递给用于特征的查询模板的命名参数。

每个分片上应由重排序器检查的文档数量。

已知限制
编辑
重排序窗口大小
编辑

LTR 模型返回的分数通常与第一阶段查询的分数不具有可比性,并且可能低于未重排序的分数。这可能导致未重排序的结果文档排名高于重排序的文档。为了防止这种情况,window_size 参数对于 LTR 重排序器是强制性的,并且应大于或等于 from + size

分页
编辑

当向用户公开分页时,当通过传递不同的 from 值来推进每一页时,window_size 应保持不变。更改 window_size 可能会改变顶部的匹配项,从而导致用户翻页时结果混乱地发生变化。

负分数
编辑

根据模型的训练方式,模型可能会为文档返回负分数。虽然第一阶段检索和排名不允许使用负分数,但在 LTR 重排序器中可以使用它们。