VertexAI Searchとは
Vertex AI Searchは検索機能とレコメンデーション機能を提供するVertex AI内のサービスです。
検索機能を使用すると、詳細な情報検索、最先端の自然言語処理、最新の大規模言語処理(LLM)の機能を組み合わせて、ユーザーの意図を理解し、最も関連性の高い検索結果を返します。
レコメンデーション機能を使用すると、ユーザーが閲覧しているコンテンツに類似したコンテンツを提案するレコメンデーション アプリをデータ全体にわたって構築できます。
Vertex AI Search のレコメンデーションは、実際にIKEAのECサイトなどでも利用されており、平均注文額が2%向上したという効果が得られているそうです。
Vertex AI Search レコメンデーション機能の構築手順
レコメンデーションまたは、検索を使用する場合、ユーザー イベントとカタログデータを取り込み、サイトで予測や検索結果を提供します。
レコメンデーションと検索の両方で同じデータが使用されるため、両方を使用する場合でも、同じデータを 2 回取り込む必要はありません。
レコメンデーション モデルを使用する場合、モデルタイプと最適化の目標(後述)に応じて、ユーザー イベントデータの要件に追加の要件が表示されます。これらの要件は、Vertex AI Search for Commerce が高品質の結果を生成するのに役立ちます。
下記がVertex AI Search のレコメンデーションを構築する大きな手順です。
(GA4やGTMは構築されていることが前提の手順としています。)
- Merchant Center を使用して商品カタログをインポートする
- 過去のユーザー イベントをインポートする
- サービスの構成、モデル、コントロールを作成する
- モデルのトレーニングとチューニングに時間をかける
- サービス構成をプレビューしてテストする
- (省略可)A/B テストを設定する
- 構成を評価する
それぞれポイントを説明していきます。
1. Merchant Centerを使用して商品カタログをインポートする
レコメンド機能を使用するためには、商品カタログが必要です。直接インポートすることもできますが、Merchant Center にリンクするとカタログのインポートに必要な手順が削減されます。
Merchant Center スキーマを使用すると、BigQuery から 1 回限りの手順として、Merchant Center からカタログデータを一括インポートできます(レコメンデーションのみ)。
ショッピング広告やその他の Google サービスで店舗と商品データが利用できるようになるツール
Merchant Centerからの一括インポートの手順
- Merchant Center の転送を使用して、BigQueryへの転送を設定
(Google Merchant Center の商品テーブル スキーマを使用する) - カタログデータを BigQuery から Vertex AI Search for Commerce にインポート
このようにBigQueryに一度カタログデータを吐き出すことで、BigQueryからVertex AI Searchにデータを連携するような形で、商品カタログをインポートすることができます。
過去のユーザーイベントをインポートする
過去のユーザー イベント データを提供すると、サイトから十分なユーザー イベント データが収集される間の数か月を待つことなく、モデル トレーニングを開始できます。
ユーザーデータをインポートする方法については、BigQuery から Google アナリティクス 360 と GA4 イベントをインポートするユーザー イベントのインポートに関するドキュメントから確認ができます。
一つ注意点として、正確な予測が提示できるようにするために、レコメンドモデルタイプによって、各モデルのデータ要件が存在します。こちらを満たすデータ量が取得されていないと、レコメンドモデルの作成ができないのでご留意ください。
サービスの構成、モデル、コントロールを作成する
サービス構成とは、どの「モデル」を使ってレコメンデーションを生成するかを指定する設定です。また、生成されたレコメンデーションに対して、多様性(類似した商品ばかりにならないようにする)、価格による再ランキングなどの後処理オプションを適用するかどうかを設定します。
サービス構成を作成する場合、追加するモデルを選択します。サービス構成は、レコメンデーションや検索結果を表示する際にサイトによって呼び出されます。サービス提供時に、サービス構成に関連付けられたモデルが参照され、生成するレコメンデーションが決定されます。
モデルは、プロジェクトごとに最大 20 個作成できます。また、いつでも最大 10 個のモデルを有効(一時停止されていない)にできます。
レコメンデーションモデルのモデルタイプは次の通りです。
- 関連商品のおすすめ
- よく一緒に購入される商品(ショッピング カートの拡大)
- あなたへのおすすめ
- 似ている商品アイテム
- もう一度購入
- セール中
- Recently Viewed
- ページレベルの最適化
各モデルタイプによって、最適化の指標、利用可能なカスタマイズ、デプロイに対応しているページなどが異なるため、詳細は下記のドキュメントをご確認いただければと思います。
モデルのトレーニングとチューニング
小売業向け Vertex AI Search は、自身のモデルに対して提供した入力データを使用して、トレーニング用のハイパーパラメータを調整します。
調整には 2~4 日かかりますが、その間もモデルは通常どおり動作します。調整の費用の詳細については、料金をご覧ください。
モデルの調整頻度を設定する
モデルは定期的に調整することをおすすめします。データは変化し、また顧客の行動は 1 年を通じて異なるため、この調整によりモデルのトレーニングを最適化できます。また、主要な内部モデル アップグレードが、モデルの調整後にのみ適用できる場合もあります。
モデルを作成するときに、3 か月ごとに自動的に調整するように設定するか、手動での調整を選択できます。選択した設定に関係なく、モデルは作成後 1 回、自動的に調整されます。
サービス構成をプレビューしてテストする
モデルが有効になったら、サービス提供構成のレコメンデーションや検索結果をプレビュー、テストして、設定が適切に機能していることを確認します。コントロールを作成するか、既存のコントロールを使用して新しいサービス構成を追加し、アプリケーションをテスト バージョンにポイントしてパフォーマンスを比較できます。
ルールを除外して、またはルールを含めて、本番環境と別のテスト サービング構成を [Evaluate] ページでテストできます。
ポイント
Vertex AI Search の レコメンド機能で活用可能なデータはカタログとイベントデータのみ
Vertex AI Searchのレコメンドモデルの学習に必要とするデータは、商品カタログデータと、イベントデータの2種類のみです。
これらのデータさえ揃っていれば、簡単にレコメンドモデルの構築が可能であるということですが、一方で自社で持つ独自のデータなどもレコメンドモデルの学習に活用したい場合は、Vertex AI Searchでは十分でないため、別のサービスを使用することを検討する必要があります。
料金について
レコメンデーションには無料クレジットで試用が可能になっています。$600 相当の無料クレジットをもらうことができ、無料クレジットは登録時に自動的に付与され、登録後 6 か月で有効期限が切れます。
トレーニングの費用(1 ノード、1 時間あたり)は、モデルがアクティブにトレーニングされている場合、またはトレーニングを再開するためのリクエストを送信している場合、毎日発生します。
例 A
1 か月の予測リクエストに対して、各料金階層がどのように適用されるかを説明します。
ある月に、大規模な販売店のアプリケーションから、1,000,000,000 件の予測リクエストがありました。このアプリケーションは 3 つのモデルをトレーニングし、モデルはデフォルトで 1 日に 1 回、自動的に再トレーニングされます。これにより、1 か月あたりのモデルのトレーニングは約 500 ノード時間になります。
このくらいの規模感だとトレーニングには、下記くらいの料金がかかります。
- トレーニング費用 = 500 ノード時間 × $2.50 = $1,250
- チューニング費用 = 100 ノード時間 × $2.50 = $250
この月の予測、トレーニング、チューニングの合計費用は $127,300 となります。
例B
量が少ない場合のユースケース
販売店が 1 か月あたり 10,000,000 件の予測リクエストを行い、1 日あたり 1 つのモデルがトレーニングされて、デフォルトにより 1 日あたり 1 回、自動的に再トレーニングされます。これにより、1 か月あたりのモデルのトレーニングは約 150 ノード時間になります。
トレーニングとチューニングの費用は、次のような計算になります。
- トレーニング費用 = 150 ノード時間 × $2.50 = $375
- チューニング費用 = 30 ノード時間 × $2.50 = $75
この月の予測、トレーニング、チューニングの合計費用は $3,150 となります。
レコメンデーションを表示する
Vertex AI Searchはランク付けされた商品 ID のリストを返します。画像やテキストを使用して、ウェブサイトに結果をレンダリングするのは利用者側(フロントエンド)の責任になります。
レコメンデーションを取得するには、予測predict
REST メソッドに対して POST
リクエストを行い、以下のように、適切なリクエスト本文を指定します。
bodyで指定しているのは主にこのような内容です。
-
"filter": "FILTER_STRING"
: (省略可能) 返される可能性のある商品をフィルタリングするための条件を指定します。例えば、特定のカテゴリの商品のみを推奨するようにフィルタリングできます。FILTER_STRING
の具体的な構文は、推奨事項のフィルタリング -
"validateOnly": false
: (省略可能) リクエストを検証するだけで、実際にはレコメンデーションを返さないようにするかどうかを指定します。false
に設定すると、実際のレコメンデーションが返されます。テスト目的などでtrue
に設定することがあります。 -
"userEvent"
: レコメンデーションリクエストを開始したユーザーのアクションに関する情報を含むオブジェクトです。このuserEvent
は記録されず、レコメンデーションリクエストに対してコンテキストを提供するためだけに使用されます。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "filter": "FILTER_STRING ", "validateOnly": false, "userEvent": { "eventType": "detail-page-view", "visitorId": "VISITOR_ID ", "userInfo": { "userId": "USER_ID ", "ipAddress": "IP_ADDRESS ", "userAgent": "USER_AGENT " }, "experimentIds": "EXPERIMENT_GROUP ", "productDetails": [{ "product": { "id": "PRODUCT_ID " } }] } }' \ _https://retail.googleapis.com/v2/projects/PROJECT_ID /locations/global/catalogs/default_catalog/servingConfigs/SERVING_CONFIG_ID :predict
-
"eventType": "detail-page-view"
: ユーザーが行ったイベントのタイプを指定します。この例では、商品詳細ページの閲覧 (detail-page-view
) ですが、他のイベントタイプ(例:home-page-view
,category-page-view
,add-to-cart
,purchase
など)も指定できます。コンテキストとして最も関連性の高いイベントタイプを指定することが重要です。 -
"visitorId": "VISITOR_ID"
: (必須) レコメンデーションをリクエストしているユーザーの一意の識別子(ビジターID)を指定します。Google アナリティクス 360 のユーザーイベントをインポートした場合は、Google アナリティクスのクライアント ID を設定します。 -
"userInfo"
: ユーザーに関する追加情報を含むオブジェクトです。-
"userId": "USER_ID"
: (省略可能) ログインしているユーザーの一意の識別子(ユーザーID)を指定します。ログインしていない場合は省略できます。 -
"ipAddress": "IP_ADDRESS"
: (省略可能) ユーザーの IP アドレスを指定します。 -
"userAgent": "USER_AGENT"
: (省略可能) ユーザーのユーザーエージェント文字列を指定します。
-
-
"experimentIds": "EXPERIMENT_GROUP"
: (省略可能) ユーザーが属する A/B テストのグループ ID を指定します。A/B テストを実施していない場合は省略できます。 -
"productDetails"
: (省略可能) 現在閲覧している商品など、コンテキストとなる商品の詳細情報を含む配列です。-
"product"
: 商品の詳細情報を含むオブジェクトです。"id": "PRODUCT_ID"
: (必須) コンテキストとなる商品の一意の識別子(商品ID)を指定します。例えば、商品詳細ページでレコメンデーションを表示する場合、現在表示している商品の ID をここに指定します。
-
最後に
いかがでしたでしょか。
本記事では、Vertex AI Searchを活用したレコメンデーションの構築方法についてご説明させていただきました。
Vertex AI Searchを使用すれば、商品カタログとGA4データの2つのみ用意すれば簡単にレコメンドを構築することができることが大きな魅力です。
本記事が、読者の皆様のお役に立てれば幸いです。
コメント