使用 LTR 进行搜索
Elastic Stack Serverless
注意
此功能在 8.12.0 版本中引入,仅适用于某些订阅级别。有关更多信息,请参阅 https://elastic.ac.cn/subscriptions。
一旦您的 LTR 模型经过训练并部署在 Elasticsearch 中,它就可以在 搜索 API 中用作 重新评分器
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
。
当向用户公开分页时,window_size
应保持不变,因为每页都通过传递不同的 from
值来前进。更改 window_size
可能会改变最热门的结果,导致结果在用户浏览页面时产生令人困惑的偏移。
根据您的模型训练方式,模型可能会返回文档的负分。虽然第一阶段检索和排序不允许负分,但在 LTR 重新评分器中使用它们是可能的。