使用 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 } }
已知限制
编辑重排序窗口大小
编辑LTR 模型返回的分数通常与第一阶段查询的分数不具有可比性,并且可能低于未重排序的分数。这可能导致未重排序的结果文档排名高于重排序的文档。为了防止这种情况,window_size
参数对于 LTR 重排序器是强制性的,并且应大于或等于 from + size
。
分页
编辑当向用户公开分页时,当通过传递不同的 from
值来推进每一页时,window_size
应保持不变。更改 window_size
可能会改变顶部的匹配项,从而导致用户翻页时结果混乱地发生变化。
负分数
编辑根据模型的训练方式,模型可能会为文档返回负分数。虽然第一阶段检索和排名不允许使用负分数,但在 LTR 重排序器中可以使用它们。