カスタムソートモデルを使用すると、検索クリック、購入コンバージョン、評価などの独自のビジネスデータを使用して機械学習ランキングモデルをトレーニングできます。これにより、OpenSearch は、単なるキーワードの関連性だけでなく、ユーザーにとって重要な要素に基づいてランク付けされた結果を返すようになります。たとえば、eコマースサイトではベストセラー商品を、メディアプラットフォームではクエリごとに高評価のコンテンツを上位に表示できます。
各インスタンスは最大 3 つのカスタムソートモデルをサポートします。
仕組み
カスタムソートモデルの構築には、連続する以下の 4 つの段階が含まれます。
特徴記述の作成 — モデルがドキュメントのランク付けに用いるシグナル (特徴) を定義します。
モデル記述の作成 — モデルアーキテクチャとトレーニングロジックを定義する Python スクリプトを記述します。
ソートモデルの作成とトレーニング — 特徴記述とモデル記述を組み合わせ、トレーニングを開始します。
Cava ベースのソートポリシーの作成 — トレーニング済みのモデルをソートポリシーに組み込み、ライブ検索結果に反映させます。
すべての段階は、OpenSearch Industry Algorithm Edition コンソールの [検索アルゴリズムセンター] > [ソート設定] で実行します。
前提条件
開始する前に、以下が用意されていることを確認してください。
[専用クラスター] タイプの OpenSearch Industry Algorithm Edition インスタンス
(任意) 利用可能な特徴タイプに関する知識。詳細については、カスタムソートモデルの特徴設定属性をご参照ください
(任意) Python または TensorFlow スクリプトのサンプルロジック。詳細については、カスタムソートモデル開発者ガイドをご参照ください
特徴記述の作成
特徴記述は、モデルが学習に用いる入力シグナル (ドキュメントの属性 (価格、評価) やクエリとドキュメントの関連性スコア (BM25) など) を定義します。
OpenSearch Industry Algorithm Edition コンソールにログインします。ナビゲーションペインで [検索アルゴリズムセンター] > [ソート設定] を選択し、[カスタムソートモデル] をクリックします。[特徴記述] タブで、[作成] をクリックします。
特徴記述名を入力し、モデルが使用する特徴を追加します。各特徴について、特徴名を指定し、特徴タイプを選択し、特徴を選択します。
利用可能な特徴タイプの詳細については、カスタムソートモデルの特徴設定属性をご参照ください。特定の特徴の選択に関するガイダンスについては、基本的な組み込み特徴をご参照ください。
モデル記述の作成
モデル記述には、モデルアーキテクチャとトレーニングロジックを定義する Python スクリプトが含まれます。
[並べ替え設定] の左側のペインで、[並べ替えモデルのカスタマイズ] をクリックします。[モデルの説明] タブで、[作成] をクリックします。
モデル記述名を入力し、エディターに Python スクリプトを記述して、[送信] をクリックします。
サンプルコードと開発ガイドラインについては、カスタムソートモデル開発者ガイドをご参照ください。
ソートモデルの作成とトレーニング
OpenSearch Industry Algorithm Edition コンソールで、ナビゲーションペインから [検索アルゴリズムセンター] > [ソート設定] > [カスタムソートモデル] を選択します。[ソートモデル] タブをクリックし、[作成] をクリックします。
以下のパラメータを設定します。
[対象アプリケーション]:対象のアプリケーションを選択します。
[モデル名]:モデル名 (1~30 文字) を入力します。
モデルタイプ:[カスタムソートモデル] を選択します。
[定期トレーニング]:必要に応じて有効または無効にします。
特徴記述:作成した特徴記述を選択します。
モデル記述:作成したモデル記述を選択します。
完了したら、[送信] をクリックします。
[ソートモデル] タブでモデルを見つけ、[操作] 列の [トレーニング] をクリックします。
トレーニングが開始されたら、モデルの詳細ページを開いてトレーニングの進捗を確認します。
トレーニングが完了したら、モデルのステータスを確認します。
利用可能 — モデルは使用できる状態です。Cava ベースのソートポリシーの作成に進みます。
利用不可 — モデルが必要なデータ品質のしきい値を満たしませんでした。モデルの詳細ページを開き、[データ検証] セクションに記載されている条件を確認します。これらの条件を満たすようにモデルを調整し、翌日再トレーニングしてください。
調整後もモデルが利用不可のままである場合は、チケットを起票してテクニカルサポートにお問い合わせください。
Cava ベースのソートポリシーの作成
カスタムソートモデルは、Cava ベースのプラグインでのみ使用できます。このステップでは、クエリ時にトレーニング済みモデルを読み込んで呼び出すソートポリシーを作成します。
ナビゲーションペインで [検索アルゴリズムセンター] > [ソート設定] を選択し、[ポリシー管理] をクリックします。[作成] をクリックします。
ポリシー名を入力し、[スコープ] ドロップダウンリストから [高度ソート] を選択します。[タイプ] ドロップダウンリストから [Cava スクリプト] を選択し、[次へ] をクリックします。
[スクリプトファイルの追加] をクリックして Cava スクリプトをエディターに貼り付け、[コンパイル] をクリックします。コンパイルが成功したら、[保存]、[発行] の順にクリックします。
次のサンプルスクリプトは、カスタムソートモデルを読み込んで呼び出す方法を示しています。 "Name of your custom sorting model" を、トレーニングしたモデルの実際の名前に置き換えてください。
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.features.algo.AlgoModel;
class BasicSimilarityScorer {
// メンバー変数を定義できます。
boolean init(OpsScorerInitParams params) {
// 検索リクエストに関連する変数を初期化します。
return true;
}
double score(OpsScoreParams params) {
OpsDoc doc = params.getDoc();
double score = 10;
// スコア結果を score パラメーターに割り当てます。
doc.trace("double value:", score);
return score;
}
};
class IntelligenceAlgorithmScorer {
AlgoModel _algoModel;
boolean init(OpsScorerInitParams params) {
// tf_checkpoint は固定パラメーター名です。変更しないでください。
_algoModel = AlgoModel.create(params, "tf_checkpoint", "rank", "Name of your custom sorting model");
return true;
}
double score(OpsScoreParams params) {
OpsDoc doc = params.getDoc();
double modelScore = _algoModel.evaluate(params);
doc.trace("rankModelScore: ", modelScore);
double score = modelScore + 700;
return score;
}
};検索テストの実行
ソートポリシーを発行した後、モデルが期待どおりに検索結果に影響を与えることを確認します。
ナビゲーションペインで、[機能拡張] > [検索テスト] を選択します。
[検索テスト] ページで、以下の必須パラメータを指定します。
パラメータ 説明 query検索クエリ文字列 second_rank_type二次ランキング段階のタイプ second_rank_name発行したソートポリシーの名前 raw_query結果を返す一意の独立した検索クエリ。モデルのアップグレード条件でも必要です。詳細については、検索機能実装のデモコードをご参照ください たとえば、高度ソートスクリプトが有効であることを確認するには、以下の値を入力します。
クエリバーで、query 句を
default:'黑白'に設定し、config 句をstart:0,hit:10,format:fulljson,trace:debugに設定します。パラメータ領域で、second_rank_name を
xcに、second_rank_type をcava_scriptに、raw_query を黑白に設定します。
検索を送信した後、レスポンスのソート情報を確認します。 SecondRank セクションに
rankModelScore:0.5が表示されていれば、高度ソートスクリプトが有効になっています。
注意事項
次のステップ
ベストプラクティス:カスタムソートモデルの作成 — 実際のトレーニングデータを使用したエンドツーエンドの例
カスタムソートモデルの特徴設定属性 — 特徴タイプとパラメータの完全なリファレンス
カスタムソートモデル開発者ガイド — Python スクリプト作成ガイド