これは、Recommendations AI、Retail Search、新しい Retail コンソールに関するドキュメントです。制限付き一般提供フェーズで Retail Search を使用するには、Cloud 営業担当者にお問い合わせください

Recommendations AI のみを使用している場合は、Recommendations コンソールを引き続き使用し、Recommendations AI のドキュメントをご覧ください。

カタログとカタログ情報

このページでは、カタログ情報の作成とカタログ データの入力に関するベスト プラクティスについて説明します。

概要

販売店にインポートするカタログデータは、結果として得られるモデルの品質に直接影響するため、Retail API で提供される結果の品質に影響します。一般に、提供できる正確で特定のカタログ情報が多いほど、モデルの品質が高くなります。

カタログを最新の状態に保つ必要があります。カタログの変更は必要に応じて何度でもアップロードできます。変更頻度が高いカタログの場合は、毎日アップロードするのが理想的です。既存の商品アイテムをアップロード(パッチ適用)できます。この場合、変更されたフィールドのみが更新されます。カタログ情報のアップロードは無料です。詳細については、カタログを最新の状態に保つをご覧ください。

カタログのブランチ

カタログのブランチを使用すると、オフラインでアップロードした新しいデータをサイトで公開する前にテストできます。

Retail API では、012 として識別される最大 3 つのブランチを使用できます。ライブサイトは、カタログデータ用に default_branch を指しています。setDefaultBranch または Cloud Console の [データ] タブを使用して、現在ライブ default_branch のブランチを指定します(デフォルトではブランチ 0 に設定されます)。サイトはカタログ データ用に default_branch を指しているため、

たとえば、現在 default_branch にブランチ ID 0 が設定されていると、サイトではそのブランチにアップロードしたカタログデータを使用します。新しいカタログデータをブランチ 1 にアップロードしてプレビューできます。カタログが正しくアップロードされていることを確認したら、ブランチ 1 をライブ default_branch として切り替えることができます。

プロダクト

カタログは、商品オブジェクトのコレクションです。

必須の商品情報

次のフィールドは必須です。カタログに商品アイテムを作成するときに、値を指定する必要があります。また、内部商品データベースで使用されている値に対応している必要があります。これらの値はモデルのトレーニングで使用されるため、表される商品を正確に反映する必要があります。

他のフィールドも必要になることがあります。Product リファレンス ページで、すべての商品フィールドの完全なリストをご覧ください。

提供するすべての商品情報は、レコメンデーションと検索結果の品質向上に使用できます。できるだけ多くの項目を入力してください。

項目
name 商品の完全で一意のリソース名。import を除くすべての「商品」メソッドに必須です。インポート時に、名前は自動的に生成されます。手動で指定する必要はありません。
id 商品データベースで使用される商品 ID。ID フィールドはカタログ全体で一意である必要があります。ユーザー イベントを記録する場合に同じ値が使用されます。また、predict メソッドと search メソッドによって同じ値が返されます。
title 商品データベースの商品タイトル。UTF-8 でエンコードされた文字列。1250 文字以内で指定します。

プロダクト属性

Product で事前定義のシステム属性(ブランド、色、サイズなど)の値を指定することを強くおすすめします。また、Product.attributes で定義したカスタム属性を含めることもできます。

Retail Search を使用している場合、Product.retrievableFields で取得可能としてマークすると、検索レスポンスに商品が含まれます。これらは、フィルタリングやファセットなど、他の Retail Search 機能に使用できます。

商品レベルの使用

初めてカタログをインポートするときは、プライマリ アイテムのみを提供するか、プライマリ アイテムとバリアント アイテムを提供するかを指定する必要があります。

  • プライマリ アイテムは、Retail API が予測や検索結果で返すものです。個別(SKU レベル)のアイテム、または類似アイテムのグループ(SKU グループ)を指定できます。デフォルトでは、Retail API は、プライマリ アイテムのみをインポートするように構成されています。
  • バリアント アイテムは、プライマリ商品のバージョンです。バリアントは個々(SKU レベル)のアイテムのみになります。たとえば、プライマリ商品が「V ネックシャツ」の場合、バリアントは「ブラウンの V ネックシャツ、サイズ XL」と「ホワイトの V ネックシャツ、サイズ S」になることがあります。プライマリとバリアントは、「親」アイテムと「子」アイテムとして説明されることがあります。バリアントのインポートはオプションです。

カタログのインポート中に、Catalog.patch メソッドを使用して商品レベルを設定します。次に例を示します。

curl -X PATCH 
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
--data '{ "productLevelConfig": { "ingestionProductType": "PRODUCT-TYPE", "merchantCenterProductIdField": "PRODUCT-ID-FIELD" } }'
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog"

実装に最適なプロダクト レベルを決定するには、カタログのデータとウェブサイトのロジックを確認する必要があります。ユーザー イベントのデータを取得する際に利用できる商品 ID は何か。予測または検索結果と一緒に返される効果的な商品 ID は何か。これらの ID をどのように比較し、相互に関連付けるかということを確認します。

Merchant Center からインポートするかどうかに応じて、適切な手順を使用します。

Merchant Center からインポートするための商品レベルを決める

Merchant Center からカタログデータをインポートする際、Retail API は ingestionProductType を使用することで、プライマリまたはバリアントのどちらとしてアップロードするかを識別できます。また、merchantCenterProductIdField フィールドを使用して、Merchant Centeroffer_id または item_group_id のどちらを商品 IDとして使用するかを指定します。

カタログのデータとウェブサイトのロジックを確認して、次の質問に答えてください。

  • カタログにプライマリとバリアントの両方がありますか?
  • その場合、ユーザー イベントデータをキャプチャすると、どのレベルのアイテムを使用できますか?
  • 結果で返す必要があるアイテムの種類は何ですか?

次のことを確認します。

  1. カタログには 1 つのアイテムレベルしかない。これは、次のいずれかを意味する可能性があります。

    • すべての商品とイベントが SKU レベルであり、SKU レベルの予測が必要である。
    • すべての商品とイベントがグループレベルであり、グループレベルの予測が必要である。

    この場合、プライマリ アイテムのみでインポートします。これはデフォルトのインポート設定です。

  2. グループレベル(プライマリ)予測が必要だが、Merchant Center の商品は SKU レベルである。この場合、インポートの決定は、イベントの記録方法によって異なります。

    1. イベントはグループレベルで取得されます。その場合は、インポート中に次の設定を使用します。

      ここで、複数の Merchant Center の商品が同じ Merchant Center の item_group_id を持ち、販売店によってそれらの商品の 1 つだけがプライマリ商品としてインポートされ、item_group_id商品 ID として使用されます。この場合、item_group_id が含まれない商品はインポートできません。記録されたイベントは、プライマリ(グループレベル)のプロダクト ID を参照する必要があります。

    2. イベントは SKU レベルで取得されます。その場合は、インポート中に次の設定を使用します。

      販売店は、商品をバリアントとしてインポートし、Merchant Center offer_id商品 ID として使用します。記録されたイベントは、バリアント(SKU レベル)の商品 ID を参照する必要があります。

Merchant Center を使わずにインポートするための商品レベルを決める

primaryProductId の値はすべての商品に適用するか、どの商品にも適用しないかのどちらかとなります。一部の商品に設定され、他の商品に設定されていない primaryProductId でカタログデータをインポートできません。

  1. カタログに 1 つのアイテムレベルのみがある場合、次のいずれかを意味する可能性があります。

    • すべての商品とイベントが SKU レベルであり、SKU レベルの結果が必要である。
    • すべての商品とイベントがグループレベルであり、グループレベルの結果が必要である。

    この場合、プライマリ アイテムのみでインポートします。これはデフォルトの推奨インポート設定です。

  2. イベントと商品が SKU レベルである場合は、グループレベルの結果を取得できます。インポート時に、ingestionProductTypevariant に設定します。

グループレベルのイベントとプロダクトだけの場合、SKU レベルの予測と検索はサポートされていません。

将来的に Merchant Center からカタログデータをインポートする場合は、Merchant Center のインポートの説明に従ってデータを確認し、正しい選択を行ってください。この構成を変更するには、カタログを削除して、もう一度アップロードする必要があります(商品レベルの構成の変更をご覧ください)。

カタログのデータ品質指標

カタログデータの検索品質のモニタリングに役立てるために、Retail は一連の品質ルールに照らして商品データを評価します。各品質ルールを満たす商品の割合は [小売データ] ページで確認できます。

次の表に、Retail が商品データの評価に使用する品質指標を示します。

カタログの品質指標 品質ルール
URI が存在し、アクセス可能である プロダクトに有効な Product.uri がある。URI はアクセス可能で、ドメインと一致する必要があります。 Cloud Retail Search では、この URI でクロールされたウェブシグナルを使用して、検索品質を向上させています。
時間適合性を満たしている Product.availableTime は現在の時刻より前、Product.expireTime は現在の時刻より後です。 検索できるのは、時間の適合性を満たす商品のみです。
検索可能な属性が存在する 商品で少なくとも 1 つの attribute が検索可能に設定されています。 検索可能としてマークされたカスタム属性は、テキストクエリで検索できます。
説明がある 商品の Product.description が空ではありません。 包括的な説明は検索品質の向上に役立ちます。
タイトルは 2 単語以上で構成されている Product.title が 2 単語以上で構成されています。 包括的なタイトルは検索品質の向上に役立ちます。
画像のあるバリアントがある variant 商品には少なくとも 1 つの Product.image があります。すべての商品が primary レベルであれば、この指標は無視してかまいません。 この指標は参考情報であり、検索品質には影響しません。
価格情報ありのバリアントがある variant 商品で Product.priceInfo が設定されています。すべての商品が primary レベルであれば、この指標は無視してかまいません。 この指標は参考情報であり、検索品質には影響しません。

小売スキーマ

BigQuery からカタログをインポートするときは、以下の Retail スキーマを使用して、正しい形式の BigQuery テーブルを作成し、カタログデータとともに読み込みます。それから、カタログをインポートします。