学習によるランキングを使用した検索
この機能はバージョン8.12.0で導入され、特定のサブスクリプションレベルでのみ利用可能です。詳細については、https://www.elastic.co/subscriptionsを参照してください。
再スコアラーとしての学習によるランキング
LTRモデルがトレーニングされ、Elasticsearchにデプロイされると、検索APIの再スコアラーとして使用できます:
Python
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)
Ruby
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
Js
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
以上である必要があります。
ページネーション
ユーザーにページネーションを公開する際、window_size
は各ページが異なるfrom
値を渡すことで進行するにつれて一定である必要があります。window_size
を変更すると、トップヒットが変わり、ユーザーがページを進むにつれて結果が混乱してシフトする可能性があります。
負のスコア
モデルのトレーニング方法によっては、モデルが文書に対して負のスコアを返す可能性があります。負のスコアは第一段階の取得およびランキングからは許可されていませんが、LTR再スコアラーで使用することは可能です。
特徴としての用語統計
現在、用語統計を特徴としてサポートしていませんが、今後のリリースでこの機能が導入される予定です。