使用 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 模型返回的分数通常与第一阶段查询发出的分数不可比,并且可能低于未重新排序的分数。这可能导致未重新排序的结果文档的排名高于重新排序的文档。为了防止这种情况,LTR 重排序器需要 window_size
参数,并且该参数应大于或等于 from + size
。
分页
编辑当向用户公开分页时,window_size
应保持不变,因为通过传递不同的 from
值来逐步浏览每个页面。更改 window_size
会更改顶级命中结果,导致结果在用户浏览页面时令人困惑地发生变化。
负分数
编辑根据模型的训练方式,模型可能会为文档返回负分数。虽然第一阶段检索和排序不允许负分数,但在 LTR 重排序器中可以使用它们。