会話型フィルタリングのデベロッパー ガイド

以下は、API で会話型の商品フィルタリングを統合する方法に関するデベロッパー ガイドです。

会話型フィルタリングを有効にするための最小データ要件を満たす

会話型の商品フィルタリングを有効にするために必要な 25% の割り当てを満たすには、有効なフィルタ情報を含むユーザー イベントの量を増やす必要があります。ユーザー イベント内でアップロードするフィルタが多いほど、会話の対象範囲が広くなります。

適用範囲を拡大するための具体的な手順とロジックは次のとおりです。

  • ユーザー イベントのアップロード フィルタ。ユーザー イベントに適用されるフィルタの入力を増やす必要があります。これにより、ユーザーがサイトで色や価格などのフィルタを適用したときに、そのアクションが Vertex AI Search for Commerce に送信される対応する検索ユーザー イベントのフィルタ フィールドにキャプチャされます。

  • フィードバック ループを確立する。LLM は、これらのフィルタからファセットの人気度を推測します。属性が動的ファセットとしてマークされているときに、対応するフィルタを検索イベントに含めることで、モデルの学習プロセスが開始されます。理想的には、ユーザー インターフェースで検索リクエストとイベントの両方でユーザーのフィルタ選択をキャプチャして中継し、この継続的なモデルの改善を推進する必要があります。

  • データ品質に関するアドバイザリ チェックをモニタリングします。1 日あたり 1,000 件のクエリという最初のしきい値は満たしているものの、カバレッジが 25% に達していない場合は、コンソールの [データ品質] ページ([会話] タブ)に特定のアドバイザリ チェックが表示されます。これらのチェックでは、カバレッジ目標を達成するためにユーザー イベントに適用されるフィルタをどの程度増やす必要があるかを正確な割合で計算して表示します。

  • 属性の構成を確認します。モデルはフィルタリングする属性を使用して質問を生成するため、それらの属性がインデックス登録可能で動的にファセット化可能としてカタログに正しく構成されていることを確認してください。

管理者向け

生成された質問と会話型の商品フィルタリングは、API または Search for commerce コンソールで直接管理し、Search for commerce コンソールの [データ品質] セクションと [評価] セクションで設定します。

Cloud コンソール

コンソールを使用すると、小売業者は会話型の商品フィルタリング エクスペリエンスで生成された質問を管理できます。詳しくは、生成された質問を会話型の商品フィルタリングで使用する方法をご覧ください。

質問生成サービスを利用する手順

  1. データ要件を満たしていることを確認します。

  2. 手動による質問のオーバーライドを構成します。

  3. 機能をオンにします。

  4. プレビューとテストを行います。

データ要件

検索データが会話型の商品フィルタリングに対応しているかどうかを確認するには、コンソールの [会話型の商品フィルタリングとブラウジング] または [データ品質] > [会話] で、[カバレッジのチェック] タブに移動します。

会話型の商品フィルタリングを有効にするには、特定のデータ要件を満たす必要があります。

具体的には、次のとおりです。

  • 1 日あたり 1,000 件のクエリ: この最初のしきい値に達すると、入力と出力を評価する会話プランが生成されます。
  • 入力: イベントのフィルタ数
  • 出力: 会話のカバレッジ
  • 25% の会話カバレッジ: 商取引向け Vertex AI Search モデルによって計算されます。会話カバレッジとは、1 つの質問を含むクエリの割合を意味します。頻度を重視したクエリの 25%(量ベース)に、一致する最初の質問が少なくとも 1 つ含まれている必要があります。

会話カバレッジが 25% に満たないものの、最初の前提条件である 1,000 件のクエリを 1 日あたり処理している場合は、ブロックとアドバイザリのチェックがそれぞれ出力と入力に適用されます。この場合、Vertex AI Search for Commerce は、会話カバレッジのしきい値である 25% に達するために、ユーザー イベントに適用されるフィルタをどの程度増やす必要があるかを計算します。アップロードするフィルタが多いほど、カバレッジは高くなります。

会話の準備状況を確認するには:

  1. Search for commerce コンソールの [データ品質] ページの [会話] タブに移動します。検索クエリの 25% 以上にフォローアップの質問が 1 つ以上含まれているかどうかの重要なチェックと、会話カバレッジの目標を達成するために有効なフィルタを持つユーザー イベントのどのくらいの割合が必要かに関する推奨チェックが表示されます。

会話対応 図 1. 会話型検索への対応状況の確認。

  1. 有効なフィルタと十分なユーザー イベントがあり、重要なチェックに合格した場合は、次のステップに進みます。

  2. 生成された質問の配信方法を管理するには、Vertex AI Search for Commerce コンソールの [会話型の商品フィルタリングとブラウジング] ページに移動します。

生成された質問のコントロール

生成 AI は、カタログ内のインデックス登録可能な属性ごとに質問を作成します。このとき、システム属性とカスタム属性の名前と値の両方を使用します。これらの質問は LLM によって生成され、検索エクスペリエンスの向上を目的としています。たとえば、家具の種類には「屋内」と「屋外」の値を指定できます。AI は、ユーザーが探している家具の種類に関する質問を生成します。

各ファセットには、生成された質問が 1 つあります。過去の検索イベント データから得られた過去のユーザー イベントとファセット エンゲージメントに基づいて、質問が予想される頻度順に並べ替えられます。AI はまず上部の質問を確認し、属性に基づいて関連する質問を見つけます。質問のリストは 1 回生成されます。新しい属性が追加された場合、2 時間以内にリストに反映されます。

  1. Search for commerce コンソールの [会話型検索とブラウジング] ページに移動します。

    [会話型検索とブラウジング] ページに移動する

  2. [AI 生成の質問の管理] タブでは、使用頻度(クエリの重み付け頻度、つまり一般的なクエリで返される頻度)で並べ替えられたすべての質問を確認できます。ランキングでは、GenerativeQuestionConfig 構成の頻度フィールドが使用されます。このフィールドは、AI 生成の質問を使用頻度で並べ替える役割を果たします。

  3. フィルタ オプションを使用して質問をフィルタできます。

  4. チェックボックスをオンにすると、各属性の質問が表示されるようになります。

  5. 各行の末尾にある アイコンをクリックすると、質問の編集パネルが開きます。

一括編集を行う手順は次のとおりです。

  1. 会話に含める質問または除外する質問の横にあるチェックボックスをオンまたはオフにします。

  2. リストの上部に表示される [会話で許可] ボタンまたは [会話で禁止] ボタンをクリックします。個々の質問を編集するには、 アイコンをクリックし、開いたペインで [会話で許可] の横にあるチェックボックスをオフまたはオンにします。

各質問を編集する 図 2. AI が生成した各質問を編集します。

会話型の商品フィルタリングで生成された質問を使用する

質問生成サービス API には、LLM の出力で生じる可能性のある不整合を軽減するためのコントロールが用意されています。これらはコンソールから管理できます。また、小売業者は、会話型商品フィルタリングを有効または無効に切り替えたり、会話型商品フィルタリングをトリガーするために必要な商品の最小数を設定したりすることで、会話型商品フィルタリングを構成することもできます。

質問を定義し、質問自体、回答の候補、会話で質問が許可されるかどうかを指定できます。個々の質問は LLM によって生成されるか、買い物客によってオーバーライドされます。コンソールでは、AI 生成の質問を確認できます。買い物客は、質問をオーバーライドしたり、会話のステータスを切り替えたりできます。質問を一括で編集することもできます。

個々の質問を編集する

コントロールを使用して、個々の質問をキュレートすることもできます。会話型の商品フィルタリングを有効にする前に、この操作を行うことをおすすめします。

各質問には 2 つの選択肢があります。最後の列の アイコンをクリックして、ユーザーに表示される質問パネルにアクセスします。

  1. すべてのクエリで質問を無効にする: 質問はデフォルトで有効になっています。[会話で許可] の横にあるチェックボックスをオフにします(または再度オンにします)。このオプションを選択すると、質問が完全にスキップされます。質問がクエリされた属性に関連していない場合や、不適切と誤解される可能性がある場合(「ドレスのサイズを教えていただけますか?」という質問は、体重を尋ねているように受け取られる可能性があります)、買い物客は質問を完全に無効にできます。
  2. 質問を書き換える: このペインには、AI 生成の質問、その質問が関連付けられている属性、その属性の値が表示されます。鉛筆アイコンをクリックして書き換えます。

会話型フィルタリングをオンにする

コンソールで生成 AI による質問を編集したら、会話型の商品フィルタリングをオンにできます。

会話型の商品フィルタリングを有効にするには、Search for commerce コンソールの [会話型の商品フィルタリングとブラウジング] ページに移動します。

  1. Search for commerce コンソールの [会話型検索とブラウジング] ページに移動します。

    [会話型検索とブラウジング] ページに移動する

  2. 質問が生成される前に検索で返すカタログ内の商品の最小数を検討してください。この数は 2 より大きくすることはできますが、2 より小さくすることはできません。1 ページに 1 行が、会話をトリガーするのに適切な量であることがよくあります。

  3. 数を構成し、切り替えボタンを [オン] に切り替えます。一致する商品が指定した数より少ない場合は、フィルタで除外されます。

スイッチオン 図 3. [会話型検索を有効にする] に切り替えます。

このページでは、ブロック チェックとアドバイザリ チェックのステータスを確認できます。1 つ以上のフォローアップの質問を含む十分な数の検索クエリが存在する場合、サイトでは会話型検索が有効になります。

評価とテスト

評価では、テスト検索を実行し、表示されたファセットに対して質問をテストすることで、サービング エクスペリエンスをプレビューできます。ここでは、会話型商品フィルタリングでのサービング エクスペリエンスのプレビューを確認できます。

評価とテストを行う手順は次のとおりです。商取引向け検索コンソールの [評価ページ] の [検索] タブまたは [参照] タブの [評価] セクション。

  1. Search for commerce コンソールの [評価] ページに移動します。

    [評価] ページに移動

  2. [検索] または [ブラウジング] をクリックします。

  3. [検索評価] フィールドに、アップロードしたカタログに基づいて意味のあるテストクエリを入力します。たとえば、カタログが衣料品で構成されている場合は「」と入力します。

  4. [検索プレビュー] をクリックして検索結果を表示します。

検索結果を評価する 図 4. 結果をプレビューします。

会話型の商品フィルタリングが有効になっている場合、生成された質問も有効になります。

質問生成 API

このセクションでは、質問生成 API を使用して、会話型 API をウェブ インターフェースに統合し、質問の生成を管理して、サイトに会話型の商品フィルタリングを提供する方法について説明します。

API 統合

物体:

  • GenerativeQuestionsFeatureConfig
  • GenerativeQuestionConfig
  • GenerativeQuestions Service
    • UpdateGenerativeQuestionsFeatureConfiguration
    • UpdateGenerativeQuestionConfig
    • ListGenerativeQuestionConfigs
    • GetGenerativeQuestionFeatureConfig
    • BatchUpdateGenerativeQuestionConfigs

会話型の商品フィルタリングを統合するうえで重要なのは、question リソースを定義することです。これには、質問自体と、会話で質問が許可されているかどうかが含まれます。質問はデフォルトで LLM によって生成されますが、管理者がオーバーライドできます。

会話型の商品フィルタリングを有効にする

オブジェクト:

  • GenerativeQuestionsFeatureConfig

このオブジェクトは、質問生成機能の会話型商品フィルタリングを有効にして、全体的なサービング エクスペリエンスを管理するための制御構成ファイルです。GenerativeQuestionsFeatureConfig は、GET メソッドを使用して、プロジェクトに関連付けられたカタログから属性情報と、属性がインデックスに登録可能かどうかを取得します。

feature_enabled スイッチは、サービングにおいて質問を使用するかどうかを決定します。コンソールの最上位の切り替えを管理します。

サービング エクスペリエンス

会話型の商品フィルタリングは、複数のターンで継続的な会話を行い、ユーザーを引き込むことをベースにしています。そのため、会話型の商品フィルタリングを機能させるには、少なくとも 2 つ目のレスポンスが必要です。ユーザーには、フォローアップの質問と返事の候補が回答としてレスポンス内に表示されます。ユーザーは、返事を入力するか、候補の回答(多肢選択式のオプション)をクリックして、このフォローアップの質問に回答できます。

多肢選択式のオプションは、フィルタリングによりクエリを絞り込むファセット(イベントタイプのフィルタ)のように機能します。ユーザーが多肢選択式のレスポンスをクリックすると、バックグラウンドでクエリにフィルタが適用されます。会話型複数選択を使用してフィルタを適用することは、動的ファセットまたはタイルを使用して同じフィルタを適用することと同じです。

会話型商品フィルタリングによって有効になるサービス

質問生成サービス(service GenerativeQuestionService{...})は、LLM 生成の質問の管理に使用されます。親オブジェクトはカタログです。ここから情報を取得して、指定されたカタログの質問を返します。このサービスは、質問生成機能の全体的な状態の管理、個別または一括での変更、質問のオンとオフの切り替えに使用されます。Service API と連携するにはデータ要件を満たす必要があり、質問を管理するには、まず質問を初期化する必要があります。

このサービスは、2 つのハンドラセットを使用して、特徴レベルの構成ファイルおよび質問レベルの構成ファイルとやり取りを行います。

  • GenerativeQuestionsFeatureConfig ハンドラ(機能レベル):

    1. Update: 商品の最小数を変更し、フィールドを有効にできます。
    2. Get: オブジェクトを返します。
  • GenerativeQuestionConfig ハンドラ(質問レベル):

    1. List: 指定されたカタログのすべての質問を返します。
    2. 更新: 個々の質問を管理します。
    3. 一括更新: グループ化された質問を管理します。

サービスは、最初のクエリに基づいて意味的に適切な質問を返します。

フォローアップの質問は LLM モデルによって生成され、オーバーライドできます。質問は、検索イベント履歴を呼び出して、お客様が使用する可能性が高い順に表示されます。検索イベント履歴がない場合は、コマース検索ログがフォールバックされます。

前のクエリに基づいて異なる質問が生成されます。重みは固定されていません。LLM 生成の質問を駆動する AI はクエリから学習し、クエリごとに重み付けを変更します。たとえば、「シャツ」ではカテゴリに非常に高い重み付けが設定されますが、「XL の赤いシャツ」ではカテゴリ、サイズ、色に重み付けが設定されます。

サービング エクスペリエンスを構成する

会話型フィルタリング構成 API を検索 API と統合して、サービング エクスペリエンスを構成します。

この特徴の構成 API ConversationalFilteringSpec は、会話型 API の上に構築されています。両方の API を並行して呼び出すか、次の順序で呼び出すことができます。

  1. 会話型 API
  2. API の検索
  • ConversationalFilteringSpec: このオプション フィールドは ConversationalSearchRequest に追加されましたが、会話型の商品フィルタリングを使用する場合は必須です。このフィールドは、SearchRequest フィールド、クエリ、フィルタを再利用します。また、最初のクエリの後にユーザーにフォローアップの質問を送信するためのフィールドと、クライアントとサーバー間の会話の状態を維持するための conversation_id も含まれています。
  • ConversationalFilteringResult: proto ファイルには、ConversationalSearchResponse の会話型 CRS フローで返される必要がある追加情報が含まれています。これには、conversation_idrefined_queryadditional_filtersfollow_up_questionsuggested_answers が含まれます。

会話型 API のユーザー ジャーニー

ユーザーが最初のクエリで検索を開始し、mode フラグを CONVERSATIONAL_FILTER_ONLY に設定します。ユーザーが回答を選択すると、user_answer フィールドを使用して API に回答が返送されます。

Conversational API は、レスポンスで additional_filter フィールドを提供します。ユーザーは、これらのフィルタを Search API のフォローアップ リクエストに適用する必要があります。検索結果はユーザーの入力に基づいており、新しいフォローアップの質問が表示されます。これにより、ユーザーが買い物客のウェブサイトで目的のアイテムを見つけるまで、複数のターンで会話が続きます。

ウェブサイトで会話型の商品フィルタリングが有効になっている場合、ユーザー ジャーニーとその後のコマース向け Vertex AI Search とのやり取りは次のようになります。

  • ステップ 1. 最初のクエリは、ユーザーから Search API と Conversational API の両方に送信されます。Search API は検索結果のみを返します。会話 API は、回答の候補とフォローアップの質問を返します。同じクエリまたは page_category で Search API を呼び出し、検索結果を取得します。フォローアップの会話リクエストが会話型検索に送信されます。適切な会話フィルタリング モードで Conversational API を呼び出します。

  • 手順 2. 検索結果のみを含む最初の検索レスポンス。Conversational API は、回答の候補とフォローアップの質問を返すことで、クエリを絞り込みます。エンドユーザーが多肢選択式を選択します。

    • 選択された回答フィルタが Conversational API に送信されます。
    • 会話 API と検索 API は、適用されたフィルタで実行されます。

ユーザーの最初のクエリ

最初のクエリは、ユーザーが Vertex AI Search for Commerce で会話を開始し、検索ボックスで dress を検索したときです。

  • ユーザーの操作: エンドユーザーが「ドレス」を検索します。
  • 実装: 2 つの API 呼び出しを行います。
  • 会話型 API リクエスト:
    • query: "dress"
    • conversational_search_spec:
      • mode: "CONVERSATIONAL_FILTER_ONLY" これはキー パラメータです。
  • Search API リクエスト:
    • query: dress
  • 会話型 API レスポンス:
    • conversation_id: "c15..." この変数を保存します。
    • followup_question: 「What is the color?」という質問が生成されます。
    • suggested_answers: [ {name: "colors", value: "yellow"}, {name: "colors", value: "blue"}, ... ]
  • アクション: ユーザーに followup_questionsuggested_answers を表示します。

Search API にリクエストを送信する

dress をクエリとして設定して(または実際のクエリ)、次の検索リクエストを作成して、Search API にリクエストを送信します。

会話型の商品フィルタリングの一環として、検索 API リクエストに変更はありません。

Conversational API にリクエストを送信する

次の手順で Conversational API にリクエストを送信します。

  • dress をクエリ(または実際のクエリ)として設定して、会話型検索リクエストを作成します。

  • 会話形式のレスポンスを取得するには、modeCONVERSATIONAL_FILTER_ONLY に設定します。DISABLED に設定されている場合、フォローアップの質問は提供されません。

  • 会話型検索リクエストで SearchParams を入力します。検索パラメータは Search API 呼び出しと同じである必要があります。

会話 API レスポンス

Conversational API からのレスポンスは次のようになります。

レスポンスの処理方法:

  • conversation_id: この ID はブラウザのセッション ストレージに保存でき、サーバーとの会話型検索を続行するために使用できます。1 人の買い物客が複数のタブを開いて複数の会話を行っている可能性があるため、conversation_id は会話の追跡に使用されます。
  • refined_query: 現在のクエリを識別します。このレスポンスを使用して Search API を呼び出し、商品結果を取得する必要があります。
  • followup_question: ユーザーに表示する質問を識別します。
  • suggested_answers: ユーザーに表示する多肢選択式解答の順序付きリスト。回答の数を減らしたい場合は、最初の N 件の結果のみを表示します。リストは、結果の表示順に並べ替えられます。

最初のクエリで会話が有効になります。

検索で多肢選択式の回答を処理する

  • ユーザー アクション: 黄色をクリックします。
  • 実装: 2 つの新しい API 呼び出しを行います。
  • 会話型 API リクエスト:
    • query: dress
    • conversation_id: "c15..." 保存された ID を使用します。
    • user_answer: { selected_answer: { product_attribute_value: { name: "colors", value: "yellow" } } }
  • Search API リクエスト:
    • query: dress
  • 会話型 API レスポンス:
    • additional_filter: { product_attribute_value: { name: "colors", value: "yellow" } }
    • followup_question: どのようなイベントまたは行事ですか?
  • アクション: additional_filter を使用してウェブ インターフェースを更新します(たとえば、黄色のフィルタ ボックスをオンにして、新しい質問を表示します)。

会話型の商品フィルタリングでは、会話型エンゲージメントを継続するためのオプションが提供され、検索の絞り込みを迅速に行うことができます。

検索結果が表示されたら、ユーザーは選択肢の中から 1 つを選択できます。

このコードサンプルは、ユーザーが多肢選択式の回答「黄色」を選択したことを示しています。正しいユーザー フィルタを適用してクエリを再度送信することで、新しい会話リクエストが Search API に送信されます。

Conversational API にリクエストを送信するには:

  1. セッション ストレージから conversation_id を復元します。
  2. modeCONVERSATIONAL_FILTER_ONLY に設定します。
  3. ユーザーが選択した内容に応じて user_answer を設定します。

Conversational API から次のようなレスポンスが返されます。

レスポンスの処理方法:

  • Google のレスポンスは、additional_filter フィールドを使用して color = yellow のフィルタ チェックボックスをオフにできる点を除いては、最初のクエリに対するレスポンスとほぼ同じです。また、ユーザーが選択した他のフィルタにも追加する必要があります。
  • また、このフォローアップ クエリとフォローアップ検索リクエストのために Google に送信されるフィルタ フィールド イベントにも additional_filter を追加する必要があります。検索リクエストに適用して検索結果の商品を取得し、会話型検索リクエストに適用してフォローアップの会話を取得する必要があります。
  • refined_query は、より関連性の高い商品を取得するために Search API に送信する必要があります。

商品フィルタを実装する

このセクションでは、API レベルで会話型の商品フィルタリングを実装するためのガイドを提供します。開始(ニュートラル)状態はランディング ページです。Vertex AI Search for Commerce アプリケーションに応じて、検索バー、レコメンデーション、マーケティング キャンペーンなどが表示されます。Search API または Conversation API への呼び出しが行われていない。

開始状態

これは、ユーザー インターフェース、推奨事項、キャンペーンのランディング ページです。Search for Conversational API 呼び出しはまだ行われていません。

ユーザーがクエリを入力し、Vertex AI Search for Commerce API を呼び出す

ユーザーがクエリを入力する

lipstick」などのクエリを入力して、Search API と Conversation API に並列呼び出しを発行します。

ユーザーがクエリを入力し、Vertex AI Search for Commerce API を呼び出す

検索と会話で最初の質問が表示される

API レスポンスが表示されます。これには、最初の質問と一連の回答オプションが含まれます。会話型 API と検索 API からの最初のユーザー クエリに対するレスポンスは、それぞれ非同期です。

検索 API と会話 API からのレスポンス

ユーザーにオプションが表示される

ユーザーが提示された回答またはフィルタ ファセットを選択する

ユーザーが提示された回答またはフィルタ ファセットを選択します。

ユーザーが提示された回答またはフィルタ ファセットを選択する

ユーザーが選択すると、ユーザーのフィルタ ファセットまたは回答を含む 2 回目の呼び出しが両方の API に発行されます。

ユーザーの回答を含む検索 API と会話 API への並列呼び出し

API がフォローアップ質問を返す

検索 API と会話 API はどちらも非同期で応答し、別の質問と回答の選択肢を提示します。

ユーザーが提示された回答またはフィルタ ファセットを選択する

ユーザーには、次の質問と、その質問に対する回答の選択肢が表示されます。

ユーザーは次の質問を確認し、次の質問に対する回答を選択します

エッジケース

実装で対応しているシナリオは他にもいくつかあります。

ユーザーが新しいクエリを入力する

ユーザーがクエリの会話フィルタ(lipstick など)を入力している最中であっても、ウェブ インターフェースには API の初期レスポンスがすでに表示されています。ただし、ユーザーが「日焼け止め」などの新しいクエリを入力すると、新しい会話が開始されます。この場合、API 実装は新しいクエリに戻りますが、conversation_id フィールドは空になります。この新しいクエリにより、新しいレスポンスが再生成され、ウェブ インターフェースに新しいレスポンスが再入力されます。

会話中にユーザーがクエリを変更する

ユーザーがファセット フィルタまたは以前に回答した質問の選択を解除する

ユーザーが、前のクエリのレスポンスがすでに表示されているインターフェースで、選択したファセット フィルタまたは回答の選択を解除すると、searchParam フィルタを使用して新しい会話セッションが開始されます。これは、ユーザーが現在の会話フローから離脱しているためです。

ユーザーが以前の選択を解除する