重み付きトークンクエリ
8.15.0で非推奨。
このクエリは、スパースベクターに置き換えられ、今後のリリースで削除されます。
この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。
重み付きトークンクエリは、自然言語処理モデルを使用して計算するのではなく、クエリと共に送信されるトークン-重みペアのリストを必要とします。これらのトークンペアは、スパースベクターまたはランク機能フィールドに対するクエリで使用されます。
重み付きトークンクエリは、外部クエリ拡張モデルを使用したい場合や、新しいモデルを再インデックスせずに変更を迅速にプロトタイプしたい場合に便利です。
例リクエスト
Python
resp = client.search(
query={
"weighted_tokens": {
"query_expansion_field": {
"tokens": {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": False
}
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: false
}
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012,
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: false,
},
},
},
},
});
console.log(response);
コンソール
POST _search
{
"query": {
"weighted_tokens": {
"query_expansion_field": {
"tokens": {"2161": 0.4679, "2621": 0.307, "2782": 0.1299, "2851": 0.1056, "3088": 0.3041, "3376": 0.1038, "3467": 0.4873, "3684": 0.8958, "4380": 0.334, "4542": 0.4636, "4633": 2.2805, "4785": 1.2628, "4860": 1.0655, "5133": 1.0709, "7139": 1.0016, "7224": 0.2486, "7387": 0.0985, "7394": 0.0542, "8915": 0.369, "9156": 2.8947, "10505": 0.2771, "11464": 0.3996, "13525": 0.0088, "14178": 0.8161, "16893": 0.1376, "17851": 1.5348, "19939": 0.6012},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": false
}
}
}
}
}
重み付きトークンのトップレベルパラメータ
<tokens>
- (必須、辞書)トークン-重みペアの辞書。
pruning_config
- (オプション、オブジェクト)オプションのプルーニング設定。これが有効な場合、クエリのパフォーマンスを向上させるために、重要でないトークンがクエリから省かれます。デフォルト:無効。
- `````tokens_freq_ratio_threshold
- (オプション、整数)指定されたフィールド内のすべてのトークンの平均頻度の
tokens_freq_ratio_threshold
倍を超える頻度のトークンは、外れ値と見なされ、プルーニングされます。この値は1から100の間でなければなりません。デフォルト:5
。 tokens_weight_threshold
- (オプション、浮動小数点)重みが
tokens_weight_threshold
未満のトークンは重要でないと見なされ、プルーニングされます。この値は0から1の間でなければなりません。デフォルト:0.4
。 only_score_pruned_tokens
- (オプション、ブール値)
true
の場合、プルーニングされたトークンのみをスコアリングに入力し、非プルーニングトークンを破棄します。メインクエリにはfalse
に設定することを強くお勧めしますが、より関連性の高い結果を得るために再スコアクエリにはtrue
に設定できます。デフォルト:false
。tokens_freq_ratio_threshold
およびtokens_weight_threshold
のデフォルト値は、最も最適な結果を提供するELSERを使用したテストに基づいて選択されました。
プルーニング設定と再スコアを使用した重み付きトークンクエリの例
以下の例は、text_expansion
クエリにプルーニング設定を追加します。プルーニング設定は、クエリのパフォーマンスを向上させるために、クエリからプルーニングする重要でないトークンを特定します。
トークンプルーニングはシャードレベルで行われます。これにより、シャード全体で同じトークンが重要でないとラベル付けされるはずですが、各シャードの構成に基づいて保証されるものではありません。したがって、マルチシャードインデックスでtext_expansion
をpruning_config
と共に実行している場合は、元々クエリからプルーニングされたトークンを使用して、再スコアフィルタリングされた検索結果機能を追加することを強くお勧めします。これにより、プルーニングされたトークンのシャードレベルの不整合を軽減し、全体的により良い関連性を提供します。
Python
resp = client.search(
index="my-index",
query={
"weighted_tokens": {
"query_expansion_field": {
"tokens": {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": False
}
}
}
},
rescore={
"window_size": 100,
"query": {
"rescore_query": {
"weighted_tokens": {
"query_expansion_field": {
"tokens": {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": True
}
}
}
}
}
},
)
print(resp)
Ruby
response = client.search(
index: 'my-index',
body: {
query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: false
}
}
}
},
rescore: {
window_size: 100,
query: {
rescore_query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: true
}
}
}
}
}
}
}
)
puts response
Js
const response = await client.search({
index: "my-index",
query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012,
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: false,
},
},
},
},
rescore: {
window_size: 100,
query: {
rescore_query: {
weighted_tokens: {
query_expansion_field: {
tokens: {
"2161": 0.4679,
"2621": 0.307,
"2782": 0.1299,
"2851": 0.1056,
"3088": 0.3041,
"3376": 0.1038,
"3467": 0.4873,
"3684": 0.8958,
"4380": 0.334,
"4542": 0.4636,
"4633": 2.2805,
"4785": 1.2628,
"4860": 1.0655,
"5133": 1.0709,
"7139": 1.0016,
"7224": 0.2486,
"7387": 0.0985,
"7394": 0.0542,
"8915": 0.369,
"9156": 2.8947,
"10505": 0.2771,
"11464": 0.3996,
"13525": 0.0088,
"14178": 0.8161,
"16893": 0.1376,
"17851": 1.5348,
"19939": 0.6012,
},
pruning_config: {
tokens_freq_ratio_threshold: 5,
tokens_weight_threshold: 0.4,
only_score_pruned_tokens: true,
},
},
},
},
},
},
});
console.log(response);
コンソール
GET my-index/_search
{
"query":{
"weighted_tokens": {
"query_expansion_field": {
"tokens": {"2161": 0.4679, "2621": 0.307, "2782": 0.1299, "2851": 0.1056, "3088": 0.3041, "3376": 0.1038, "3467": 0.4873, "3684": 0.8958, "4380": 0.334, "4542": 0.4636, "4633": 2.2805, "4785": 1.2628, "4860": 1.0655, "5133": 1.0709, "7139": 1.0016, "7224": 0.2486, "7387": 0.0985, "7394": 0.0542, "8915": 0.369, "9156": 2.8947, "10505": 0.2771, "11464": 0.3996, "13525": 0.0088, "14178": 0.8161, "16893": 0.1376, "17851": 1.5348, "19939": 0.6012},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": false
}
}
}
},
"rescore": {
"window_size": 100,
"query": {
"rescore_query": {
"weighted_tokens": {
"query_expansion_field": {
"tokens": {"2161": 0.4679, "2621": 0.307, "2782": 0.1299, "2851": 0.1056, "3088": 0.3041, "3376": 0.1038, "3467": 0.4873, "3684": 0.8958, "4380": 0.334, "4542": 0.4636, "4633": 2.2805, "4785": 1.2628, "4860": 1.0655, "5133": 1.0709, "7139": 1.0016, "7224": 0.2486, "7387": 0.0985, "7394": 0.0542, "8915": 0.369, "9156": 2.8947, "10505": 0.2771, "11464": 0.3996, "13525": 0.0088, "14178": 0.8161, "16893": 0.1376, "17851": 1.5348, "19939": 0.6012},
"pruning_config": {
"tokens_freq_ratio_threshold": 5,
"tokens_weight_threshold": 0.4,
"only_score_pruned_tokens": true
}
}
}
}
}
}
}