このページでは、カタログ情報の作成とカタログ データの入力に関するベスト プラクティスについて説明します。
概要
カタログは、商品オブジェクトのコレクションです。
Vertex AI Search for Commerce にインポートするカタログデータは、結果として得られるモデルの品質に直接影響するため、検索とレコメンデーション結果の品質に影響します。一般に、提供できる正確で特定のカタログ情報が多いほど、モデルの品質が高くなります。
カタログを最新の状態に保つ必要があります。カタログの変更は必要に応じて何度でもアップロードできます。変更頻度が高いカタログの場合は、毎日アップロードするのが理想的です。既存の商品アイテムをアップロード(パッチ適用)できます。この場合、変更されたフィールドのみが更新されます。カタログ情報のアップロードは無料です。詳細については、カタログを最新の状態に保つをご覧ください。
カタログのブランチ
検索を含むカタログのブランチ
検索を使用する場合、カタログ ブランチを使用して、サイトでライブにする前にオフラインでアップロードした新しいデータをテストできます。
0、1、2 として識別される最大 3 つのブランチを使用できます。ライブサイトは、カタログデータの default_branch を参照します。setDefaultBranch またはコマース向け検索コンソールの [データ] タブを使用して、公開中の default_branch のブランチを指定します(デフォルトではブランチ 0 に設定されます)。次に、default_branch が指すブランチによって提供されるカタログデータを使用します。
たとえば、default_branch にブランチ ID 0 が設定されていると、サイトではそのブランチにアップロードしたカタログデータを使用します。新しいカタログデータをブランチ 1 にアップロードしてプレビューできます。カタログが正しくアップロードされていることを確認したら、ブランチ 1 をライブ default_branch として切り替えることができます。
カタログ キャッシュは、ブランチの切り替え後、更新されるまでに最大 30 分を要する場合があります。
レコメンデーションを使用する場合は、ブランチ切り替え時の更新の遅延のために、デフォルトのブランチのみを使用します。ブランチ間のデータ差が大きい場合、更新の遅延は予測結果に悪影響を及ぼす可能性があります。
必須の商品情報
次のフィールドは必須です。カタログに商品アイテムを作成するときに、値を指定する必要があります。また、内部商品データベースで使用されている値に対応している必要があります。これらの値はモデルのトレーニングで使用されるため、表される商品を正確に反映する必要があります。
他のフィールドも必要になることがあります。Product リファレンス ページで、すべての商品フィールドの完全なリストをご覧ください。
提供するすべての商品情報は、最適化案と検索結果の品質向上に使用できます。できるだけ多くの項目を入力してください。
| 項目 | 注 |
|---|---|
name
|
商品の完全で一意のリソース名。import を除くすべての Product メソッドに必須です。インポート時に、名前は自動的に生成されます。手動で指定する必要はありません。
|
id
|
商品データベースで使用される商品 ID。ID フィールドはカタログ全体で一意である必要があります。ユーザー イベントを記録する場合に同じ値が使用されます。また、predict メソッドと search メソッドによって同じ値が返されます。 |
title
|
商品データベースの商品タイトル。UTF-8 でエンコードされた文字列。1250 文字以内で指定します。 |
categories
|
商品カテゴリすべての商品に少なくとも 1 つのカテゴリを割り当てる必要があります。商品が複数のカテゴリに属している場合は、カテゴリごとにフィールドを繰り返します。値は、長さの上限が 5,000 文字の空でない UTF-8 でエンコードされた文字列にする必要があります。完全なカテゴリパスを常に指定します(例: ["Sports & Fitness > Athletic Clothing > Shoes"])。 |
カタログのカテゴリ
このセクションでは、カタログの構造と、分類とフィルタリングで使用するための指定方法について説明します。
カタログの構造
カタログの categories フィールドには、各商品の最も詳細なカテゴリパスを含める必要があります。親カテゴリは必須ではなく、含めるべきではありません。
カタログの構造の例を次に示します。
- 正しい例:
categories: ["Flowers, Cards, Occasion > Seasonal Items > Christmas"] - 正しくない例:
categories: ["Flowers, Cards, Occasion", "Flowers, Cards, Occasion > Seasonal Items", "Flowers, Cards, Occasion > Seasonal Items > Christmas"]
親カテゴリ
特定の商品の上位カテゴリは、categories フィールドに含めないでください。ブラウジングのフィルタリングは、他のカスタム属性を使用して処理する必要があります。
カテゴリの命名
カテゴリ名は、誤ったキーワードが導入されるのを防ぎ、パフォーマンスを向上させるために慎重に選択する必要があります。より具体的で正確な用語を使用すると、関連性が高まり、問題が軽減されます。
- 推奨: 冷凍食品 > 冷凍フルーツ
- 非推奨: [冷凍フルーツ、野菜] > [冷凍フルーツ]
プロジェクト固有のカタログレベルの構造
言語ごとに 1 つのカタログを作成します。複数の国で事業を運営している場合は、同じカタログを使用して、さまざまな国で検索結果を提供できます。
国をまたいで同じ通貨で、ローカル在庫に基づいて決定された価格を指定します。国によって価格が異なる場合は、国ごとにローカル在庫を作成します。そこで価格を指定します。
検索結果を最適化するには、各国の名前を SearchRequest.entity と UserEvent.entity として指定します。国エンティティはランキング目的でのみ使用します。
プロダクトの構造
Vertex AI Search for Commerce で商品カタログを管理する際は、プライマリ商品とバリエーション商品で属性がどのように処理されるかを理解することが、効果的な検索とレコメンデーションに不可欠です。商品 SKU の指定によってカタログの階層が決まります。
商品の指定タイプ
プロダクトの指定タイプは次の 3 つです。
プライマリ アイテムまたは親アイテムは、レコメンデーションまたは検索結果で返され、類似アイテムの論理コンテナまたはグループとして機能します。プライマリは、個別(SKU レベル)のアイテムと類似アイテムのグループ(SKU グループ)にすることができます。
バリエーション アイテムまたは子アイテムは、SKU グループのプライマリ商品の特定の個別バージョンです。たとえば、プライマリ商品が「V ネックシャツ」の場合、バリエーションは「ブラウンの V ネックシャツ、サイズ XL」と「ホワイトの V ネックシャツ、サイズ S」になることがあります。
コレクション アイテムは、ネックレス、イヤリング、指輪からなるジュエリー セットなど、メイン商品またはバリエーション商品をまとめたものです。商品やバリエーションと同様の階層構造で、コレクションは関連するメイン商品をグループ化します。顧客が直接購入することはできず、広く使用されておらず、検索でのみ使用できます。
商品分類階層
商品単位の 3 つのタイプを使用すると、主に次の 3 つの商品分類階層ができます。
- Primary-variant: ほとんどの場合、プライマリは(共通の)情報のプレースホルダにすぎず、バリエーションが実際に購入できる SKU です。たとえば、T シャツは、プライマリと対応するバリエーションのセットとして階層的に構造化したほうがよいでしょう。各バリエーションは個々の SKU(サイズごとに 1 つ)を表し、各プライマリ アイテムは SKU のグループを表します。各 SKU は、1 つの全体的な T シャツ スタイルの異なるサイズです。SKU 構造によるこの編成により、検索結果とレコメンデーションのパネルにさまざまな T シャツのスタイルを表示できます。これにより、購入者は特定のプライマリ(スタイル)をドリルダウンして、購入するバリエーション(サイズ)を選択できます。
- プライマリのみ: これらの商品の指定タイプでは、食料品はプライマリ商品としてカタログに登録することをおすすめします。各プライマリ商品は、
"bananas, fresh"などの単一 SKU の商品で構成されます。 - コレクション: コレクションは、顧客が購入する可能性のある関連商品をグループ化します。再ランキング モデルでこれらを正確に表すために、Vertex AI Search for commerce には購入をクレジットするロジックがあります。例: ベッドシーツ セットの商品をクリックし、そのコレクションのメイン商品をカートに追加するか購入する。コレクションがその購入に貢献したとみなされ、モデルはコレクションの人気度と価値を正確に表します。
バリエーションがある商品
バリエーションのある商品は、プライマリ バリエーションとして構造化します。これには、次のようなメリットがあります。
- 検索ページには、エンドユーザーに表示できるさまざまな結果が表示されます。そうでない場合、バリエーションがメインの商品として扱われると、検索結果ページが同じ商品で埋め尽くされます。
- 特定のバリエーションのエンゲージメントが高い場合、プライマリとバリエーションのランキングが上がるため、商品のランキング スキームがより充実しています。これにより、ランキングの再調整と収益の最適化に役立ちます。
- カタログのメンテナンスの容易さ。サイズのみが異なる商品のグループに対して属性の変更がある場合は、複数のメインを変更するのではなく、メインレベルで属性を変更するなど、メインとバリエーションの構造を使用して変更できます。
- バリアント ロールアップキーと取得可能なフィールドの API 機能と検索レスポンス フィールドは、バリアントでのみサポートされています。
- 検索レスポンスには、バリエーションの詳細情報と、メインの最小限の詳細情報が含まれます。そのため、検索レスポンスは常に詳細情報を追加して拡張または拡充する必要があります。この詳細情報は、取得可能としてマークされている場合、Vertex AI Search for Commerce から返されます。
商品カタログの設定
商品カタログを計画する際は、プライマリのみ、プライマリとバリエーション、またはその両方の組み合わせとして指定する商品を決定する必要があります。商品の SKU 構造の観点から考えてみましょう。商品はプライマリ アイテムにすることができます。プライマリ アイテムには、バリエーションがある場合があります。
商品の SKU の指定方法に応じて、商品カタログの設定オプションを検討してください。
- SKU を個別の検索結果またはレコメンデーションとして表示する: SKU = プライマリ
- SKU は類似 SKU のグループに属している必要がある: SKU = バリエーション、SKU のグループ = プライマリ
- 両方を組み合わせる: SKU = プライマリ、SKU = バリエーション、SKU のグループ = プライマリ
商品詳細ページにオプション、サイズ、色の選択ツールが表示されている場合、通常、これらのオプションはバリエーションとして商品カタログにアップロードされます。サイズや色などの属性が異なる同じ種類の商品を、1 つの検索結果として表示するか、別々の検索結果として表示するかを検討します。たとえば、書籍の場合、同じ書籍のハードカバー SKU とソフトカバー SKU を個別の検索結果として表示するか(SKU = プライマリ)、1 つとして表示するか(SKU = バリエーション、SKU のグループ = プライマリ)を決定します。
商品カタログを設定する際は、レコメンデーションと検索結果ではプライマリ アイテムのみが返されることに注意してください。
最小限のプライマリ商品
カタログにプライマリとバリアント(SKU グループと SKU)の両方が必要であるものの、現時点で SKU しかない場合は、SKU グループ用のプライマリを作成する必要があります。これらのプライマリは仮想プライマリまたは偽プライマリと呼ばれることもあります。
これらのプライマリには、最小限の情報(id、title、categories)のみを含める必要があります。
type が指定されていない場合、商品タイプはデフォルトでプライマリになります。インポートする場合は、name を指定する必要はありません。詳細については、前のセクションの必須の商品情報をご覧ください。
カタログのインポート
カタログが Cloud Storage、BigQuery、またはその他のストレージにある場合は、一括データ インポートを行います。
カタログをアップロードする方法について詳しくは、カタログ情報をインポートするをご覧ください。
商品 URL の正確性
product.uri フィールドは、商品詳細ページに直接リンクしている正規 URL です。一般公開されているクロール可能な URI であり、ログインや認証の壁の背後にない必要があります。これは、バックエンドが URI ウェブページをクロールして、関連性と人気度のスコアリングに使用される情報を可能な限り多く取得するためです。バックエンドでは、バックリンクなど、ウェブ上で URI がどのように操作されたかも判断されます。すべてのプロダクト URI でトップレベル ドメイン名が同じであること。
複数のバナーサイトに同じ商品が掲載されている場合は、マルチエンティティ機能の使用をご検討ください。この件については、アカウント チームにお問い合わせください。
Vertex AI Search for Commerce は、商品 URL を使用して商品説明を拡充します。商品カタログと実際のサイトで異なる URL を使用する場合は、2 つの URL が同じ商品を参照し、ほぼ同じ情報が含まれていることを確認してください。
商品 URL を使用すると、カタログは次のように強化されます。
- 商品データの拡充: 小売業向け Vertex AI Search は、商品の URI(ウェブ上の各商品の正確な場所(URL)の背後にある一意のリソース識別子)をクロールして、補足情報を抽出します。このプロセスは、リンクされたウェブページから追加の詳細とシグナルを取得するのに役立ちます。URI クロールを通じて得られた商品に関する深い理解は、カタログのデータの品質に直接貢献します。
- 検索の品質と関連性を向上させる: クロールされた URI から収集されたウェブシグナルを使用して、検索の品質を向上させます。バックエンドでは、クロールされた情報(ユーザーがバックリンクをクリックしたときなど、ウェブ上で URI がどのように操作されたかなど)が、検索結果の関連性と人気度のスコアリングに使用されます。
- モデル トレーニングの基盤を提供する: プロダクト ID、タイトル、カテゴリ階層、価格に加えて、URL はモデル トレーニングの入力として使用される主なフィールドの 1 つと見なされます。
商品 URL のメリットを最大限に活用するには、次のベスト プラクティスに準拠してください。
- リンク先のウェブページは一般公開されており、正しく読み込まれる必要があります。ログインや認証の壁の背後に配置することはできません。
- 各 URI は固有であり、常に正しい商品のウェブページを指している必要があります。コンテンツは、カタログ内の商品情報を正確に反映している必要があります。すべてのプロダクト URI で同じトップレベル ドメイン名を維持します。
商品在庫
商品在庫には以下が含まれます。
価格(現在の価格と元の価格の両方)
在庫状況(在庫あり、在庫なし、入荷待ち、予約済みなど)
利用可能な数量
フルフィルメント情報(店舗受け取り、店舗宛て出荷、翌日配送など)
在庫には、商品レベルとローカル レベルの 2 つのレベルがあります。
商品レベルの在庫
オンラインでのみ販売する小売業者の場合、在庫は商品レベルで指定されます。 価格、在庫状況、その他の在庫データは、カタログ内の各商品に設定されます。
在庫データの保守方法など、商品レベルの在庫の詳細については、Vertex AI Search for Commerce の在庫を更新するをご覧ください。
ローカル在庫
実店舗とオンライン ショップの両方を運営する小売業者は、店舗ごとに在庫情報を保持する必要があります。そのために使用するのがローカル在庫です。
ローカル在庫の保存に使用できる商品フィールドは 2 つあります。どちらのフィールドにも、関連する在庫情報を含むロケーション(場所 ID)のリストが含まれます。
Product.fulfillmentInfo。店舗の場所ごとの受け取りと配送方法
Product.localInventories。 店舗の場所ごとの価格情報、商品属性、受け取り方法、配送方法
店舗レベルの情報には、これらのいずれかまたは両方のフィールドを使用します。
ローカル在庫の詳細については、Vertex AI Search for Commerce のローカル在庫を更新するをご覧ください。
プライマリ / バリアント / 広告枠の構造
primary-variant-inventory データ構造は、メイン商品、バリエーション商品、ローカル在庫商品で構成されます。
メインの商品: メインの商品データは価格なしで保存されます。
バリエーション商品(全国で最低価格): たとえば、メインのバリエーション(色、サイズ)は全国で最低価格である必要があります。バリエーションの価格データはメインの商品データにロールアップされ、メインの価格はランキングの目的で使用されます。地域固有の価格は無視されます。
ローカル在庫(地域または店舗固有の価格): 配信時の再ランキングでローカル在庫の価格情報を使用する
メイン商品の属性: メイン商品には、関連付けられているすべてのバリエーションに共通する属性のみを含める必要があります。
商品の在庫状況の正確性
在庫状況フィールドは、商品の在庫状況が変化すると、在庫更新システムによって設定されます。IN_STOCK 状態と OUT_OF_STOCK 状態のすべてのプロダクトを追跡します。
商品の大部分が OUT_OF_STOCK の場合、検索レスポンスには在庫切れの商品が多数含まれ、フィルタを追加するとリコール数が減少します。商品の在庫が切れているにもかかわらず、カタログの状態が IN_STOCK の場合、ユーザーには商品が購入可能と表示されますが、購入時やカートに追加する際に問題が発生する可能性があります。これは、モデルのトレーニングよりもカスタマー エクスペリエンスに大きな影響を与えます。patchProduct API または readMask を使用したインポート API を使用して、Product.availability フィールドをできるだけ最新の状態に保ちます。
商品スキーマ
BigQuery からカタログをインポートするときは、次のコマース向け Vertex AI Search 商品スキーマを使用して、正しい形式の BigQuery テーブルを作成し、カタログデータとともに読み込みます。それから、カタログをインポートします。
カスタム属性ではなく組み込みフィールドを使用する
商品情報スキーマに含まれていないその他のすべての商品属性には、Product.attributes(カスタム属性)を使用します。
タイトル、説明、ブランドなどの組み込みの商品フィールドは、カスタム属性よりも検索可能性とインデックス登録可能性に大きな影響を与えます。
つまり、バックエンドはカスタム属性よりも組み込みフィールドをより深く理解しています。バックエンドでは、関連性の最適化のために組み込みフィールドの情報が考慮されます。そのため、組み込みフィールドを使用します。つまり、可能な限り商品情報を組み込みフィールドにマッピングし、必要な場合にのみカスタム属性を使用します。
たとえば、Product.brands フィールドでブランドを設定すると、同じ情報をカスタム属性で設定するよりも、検索とリコールに大きな影響があります。sleeve length のようなネイティブでサポートされていない属性の場合は、カスタム属性を使用することをおすすめします。
ブランド フィールドを使用する
商品情報のブランド フィールドは、デフォルトで検索可能、インデックス登録可能、ファセット可能であり、ランキングと関連性の強いシグナルとなります。検索クエリの多くは brand query または query brand の形式であり、ブランドは最も頻繁に使用されるファセットの 1 つです。
商品に正しいブランド フィールドが設定されていると、クリック数と購入数のコンバージョン率に大きな影響があります。そのため、ブランド フィールドには正しい情報を入力し、可能な限り空白にしないことが重要です。"NA"、"Not available"、"Miscellaneous" などのランダムなフィラーをブランド名に含めることは、さらに有害です。これにより、商品とブランド フィールドに記載されたテキストが強く関連付けられ、商品の誤解やリコールの誤りにつながる可能性があります。
特定の商品がどのブランドにも関連付けられていない場合は、フィールドを空白のままにしておくことをおすすめします。ただし、これらのブランドなしの商品がカタログ商品のほんの一部になるように注意する必要があります。
オーディエンス フィールドを使用する
商品情報のオーディエンス フィールドには、2 つのサブフィールドがあります。Audience.gender と Audience.ageGroup があります。これらのフィールドに適切なデータを入力する方がはるかに効果的です。これにより、モデルは商品のターゲット ユーザーを理解できます。
これは、パーソナライズが有効になっている場合に大きな役割を果たします。gender と ageGroup を使用すると、商品をより適切にセグメント化し、適切なユーザーに適切な商品をモデルがリコールできるようになります。
Audience データは、「女性用シャツ」や「男性用靴下」などのクエリがある場合にも役立ちます。ユーザー情報が入力されると、商品の理解度が大幅に向上し、性別固有のクエリに対するモデルの再現率が向上します。
重複しているタイトルがある商品を探す
Product.title は、ほとんどの検索クエリが Product.title として設定されたものと大きく重複するため、おそらく最も重要なフィールドです。エンドユーザーが詳細ページ ビューで最初に見て操作する情報である可能性が高いため、product.title を一意に保ち、商品に最も関連性の高いテキスト情報を設定することをおすすめします。
同じタイトルの商品(プライマリ商品)が 2 つあると、検索性と返される結果の関連性に影響します。大きな違いがある 2 つの別々のメイン商品がある場合は、タイトルを異なるものにします。商品が同じで、色やサイズなどのいくつかの点で異なるだけの場合は、商品をプライマリ タイプとバリエーション タイプとして構造化します。
言語設定
Vertex AI Search for Commerce は複数の言語をサポートしています。詳細については、こちらをご覧ください。カタログと検索クエリは同じ言語で指定する必要があります。クエリやカタログ情報の言語間の翻訳はありません。たとえば、カタログがスペイン語の場合、検索クエリもスペイン語である必要があります。
そのため、商品情報の言語コードを適切にマークすることが重要です。マークしないと、デフォルトで英語(en-US)になります。これは、spellCorrectionSpec などの検索コントロールで言語が設定されていないと、望ましくない動作につながるため、重要です。これは、検索意図の理解にも非常に重要です。
価格情報の設定
Product.priceInfo フィールドは、できるだけ正確かつ完全なものにする必要があります。この価格情報は割引関連のシグナルを導き出すために使用され、収益の最適化にも使用されます。これは、ブラウジング クエリの場合に特に重要です。
プライマリ バリエーション商品構造の場合は、少なくとも 1 つのバリエーションの価格を入力します。
商品レベルの価格設定がなく、すべての価格設定がローカル在庫にある商品(つまり、検索が常にローカル在庫に関連付けられている商品)の場合は、すべての在庫レベルの価格設定の中央値の情報を商品レベルの価格情報に入力します。
カタログのデータ品質指標
Search for commerce コンソールの [データ品質] ページでは、検索結果の品質を向上させ、検索パフォーマンス層のロックを解除するために、カタログデータを更新する必要があるかどうかを評価します。
次の表は、Vertex AI Search for Commerce が商品データの評価に使用するための品質指標を示しています。Search for commerce コンソールでデータ品質の指標と検索パフォーマンス階層を表示する方法については、検索パフォーマンス階層をロック解除するをご覧ください。
| カタログの品質指標 | 品質ルール | 説明 |
|---|---|---|
| URI が存在し、アクセス可能である | 商品に有効な Product.uri がある。URI はアクセス可能で、ドメインに一致している必要があります。 |
検索では、この URI でクロールされたウェブシグナルを使用して、検索品質を向上させています。 |
| 時間の適合性を満たしている | Product.availableTime は現在の時刻より前であり、Product.expireTime は現在の時刻より後です。 |
検索できるのは、時間の適合性を満たす商品のみです。 |
| 検索可能な属性が存在する | 商品で少なくとも 1 つの attribute が検索可能に設定されています。 |
検索可能とマークされたカスタム属性は、テキストクエリで検索できます。 |
| 説明がある | 商品の Product.description が空ではありません。 |
包括的な説明は検索品質の向上に役立ちます。 |
| タイトルは 2 単語以上で構成されている | Product.title が 2 単語以上で構成されています。 |
包括的なタイトルは検索品質の向上に役立ちます。 |
| 画像のあるバリアントがある | variant 商品には少なくとも 1 つの Product.image があります。すべての商品が primary レベルであれば、この指標は無視してかまいません。 |
この指標は参考情報であり、検索品質には影響しません。 |
| 価格情報ありのバリエーションがある | variant 商品で Product.priceInfo が設定されています。すべての商品が primary レベルであれば、この指標は無視してかまいません。 |
この指標は参考情報であり、検索品質には影響しません。 |