ブラウジングは、クエリのないナビゲーション検索です。ブラウジングでは、ナビゲーション方法を使用して、エンドユーザーが選択したカテゴリまたはフィルタに一致する検索結果を表示します。ユーザー エンゲージメントと連携して使用すると、ユーザーにパーソナライズされたブラウジングを提供できます。 パーソナライズされたブラウジングでは、ユーザー インタラクションの履歴とコンテンツの機能に基づいて、ユーザー固有のリアルタイム フィードが提供されます。戦略的な管理を遵守しながら、定義された KPI の検索結果を最適化することを目的としています。たとえば、不動産ウェブサイトでは、英国のロンドンとオーストラリアのシドニーのユーザーに異なるホームページを表示できます。ショッピング ウェブサイトでは、ユーザー プロファイルに応じてカスタマイズされた結果を提供できます。
このページでは、カスタム検索データストアのブラウジング結果を取得する方法と、検索アプリを設定する際のベスト プラクティスについて説明します。
パーソナライズされたブラウジングについて
Agent Search のパーソナライズされたブラウジングでは、ニューラル ネットワークを使用して、予測されるユーザー エンゲージメントとコンバージョンに基づいて ランク付けドキュメントします。たとえば、パーソナライズされたブラウジングを使用すると、ホテル カタログのランク付けされたエントリやウェブサイトの記事を提供し、クリックまたは問い合わせの可能性に基づいてユーザーに返信できます。
パーソナライズされたブラウジングは、ユーザーのナビゲーション パターン、ドキュメントのコンテンツと機能、ユーザー コンバージョン イベントの複雑な関係を学習する高度なモデルです。重要な機能は次のとおりです。
ランク付け: モデルは、フィルタ、カスタム ランク付け、サービス管理(ブースト、プロモート、類義語など)など、構成された検索パラメータに基づいて、定義された目標に対する予測パフォーマンスに基づいてアイテムをランク付けします。
トレーニングと調整: 最初のトレーニングの後、モデルはライブのユーザー イベント ストリームを使用して継続的に調整されます。モデルは時間とともに適応し、改善されます。
多様性: モデルは、無視されたリンク、ページでの滞在時間、ジャンプ率など、操作以外のネガティブ シグナルを記録するため、多様性について暗黙的に学習します。
ブラウジングと検索の違い
次の表に、検索とブラウジングの違いを示します。
| 機能 | 検索 | ブラウジング |
|---|---|---|
| 目的 | 特定の情報を探す | コンテンツを探索して見つける |
| 例 | Google 検索で「バンクーバーのおすすめ韓国料理店」を検索する | 「レストラン > 韓国料理 > バンクーバー > 星 4 つ以上」など、カテゴリに基づいてレストランをブラウジングする |
| ユーザーの意図 | 通常は目標指向 | 探索的 |
| 開始点 | 通常は検索バーに入力するクエリまたはキーワード | 特定のウェブサイトまたはプラットフォーム(通常はメニュー、パンくずリスト、リンク、ファセットなどのナビゲーション方法を使用) |
| 方法 | キーワードまたはフレーズを入力し、検索とサービス構成を適用する | 空のクエリで検索し、検索とサービス構成を適用する |
| 結果 | 関連する結果のリスト | フィルタに一致するデータストア内のすべてのドキュメント |
ワークフローとベスト プラクティス
パーソナライズされたブラウジングは Google マネージド サービスであり、基盤となるディープ ラーニング モデルとデータ パイプラインは Google が処理します。このサービスを最大限に活用するには、検索アプリを開発する際に、主に次の技術的な責任を負います。
- データ プロビジョニング: ドキュメントとユーザー イベントの包括的なデータストアを収集して提供します。
- 目標の定義: 提供されたユーザー イベントを使用して、クリック率(CTR)、価値の高いアクション、セッションあたりの収益など、最適化する KPI を指定します。収集するユーザー イベントのタイプが目標をサポートしていることを確認してください。
- 検索パラメータ: 検索リクエストで検索パラメータとサービス管理を定義して構成します。たとえば、許可されているリスティングや記事をフィルタする日付範囲や、評価に応じてブログを並べ替えるブースト管理などです。
Agent Search 検索アプリでは、ブラウジングはクエリなしまたは空のクエリで検索することです。ブラウジング結果を取得するには、カスタム検索データ
ストアで
search メソッドを呼び出し、クエリを空のままにします。
パーソナライズされたブラウジングで最適な結果を得るための手順は次のとおりです。
正確で一貫性のあるデータを用意する:
- すべてのユーザー イベントの正確なタイムスタンプ。
- すべてのユーザー イベントで一貫したユーザー ID。
- ユーザー イベントとデータストアで一致するドキュメント ID。サイトマップを使用している場合は、その URL がユーザー イベントの URL と一致する必要があります。
- ブラウジングしたページに正確なコンテンツを表示するフィルタ。 詳細については、 ウェブサイト検索をフィルタすると 構造化データと非構造化データのカスタム検索をフィルタするをご覧ください。
ドキュメントを準備して取り込む:
- できるだけ多くの属性を使用してスキーマを定義します。属性が多いほど、パーソナライズが向上します。
- ウェブサイトをクロールする場合は、 高度なインデックス登録を有効にして、 構造化データでウェブページを拡充します。
- データを取り込むための準備の手順に沿って、取り込み用のデータを準備します。
- 検索データストアを作成して データを取り込みます。または、 検索またはブラウジングする必要があるデータを管理できるドキュメント を作成して更新します。
- ウェブサイト データにサイトマップを使用している場合は、最新のウェブページをインデックスに登録するように管理します。または、最近更新された特定のページに対して 手動更新を実行します。インデックスを最新の状態に保つと、より良い結果が得られます。
ユーザー イベントを準備して取り込む:
- 最初のモデル トレーニング用に、少なくとも 30 日分のユーザー イベントを準備します。 過去のユーザー イベントとリアルタイムのユーザー イベントのいずれかまたは両方を使用できます。リアルタイム イベントを使用すると、パーソナライズの結果が向上します。
searchイベント(ブラウジング データのキャプチャに使用)、view-itemイベント、conversionイベントを記録して共有します。- すべてのユーザー イベントには、次の情報を含める必要があります。
- 検索とブラウジングの
search、view-item、conversionなどのeventType。 userPseudoId。一貫した仮名化されたユーザー識別子です。eventTime。イベントが記録された時点の ISO 8601 タイムスタンプ(UTC)。- ドキュメント ID に一致するユーザーに表示される順序で表示される
documents.id。 - ユーザーの検索クエリを登録する
searchInfo.searchQuery。 - 「HomepageCarousel」、「Properties > VIC > Richmond」などのコンテキストを追加する
pageInfo.pageCategory。 - インプレッション リストの生成に使用されるフィルタ ロジックを記述する
filter。これは、多くの場合、pageCategoryフィールドまたはシステム理解によってキャプチャされます。
- 検索とブラウジングの
詳細については、
userEventsをご覧ください。モデル トレーニングとモデル パイプラインを有効にする:
データを準備してユーザー イベントを収集したら、Google カスタマー エンジニア(CE)にお問い合わせください。CE はデータを確認し、アプリのパーソナライズ モデルを有効にできます。
-
フィルタやランク付けの調整(ブーストやカスタム ランク付けなど)など、検索リクエストにフィールドを追加します。
データを最新の状態に保つ:
データストア内のドキュメントを最新の状態に保ち、新しいユーザー イベントをアップロードし続けます。これにより、モデルはパーソナライズされた結果を得るために、最新のドキュメントとユーザー操作にアクセスできます。
ウェブサイト データを含むアプリのブラウジング結果を取得する
API を使用して、ウェブサイト データを含むアプリのブラウジング結果を取得するには、次の操作を行います。
アプリ ID を調べます。アプリ ID をすでに保有している場合は、次のステップに進みます。
コンソールで、[AI アプリケーション] ページに移動します。 Google Cloud
[アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。
次のように、
engines.servingConfigs.searchメソッドを空のクエリまたはクエリなしで呼び出します。REST
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search", "orderBy": "ORDER_BY", "params": { "searchType": "0" }, "filter": "FILTER", "boostSpec": "BOOST_SPEC", }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。ORDER_BY: 省略可。結果の並べ替え順。並べ替えの基準となる属性は、数値として解釈できる必要があります(例:date)。詳細については、ウェブ検索結果を並べ替える をご覧ください。FILTER: 任意だが推奨。フィルタ式を使用して検索結果をフィルタリングするためのテキスト フィールド。デフォルト値は空文字列です。`filter` フィールドの使用方法について詳しくは、ウェブサイト検索をフィルタするをご覧ください。BOOST_SPEC: 省略可。ドキュメントを ブーストまたは埋め込むための仕様。値:BOOST: [-1,1] の範囲の浮動小数点。値が負の場合、結果はデモートされます(結果の下位に表示されます)。値が正の場合、結果はプロモートされます(結果の上位に表示されます)。CONDITION: ブーストを適用するドキュメントを選択するためのテキスト フィルタ式。フィルタはブール値に評価される必要があります。フィルタ式の例については、 フィルタ式の構文と高度なインデックス登録の構文をご覧ください。 構造化検索のブーストについては、検索結果をブーストするをご覧ください。
次のような切り捨てられた JSON レスポンスが返されます。 レスポンスには、検索リクエストで設定されたフィールドによって決定される順序で並べられた、項目別の検索結果が含まれます。