Search using LTR
Stack Serverless
This feature was introduced in version 8.12.0 and is only available to certain subscription levels. For more information, see https://www.elastic.co/subscriptions.
Once your LTR model is trained and deployed in Elasticsearch, there are two ways to use it with the search API to improve your search results:
To use your LTR model as a rescorer in the search API, follow this example:
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
}
}
- First pass query providing documents to be rescored.
- The unique identifier of the trained model uploaded to Elasticsearch.
- Named parameters to be passed to the query templates used for feature.
- The number of documents that should be examined by the rescorer on each shard.
Stack Serverless
LTR models can also be used as a retriever in the search pipeline. You can implement this with a rescorer retriever as shown in the following example:
GET my-index/_search
{
"retriever": {
"rescorer": {
"rescore": {
"window_size": 100,
"learning_to_rank": {
"model_id": "ltr-model",
"params": {
"query_text": "the quick brown fox"
}
}
},
"retrievers": [
{
"standard": {
"query": {
"multi_match": {
"fields": ["title", "content"],
"query": "the quick brown fox"
}
}
}
}
]
}
}
}
- First pass retrievers used to retrieve documents to be rescored
- The unique identifier of the trained model uploaded to Elasticsearch.
- Named parameters to be passed to the query templates used for feature extraction.
- The number of documents that should be examined by the rescorer.
Scores returned by LTR models are usually not comparable with the scores issued by the first pass query and can be lower than the non-rescored score. This can cause the non-rescored result document to be ranked higher than the rescored document. To prevent this, the window_size
parameter is mandatory for LTR rescorers and should be greater than or equal to from + size
.
When exposing pagination to users, window_size
should remain constant as each page is progressed by passing different from
values. Changing the window_size
can alter the top hits causing results to confusingly shift as the user steps through pages.