OpenSearch は、さまざまなアルゴリズムを評価およびデバッグするための A/B テスト機能を提供します。新しい構成をすべてのオンライントラフィックに適用する前に、小規模なトラフィックに対して A/B テストを実行し、その効果を検証できます。これにより、未検証の変更がオンラインサービスに悪影響を及ぼすことを防げます。A/B テスト機能では、クエリ分析、基本ソート、および 高度ソート の構成に対してテストを作成できます。
使用方法
1. A/B テスト構成の基本ワークフロー
より包括的なテストメトリクスを取得するため、A/B テストを構成する前にクリックデータ収集を有効にすることを推奨します。A/B テスト機能を初めて使用する場合は、以下の手順に従ってテストを構成および開始してください。
1. テスト作成プロセスを開始します。
OpenSearch コンソールで、左側のナビゲーションウィンドウから Feature Extensions > A/B Test に移動し、[作成] をクリックして A/B テストの作成を開始します。
2. テストグループを作成します。
テストグループを使用すると、クエリ分析、基本ソート、高度ソート、およびカテゴリ予測に対してテストを実行できます。テストグループ名は表示用であり、変更可能です。名前の長さは 30 文字以内である必要があります。テストアプリケーション フィールドには現在のアプリケーション名が表示されます。情報を入力したら、[次へ] をクリックしてテスト構成に進みます。
3. テストを作成します。
テストグループを作成した後、「テストの作成」をクリックして、グループに具体的なテストを追加します。各テストグループには最大 20 個のテストを作成でき、同時にオンラインで実行できるテストは最大 10 個です。デフォルトでは、ID が 0 でトラフィックの 100% を受信する Online Performance (Baseline) というベースラインテストがページに含まれています。
3.1 テスト名:テストのカスタム名を定義します(30 文字以内)。テスト名を入力すると、右側に ソートポリシータイプとポリシー の構成エリアが表示されます。3.2 構成を追加します。
構成ダイアログボックスで既存のルールを選択することで、クエリ分析、基本ソート、および高度ソートのテストを構成できます。
クエリ分析タイプとポリシーを選択する場合:
-
「カスタム」を選択すると、現在のアプリケーションに対して作成済みのすべてのクエリ分析ルールが利用可能なオプションとして表示されます。
-
「デフォルトのオンライン構成を使用」を選択すると、既存のオンラインロジックが適用され、この設定項目はテスト対象外になります。
ソートポリシータイプとポリシーを選択する場合:
ソートポリシータイプとポリシーにも同様のロジックが適用されます。「構成中」状態のソートポリシーは編集可能ですが、オンラインの A/B テスト結果に影響するため、変更できない「公開済み」状態のポリシーのみを選択できます。
3.3 テストトラフィック:テストに割り当てられる最小トラフィックは 1% です。単一のシナリオにおいて、同一テストグループ内のすべてのオンラインテストに割り当てられるトラフィックの合計は 100% 以下である必要があります。
4. テストグループの作成を完了します。
テストを構成したら、「次へ」をクリックし、続いて「完了」をクリックして A/B テストのホームページに戻ります。テストグループが正常に作成されました というメッセージが表示され、次のステップに関する推奨事項も併せて表示されます。新しく構成されたテストグループは「保留中」状態になります。
5. テストを開始します。
テストグループを作成した後、該当グループを見つけ、[操作] 列の「テストを開始」をクリックします。テストグループのステータスは「テスト中」に変化します。
6. A/B テストを有効化します。
A/B テスト機能を有効にしてコンソールでテストを構成した後は、オンラインでテストを有効化するために検索クエリに abtest パラメーターを指定する必要があります。abtest パラメーターは scene_tag および flow_divider の 2 つの主要部分で構成されます。コンソールの 検索テスト ページでは、パラメーター セクションに abtest の値を入力してテストを適用できます。
リクエスト URL の例:
/v3/openapi/apps/160029126/search?query=query=default:'Shenzhen'&&config=start:0,hit:10,format:fulljson&abtest=scene_tag:test_1,flow_divider:123456
-
scene_tag:テストグループの名前です。コンソールで 1 つ以上のテストグループを作成した後、このパラメーターをいずれかのテストグループ名に設定します。これにより、テストトラフィックがそのグループ内の各テストにルーティングされます。
-
flow_divider:必須。バックエンドシステムはこの値をハッシュ化し、コンソールで構成したトラフィック割り当てに従ってユーザークエリトラフィックを異なるテスト間で分散します。この値には一意のユーザー ID を使用することを推奨します。ユーザー ID が利用できない場合は、デバイス ID または IP アドレスを使用できます。
注記:
-
OpenSearch に SDK を使用してアクセスする場合、
scene_tagおよびflow_dividerの値にスペースや句読点が含まれていない場合はエンコーディング不要で、対応するインターフェイスを呼び出すだけで済みます。値に句読点が含まれる場合は、事前にエンコードする必要があります。詳細については、「実践例」セクションをご参照ください。 -
OpenSearch に API 呼び出しでアクセスする場合、
scene_tagおよびflow_dividerの値は URL エンコードする必要があります。OpenSearch に渡されるabtestパラメーターの最終的な形式はabtest=urlencode(scene_tag:urlencode(\$scene),flow_divider:urlencode(\$value))となります。ここで、urlencodeは URL エンコード関数です。 -
詳細については、「A/B テストに関するよくある質問」ドキュメントをご参照ください。
2. テストグループおよびテストの管理
テストグループの管理
テストグループおよびテストを作成すると、A/B テストのホームページにテストグループの一覧が表示されます。一覧には テストグループ名、ステータス、作成時刻、最終更新時刻、および 操作 の各列が含まれます。作成済みの テストグループ に対して、以下の管理操作を実行できます。
1. テストを開始します。
「保留中」または「停止済み」状態のテストグループを開始できます。
2. テストを停止します。
「テスト中」状態のテストグループを停止できます。
3. テストグループを削除します。
A/B テストのホームページから任意のテストグループを削除できます。
テストの管理
テストグループおよびテストを作成すると、テストグループの詳細ページに対応するテストの一覧が表示されます。A/B テストのホームページで、テストグループの [操作] 列にある [詳細] をクリックして詳細ページに移動します。テスト一覧には、テスト名、クエリ分析タイプとポリシー、ソートポリシータイプとポリシー、トラフィック割り当て、および操作が表示されます。作成済みの テスト に対して、以下の基本的な管理操作を実行できます。
-
テストを編集します:テスト名、構成、およびトラフィック割り当てを変更できます。
-
テストを削除します:テストを削除すると、その構成情報が削除され、オンラインでのテストが無効になります。
-
ホワイトリスト。
特定の flow_divider を特定のテストに割り当てて、その検索パフォーマンスをより簡単に評価できるように、OpenSearch はホワイトリスト機能を提供しています。ホワイトリスト構成ページで flow_divider の値を入力し、[追加] をクリックした後、[保存] をクリックします。
3. A/B テストグループの詳細
行動データステータス
テストグループを作成した後、テストグループの詳細ページに移動します。行動データステータスは以下のいずれかになります。
-
未有効化:現在のアプリケーションに対して行動データがアップロードされていません。(詳細はこちら)
-
有効化済み(データなし):現在のアプリケーションに対して行動データ収集が有効になっていますが、データがまだ受信されていません。
-
データ異常:品質チェックにより、問題件数が多いため現在の行動データが信頼できないと判断されました。
テストグループステータス
テストグループを作成した後、テストグループの詳細ページに移動します。テストグループのステータスは以下のいずれかになります。
-
保留中:テストグループは開始準備ができています。このステータスは、グループが一度も実行されていない場合、または以前に停止された場合に使用されます。
-
テスト中:コンソールでテストグループが開始されたことを示します。テストグループの開始からの経過日数が表示されます。
-
停止済み:テストグループが停止されていることを示します。累積テスト持続時間は、テストグループが実際に実行されていた合計日数であり、停止期間は含まれません。
データ統計
A/B テストグループ一覧ページから「詳細」をクリックするか、アプリケーションメニューから「Report Statistics > A/B test report」に移動して、テストグループの詳細ページにアクセスします。データ統計 ページでは、A/B テストデータレポートを確認できます。コンソールのデータは T+1 で利用可能になります。たとえば、本日テストを実行した場合、結果は翌日コンソールで確認できます。コンソールでは、コアメトリクス比較ページと詳細メトリクスデータテーブルが統合されています。ドロップダウンリストからメトリクスタイプを選択して、対応するメトリクスを表示できます。コアメトリクスは直感的に把握しやすいよう折れ線グラフで表示され、デフォルトでは前日のデータが表示されます。ページ上のテスト選択ドロップダウンメニューから複数のテストを選択して、そのデータを比較できます。利用可能なコアメトリクスには、検索 PV、検索 UV、ゼロヒット率、ユーザーあたりの平均検索 PV、露出回数、検索クエリ数、ユーザーあたりの平均検索クエリ数が含まれます。
-
注記: 特定の日の A/B テストレポートは、翌日午前 8 時から利用可能になります。当日中に A/B テストを停止した場合でも、停止前のレポートデータは翌日に確認できます。
実践例
ある E コマースプロダクトでは、OpenSearch を以下の 2 種類の検索クエリに使用しています。
-
タイプ 1: キーワードで商品を検索するエンドユーザーからの検索トラフィック。クエリ形式は以下のとおりです。
query=config=format:fulljson&&query=default:'infant formula'&&sort=price
-
タイプ 2: 他の内部サービスからの呼び出しトラフィック。クエリ形式は以下のとおりです。
query=config=format:fulljson&&query=cat_id:'1'|'2'|'3'&&sort=timestamp
タイプ 1 のトラフィックについて、ユーザーはエンドユーザーのメンバー ID に基づいてトラフィックを分割し、異なるソート式、カテゴリ予測モデル、またはクエリ分析ルールの有効性を比較する A/B テストを実行したいと考えています。ユーザーはテストを以下のように構成します。
1. コンソールの A/B テスト機能でテストグループおよびテストを作成します。 テストグループを作成する際、テストグループ名を user_search とします。
2. クエリに A/B テストパラメーターを設定します。 コンソールの テストグループ 名が user_search であるため、このテストケースのクエリには scene_tag:user_search および flow_divider:xxxx のパラメーターを含める必要があります。ここで、xxxx はエンドユーザーのメンバー ID です。
2.1 SDK を使用する場合(以下の例は Java SDK を使用しています。PHP SDK の使用方法も同様です。):
OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
OpenSearchClient serviceClient = new OpenSearchClient(opensearch);
SearcherClient searcherClient = new SearcherClient(serviceClient);
searchParams = new SearchParams();
searchParams.setQueryString("default:'infant formula'");
searchParams.setFormat("json");
searchParams.addSort("price", "-");
searchParams.setAbtest(new Abtest().setSceneTag("user_search").setFlowDivider("田中一郎"));
aliyun-sdk-opensearch-3.4.1 (Java)、opensearch-sdk-php-3.3.0 (PHP)。
2.2 API を使用する場合
i. query=config=format:fulljson&&query=default:'粉ミルク'&&sort=-price&abtest=scene_tag:user_search,flow_divider:%e5%bc%a0%e4%b8%89
注記:abtest のサブパラメーターである scene_tag および flow_divider の値は、ここでは URL エンコードされています。
ii. リクエスト内の各パラメーター(query、sort、abtest)の値を URL エンコードします。
query=config%3dformat%3afulljson&&query%3ddefault%3a'infant%20formula'
3. 上記の構成を完了すると、タイプ 1 のトラフィックシナリオに対して A/B テストを実装できます。
運用レポート
インターフェイス
A/B テスト統計レポートを開くには、[Feature Extensions > A/B Test] に移動して「レポート統計」をクリックします。
または、「レポート統計 > A/B テストレポート」に直接移動します。
レポートページでは、コアメトリクス、トラフィックメトリクス、行動メトリクス、コンバージョンメトリクス、および ユーザー分析メトリクス の 5 つのディメンションでデータを分析します。日付範囲およびテストでデータをフィルターできます。
A/B テストレポートのメトリクスの説明については、こちらをクリックしてください。