以下は、API で会話型の商品フィルタリングを統合する方法に関するデベロッパー ガイドです。
管理者向け
生成された質問と会話型の商品フィルタリングは、API または Search for commerce コンソールで直接管理し、Search for commerce コンソールの [データ品質] セクションと [評価] セクションで設定します。
Cloud コンソール
コンソールを使用すると、小売業者は会話型の商品フィルタリング エクスペリエンスで生成された質問を管理できます。詳しくは、生成された質問を会話型の商品フィルタリングで使用する方法をご覧ください。
質問生成サービスを利用する手順
データ要件を満たしていることを確認します。
手動による質問のオーバーライドを構成します。
機能をオンにします。
プレビューとテストを行います。
データ要件
検索データが会話型の商品フィルタリングに対応しているかどうかを確認するには、コンソールの [会話型の商品フィルタリングとブラウジング] または [データ品質] > [会話] で、[カバレッジのチェック] タブに移動します。
会話型の商品フィルタリングを有効にするには、特定のデータ要件を満たす必要があります。
具体的には、次のとおりです。
- 1 日あたり 1,000 件のクエリ: この最初のしきい値に達すると、入力と出力を評価する会話プランが生成されます。
- 入力: イベント内のフィルタ数
- 出力: 会話のカバレッジ
- 25% の会話カバレッジ: 商取引向け Vertex AI Search モデルによって計算されます。会話カバレッジとは、1 つの質問を含むクエリの割合を意味します。頻度を重視したクエリの 25%(量ベース)に、一致する最初の質問が少なくとも 1 つ含まれている必要があります。
会話カバレッジが 25% に満たないものの、最初の前提条件である 1,000 件のクエリを 1 日あたり処理している場合は、ブロックとアドバイザリのチェックがそれぞれ出力と入力に適用されます。この場合、Vertex AI Search for Commerce は、会話カバレッジのしきい値である 25% に達するために、ユーザー イベントに適用されるフィルタをどの程度増やす必要があるかを計算します。アップロードするフィルタが多いほど、到達範囲が広くなります。
会話の準備状況を確認するには:
- Search for commerce コンソールの [データ品質] ページの [会話] タブに移動します。検索クエリの 25% 以上にフォローアップの質問が 1 つ以上含まれているかどうかの重要なチェックと、会話カバレッジの目標を達成するために有効なフィルタを持つユーザー イベントのどのくらいの割合が必要かに関する推奨チェックが表示されます。
図 4. 会話型検索への対応状況の確認。
有効なフィルタと十分なユーザー イベントがあり、重要なチェックに合格した場合は、次のステップに進みます。
生成された質問の配信方法を管理するには、Vertex AI Search for commerce コンソールの [会話型の商品フィルタリングとブラウジング] ページに移動します。
生成された質問のコントロール
生成 AI は、カタログ内のインデックス登録可能な属性ごとに質問を作成します。このとき、システム属性とカスタム属性の名前と値の両方を使用します。これらの質問は LLM によって生成され、検索エクスペリエンスの向上を目的としています。たとえば、家具の種類には「屋内」と「屋外」の値を指定できます。AI は、ユーザーが探している家具の種類に関する質問を生成します。
各ファセットには、生成された質問が 1 つあります。過去の検索イベント データから得られた過去のユーザー イベントとファセット エンゲージメントに基づいて、質問が予想される頻度順に並べ替えられます。AI はまず上部の質問を確認し、属性ごとに関連する質問を見つけます。質問のリストは 1 回だけ生成されます。新しい属性が追加された場合、2 時間以内にリストに反映されます。
Search for commerce コンソールの [会話型検索とブラウジング] ページに移動します。
[会話型検索とブラウジング] ページに移動する[AI 生成の質問の管理] タブでは、使用頻度(クエリの重み付け頻度、つまり一般的なクエリで返される頻度)で並べ替えられたすべての質問を確認できます。ランキングでは、
GenerativeQuestionConfig
構成の頻度フィールドが使用されます。このフィールドは、AI 生成の質問の使用頻度で並べ替える役割を果たします。フィルタ オプションを使用して質問をフィルタできます。
チェックボックスをオンにすると、各属性の質問の表示が有効になります。
各行の末尾にある edit アイコンをクリックすると、質問の編集パネルが開きます。
一括編集を行う手順は次のとおりです。
会話に含める質問または除外する質問の横にあるチェックボックスをオンまたはオフにします。
リストの上部に表示される add [会話で許可] ボタンまたは remove [会話で禁止] ボタンをクリックします。個々の質問を編集するには、edit アイコンをクリックし、開いたペインで [会話で許可] の横にあるチェックボックスをオフまたはオンにします。
図 5. AI が生成した各質問を編集します。
会話型の商品フィルタリングで生成された質問を使用する
質問生成サービス API には、LLM の出力で生じる可能性のある不整合を軽減するためのコントロールが用意されています。これらはコンソールから管理できます。また、小売業者は、会話型商品フィルタリングを有効または無効に切り替えたり、会話型商品フィルタリングをトリガーするために必要な商品の最小数を設定したりすることで、会話型商品フィルタリングを構成することもできます。
質問を定義し、質問自体、回答の候補、会話で質問が許可されるかどうかを指定できます。個々の質問は LLM によって生成されるか、買い物客によってオーバーライドされます。コンソールでは、AI 生成の質問を確認できます。買い物客は、質問をオーバーライドしたり、会話のステータスを切り替えたりできます。質問を一括編集することもできます。
個々の質問を編集する
コントロールを使用して、個々の質問をキュレートすることもできます。会話型の商品フィルタリングを有効にする前に、この操作を行うことをおすすめします。
各質問には 2 つの選択肢があります。最後の列の edit アイコンをクリックして、ユーザーに表示される質問パネルにアクセスします。
- すべてのクエリで質問を無効にする: 質問はデフォルトで有効になっています。[会話で許可] の横にあるチェックボックスをオフにします(または再度オンにします)。このオプションを選択すると、質問が完全にスキップされます。質問がクエリされた属性に関連していない場合や、不適切と誤解される可能性がある場合(「ドレスのサイズを教えていただけますか?」という質問は、買い物客の体重を尋ねているように受け取られる可能性があります)、買い物客は質問を完全に無効にできます。
- 質問を書き換える: このペインには、AI 生成の質問、その質問が関連付けられている属性、その属性の値が表示されます。鉛筆アイコンをクリックして書き換えます。
会話型フィルタリングをオンにする
コンソールで生成 AI による質問を編集したら、会話型の商品フィルタリングをオンにできます。
会話型の商品フィルタリングを有効にするには、Search for commerce コンソールの [会話型の商品フィルタリングとブラウジング] ページに移動します。
Search for commerce コンソールの [会話型検索とブラウジング] ページに移動します。
[会話型検索とブラウジング] ページに移動する質問が生成される前に検索で返すカタログ内の商品の最小数を検討してください。この数は 2 より大きくすることはできますが、2 より小さくすることはできません。1 ページに 1 行が、会話をトリガーするのに適切な量であることがよくあります。
数を構成し、切り替えボタンを [オン] に切り替えます。一致する商品が指定した数より少ない場合は、フィルタで除外されます。
図 6. [会話型検索を有効にする] の切り替えをオンにします。
このページでは、ブロック チェックとアドバイザリ チェックのステータスに関する情報を提供します。1 つ以上のフォローアップの質問を含む十分な数の検索クエリが存在する場合、サイトでは会話型検索が有効になります。
評価とテスト
評価では、テスト検索を実行し、表示されたファセットに対して質問をテストすることで、サービング エクスペリエンスをプレビューできます。ここでは、会話型商品フィルタリングでのサービング エクスペリエンスのプレビューを確認できます。
評価とテストを行う手順は次のとおりです。Search for commerce コンソールの [評価ページ] の [検索] タブまたは [参照] タブの [評価] セクション。
Search for commerce コンソールの [評価] ページに移動します。
[評価] ページに移動[検索] または [参照] をクリックします。
[検索評価] フィールドに、アップロードしたカタログに基づいて意味のあるテストクエリを入力します。たとえば、カタログが衣料品で構成されている場合は、「靴」と入力します。
[検索プレビュー] をクリックして検索結果を表示します。
図 7. 結果をプレビューします。
会話型の商品フィルタリングが有効になっている場合、生成された質問は有効になっています。
質問生成 API
このセクションでは、質問生成 API を使用して、会話型 API を UI に統合し、質問の生成を管理して、サイトにこの機能を提供する方法について説明します。
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
ハンドラ(機能レベル):- Update: 商品の最小数を変更し、フィールドを有効にできます。
- Get オブジェクトを返します。
GenerativeQuestionConfig ハンドラ(質問レベル):
- List: 指定されたカタログのすべての質問を返します。
- 更新: 個々の質問を管理します。
- 一括更新: グループ化された質問を管理します。
サービスは、最初のクエリに基づいて意味的に適切な質問を返します。
フォローアップの質問は LLM モデルによって生成され、オーバーライドできます。質問は、検索イベント履歴を呼び出して、お客様が使用する可能性が高い順に表示されます。検索イベント履歴がない場合は、コマース検索ログがフォールバックされます。
前のクエリに基づいて異なる質問が生成されます。重みは固定されていません。LLM 生成の質問を駆動する AI はクエリから学習し、クエリごとに重み付けを変更します。たとえば、「シャツ」ではカテゴリに非常に高い重み付けが設定されますが、「XL の赤いシャツ」ではカテゴリ、サイズ、色に重み付けが設定されます。
サービス提供エクスペリエンスを構成する
会話型フィルタリング構成 API を検索 API と統合して、サービング エクスペリエンスを構成します。
この特徴の構成 API ConversationalFilteringSpec
は、会話型 API の上に構築されています。両方の API を並行して呼び出すか、次の順序で呼び出すことができます。
- 会話型 API
- Search API
ConversationalFilteringSpec
: この省略可能なフィールドはConversationalSearchRequest
に追加されましたが、会話型フィルタリング機能を使用する場合は必須です。このフィールドは、SearchRequest
フィールド、クエリ、フィルタを再利用します。また、最初のクエリの後にユーザーにフォローアップの質問を送信するためのフィールドと、クライアントとサーバー間の会話の状態を維持するための `conversation_id` も含まれています。ConversationalFilteringResult
: proto ファイルには、ConversationalSearchResponse
の会話型 CRS フローで返される必要がある追加情報が含まれています。これには、conversation_id
、refined_query
、additional_filters
、follow_up_question
、suggested_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 を呼び出し、検索結果を取得します。 - 手順 2. フォローアップの会話リクエストが会話型検索に送信されます。適切な会話フィルタリング モードで Conversational API を呼び出します。
- 手順 3. 検索結果のみを含む最初の検索レスポンス。会話型 API は、回答の候補とフォローアップの質問を返すことで、クエリを絞り込みます。
- ユーザーの選択: ユーザーが多肢選択式を選択します。
- 選択された回答フィルタが Conversational API に送信されます。
- 会話 API と検索 API は、適用されたフィルタで実行されます。
ユーザーが会話を開始したときに最初のクエリが送信される
最初のクエリは、ユーザーが Vertex AI Search for Commerce で会話を開始し、検索ボックスで dress
を検索する場合です。
dress
をクエリとして設定して(または実際のクエリ)、次の検索リクエストを作成して、Search API にリクエストを送信します。
会話型の商品フィルタリングの一環として、検索 API リクエストに変更はありません。
次の手順で Conversational API にリクエストを送信します。
dress
をクエリ(または実際のクエリ)として設定して、会話型検索リクエストを作成します。会話形式のレスポンスを取得するには、
mode
をCONVERSATIONAL_FILTER_ONLY
に設定します。DISABLED
に設定されている場合、フォローアップの質問は提供されません。会話型検索リクエストで
SearchParams
を入力します。検索パラメータは Search API 呼び出しと同じである必要があります。
Conversational API からのレスポンスは次のようになります。
レスポンスの処理方法:
conversation_id
: この ID はブラウザのセッション ストレージに保存でき、サーバーとの会話型検索を続行するために使用できます。1 人の買い物客が複数のタブを開いて複数の会話を行っている可能性があるため、conversation_id
は会話を追跡するために使用されます。refined_query
: 現在のクエリを識別します。このレスポンスを使用して Search API を呼び出し、商品結果を取得する必要があります。followup_question
: ユーザーに表示する質問を識別します。suggested_answers
: ユーザーに表示する多肢選択式解答の順序付きリスト。回答の数を減らしたい場合は、最初の N 件の結果のみを表示します。リストは、結果を表示する順序で並べ替えられます。
会話が有効になっている最初のユーザー クエリを送信する
検索が会話パラメータを返送する
会話型の商品フィルタリングでは、会話型エンゲージメントを継続するためのオプションが提供され、検索結果をより迅速に絞り込むことができます。
ユーザーの選択
検索結果が表示されたら、ユーザーは選択肢の中から回答を選択できます。
このコードサンプルは、ユーザーが多肢選択式の回答「黄色」を選択したことを示しています。正しいユーザー フィルタを適用してクエリを再度送信することで、新しい会話リクエストが Search API に送信されます。
Conversational API にリクエストを送信するには:
- セッション ストレージから
conversation_id
を復元します。 mode
をCONVERSATIONAL_FILTER_ONLY
に設定します。- ユーザーが選択した内容に応じて
user_answer
を設定します。
Conversational API から次のようなレスポンスが返されます。
レスポンスの処理方法:
- Google のレスポンスは、
additional_filter
フィールドを使用してcolor = yellow
のフィルタ チェックボックスをオフにできることを除いては、最初のクエリに対するレスポンスと同じです。また、ユーザーが選択した他のフィルタにも追加する必要があります。 - また、このフォローアップ クエリとフォローアップ検索リクエストについて Google に送信されるフィルタ フィールド イベントにも
additional_filter
を追加する必要があります。検索リクエストに適用して検索結果の商品を取得し、会話型検索リクエストに適用してフォローアップの会話を取得する必要があります。 refined_query
は、より関連性の高い商品を取得するために Search API に送信する必要があります。