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