Vertex AI Search for Commerce では、インデックス登録、動的ファセット、検索可能性、フィルタリング、モデル品質用に商品属性を使用できます。このページでは、商品属性の構成の設定と、使用する方法と構成に応じてそれらを扱う方法について説明します。
属性タイプ
商品の属性はタイプによって、デフォルト設定や許可されるオプションが異なります。
システム属性: 事前定義されたシステム属性は、商品に関する詳細情報を提供する既存の
Product
フィールド。これには、ブランド、在庫状況、色、サイズなどの商品属性が含まれます。プロダクトで使用可能なすべてのシステム属性については、Product
リファレンス ドキュメントをご覧ください。カスタム属性: カスタム属性は、
Product.attributes
フィールドを使用して定義する追加の属性。たとえば、ショップ名、ベンダー、スタイルなどです。カスタム属性の例と上限については、Product.attributes
リファレンス ドキュメントをご覧ください。上位 20 個のカスタム属性の例を次に示します。
- この商品が属する商品ライン
- この商品の実店舗での販売量
- 服装の機会
- この商品に適用されるセールとクーポン
- サイト全体の商品人気度
在庫レベルの属性: 商品に関する店舗レベルの情報を提供するシステム属性またはカスタム属性。在庫レベルの属性は、店舗や地域によって特性が大きく異なる商品(食料品店など)や、店舗固有のプロモーションがある商品に使用します。
inventories.price
とinventories.originalPrice
は、Vertex AI Search for Commerce で事前定義された数値システム属性です。テキストまたは数値の、在庫レベルのカスタム属性を作成できます。在庫レベルの属性は、デフォルトでインデックスに登録されます。検索可能動的ファセットの設定は、在庫レベルの属性ではサポートされていません。
利用可能な構成設定
属性の構成設定は、サイト全体の検索とレコメンデーションの動作に影響します。
検索では、次の属性の設定が使用されます。
- インデックス登録可能: 検索は、この属性を使用してフィルタリングとファセットを行います。
- 動的ファセット: 検索は、ユーザーの過去の操作(ファセットのクリックや表示など)に基づいて、この属性が動的ファセットとして自動的に使用します。属性の動的ファセットを有効にするには、その属性の Indexable を true に設定する必要があります。
- 検索可能: この属性は検索クエリで検索できます。これによって、この属性の再現率が向上します。このコントロールは、テキスト属性にのみ適用されます。
- 取得可能: true に設定すると、検索は検索クエリへのレスポンスでこの属性を返します。 すべての属性で「取得可能」を false に設定すると、検索結果に含まれるのは、商品名(バリアントの場合)か、商品名と色情報に限られます。 プロダクトの REST フィールド RetrievableFields は非推奨になりました。代わりに、取得可能なサイト全体のコントロールを使用してください。
レコメンデーションでは、次の属性設定を使用します。
- フィルタ可能(公開プレビュー版): この属性はレコメンデーションのフィルタ式で使用できます。このコントロールは、テキスト属性にのみ適用されます。
インデックスを作成可能
属性がインデックス登録可能に設定されている場合、検索はその属性を使用してフィルタリングやファセットを行います。
- システム属性: 事前定義されたシステム属性に対しては、インデックス登録可能性が常に有効になります。この設定は、システム属性では無効にできません。
- カスタム属性: デフォルトで有効になっています。任意のカスタム属性のインデックス登録可能性を無効にできます。カスタム属性をインデックス登録可能にする場合は、正規表現パターン
[a-zA-Z0-9][a-zA-Z0-9_]*
に従う必要があります。たとえば、key0LikeThis
やKEY_1_LIKE_THIS
です。 - 在庫レベルの属性: システム在庫レベルの属性に対して常に有効になります。この設定を変更することはできません。カスタム在庫レベルの属性では、デフォルトで有効になっています。この設定をオフにできます。
- 依存関係: 該当なし
インデックス構成の変更は、カタログデータをインポートした直後に有効になります。それ以外の場合、変更が有効になるまでに最長で 12 時間ほどかかることがあります。変更が適用されたかどうかは、[評価] ページでテストできます。
動的ファセット
属性に対して動的ファセットが有効な場合、検索はその属性を動的ファセットとして使用できます。動的ファセットは、ファセットのクリックや表示などの過去のユーザーの行動に基づいて、検索に自動的に追加できます。
- システム属性: インデックス化が true に設定されている場合は、デフォルトで有効になっています。任意のシステム属性で動的ファセットを無効にできます。
- カスタム属性: インデックス化が true に設定されている場合は、デフォルトで有効になっています。任意のシステム属性で動的ファセットを無効にできます。
- 在庫レベルの属性: サポートされていません。
- 依存関係: 属性の動的ファセットを有効にするには、まずその属性のインデックス化を有効にする必要があります。
属性の動的ファセットの設定は常にグローバルです。その属性に適用する動的ファセットの設定は、その属性を使用するカタログ全体の商品で使用されます。
動的ファセット構成の変更は最大 2 日かかります。変更が適用されたかどうかは、[評価] ページでテストできます。
数値のカスタム属性の場合、リクエストでバケットを指定する必要があります。数値は自動的にバケット化されません。
検索可能
属性が検索可能に設定されている場合、検索クエリでのその属性の再現率が向上します。
検索可能性を有効にすることができるのはテキスト属性値のみです。数値属性には適用されません。
- システム属性:
Product
の事前定義されたテキスト システム属性には、検索可能性の設定が Vertex AI Search for Commerce によって構成されています。これらの設定は変更できません。 - カスタム属性: デフォルトでは無効になっています。この構成は、任意のテキスト カスタム属性に対して有効にできます。
- 在庫レベルの属性: サポートされていません。
- 依存関係: 該当なし
- 完全一致検索可能: カタログ内の特定の商品と一致する検索クエリに対して、ターゲット検索結果を返します。このオプションはシリアル番号に適しています。完全一致検索可能オプションの詳細をご覧ください。
検索可能の属性を持つ商品は、その属性の検索結果に表示される可能性は高くなりますが、表示されるとは限りません。
レコメンデーションのフィルタリング
属性でレコメンデーションのフィルタリングが有効な場合、レコメンデーションのフィルタ式で使用して予測内の商品をフィルタリングできます。
- システム属性: デフォルトでは無効になっています。この設定は、
FulfillmentInfo
とtitle
を除く、Product
の事前定義されたテキスト システム属性に対して有効にできます。数値属性ではサポートされていません。 - カスタム属性: デフォルトでは無効になっています。この設定は、
Product
のテキスト カスタム属性に対して有効にできます。数値属性ではサポートされていません。 - 在庫レベルの属性:
availability
値がIN_STOCK
の場合にのみサポートされます。 - 依存関係: 該当なし
完全一致検索可能なオプション
特定の文字列クエリの特定の値を、カタログ属性フィールドである exact-searchable
オプションに指定できます。クエリで指定された文字列がフィールドの値であるカタログ内の商品とクエリが一致した場合、検索クエリでその商品が返されます。このオプションは、お客様がターゲット検索を期待しているシリアル番号に適しています。
通常、カスタム属性の場合、ExactSearchableOption
フィールドは、正確な値(ModelId
や ManufacturerId
など)を持つ商品属性に便利です。product_id
などの属性は、デフォルトで完全一致検索可能なプライマリ インデックス フィールドです。item_id
フィールドは完全一致では常にオンになっており、無効にすることはできません。
- 検索で無関係なアイテムが返されないように、検索可能なオプションを
battery
などの汎用値に設定しないでください。 - 検索クエリの配信不足を避けるため、
tag
などの特別なフィールド(文字列値の 1 つとして「iphone」が含まれる可能性がある)を完全一致検索可能に設定しないでください。そのようにすると、商品カタログ内のすべての iPhone の結果が制限される可能性があります。
詳しくは、商品属性についてをご覧ください。
属性の動作
プライマリ商品とバリエーション商品の指定を使用して商品カタログを構成する際は、フィルタリングでの商品属性の処理方法を把握しておく必要があります。動作は、検索とレコメンデーションのどちらを使用しているか、カタログ分類をどのように構成しているかによって異なります。
予測可能で正確なフィルタリング動作を確保するには、メイン商品とバリエーション商品で、フィルタリング可能な属性の定義に一貫性と完全性を持たせてください。このアプローチは、正確なフィルタリングに役立ち、商品の検出と検索の関連性を高めます。
検索とレコメンデーションにおけるプライマリ バリエーションの動作
検索結果とレコメンデーション結果ではプライマリ アイテムのみが返されますが、Vertex AI Search for commerce は検索とレコメンデーションの品質を最適化します。
検索モデルの場合、バリエーション属性は検索インデックスのメイン商品に使用されます。検索結果には、バリエーションの属性に基づいて、メイン商品のさまざまなオプションが表示されます。
レコメンデーション モデルの場合、商品の詳細と属性はメインからバリエーションに継承されません。おすすめの品質を最適化するには、メインの商品とバリエーション商品に、
product.categories
、product.title
、product.attributes
、product.prices
などのキー属性に関する完全かつ正確な詳細情報が記載されていることが重要です。
インデックス登録とフィルタリング時の属性の処理
プライマリとバリアントで同じ属性が定義されている場合、バリアントの属性はフィルタリングの一部になります。たとえば、プライマリ商品とそのバリエーション(色やサイズ)に属性が定義されているとします。バリエーション属性値は主にフィルタリングに使用されます。フィルタリングでは、プライマリのバリエーションのいずれかが属性値と一致するかどうかが確認されます。商品の在庫状況を取得する: プライマリ商品を out-of-stock
に設定できますが、バリエーションの少なくとも 1 つが in-stock
の場合、in-stock
フィルタが適用されていれば、プライマリ商品は検索結果に表示されます。
次の理由から、プライマリとバリエーションで同じフィルタ可能な属性を設定します。
フィルタリングでは、バリエーション属性が優先されます。属性がメインの商品とそのバリエーションで定義されている場合、フィルタリングではバリエーションの属性が使用されます。たとえば、メインの商品にプレースホルダの色が設定されていても、バリエーションに実際の色が設定されている場合は、バリエーションの色が入力され、フィルタリングに使用されます。
在庫状況などの在庫関連の属性については、メインの商品にバリエーションがある場合、メインの商品の在庫状況は
OUT_OF_STOCK
に設定し、実際の在庫状況(IN_STOCK
など)はバリエーション レベルで設定する必要があります。これにより、バリエーションの在庫が 1 つ以上あれば、メインの商品は在庫ありとみなされます。その場合、availability: ANY("IN_STOCK")
などのフィルタは、プライマリ商品を正しく返します。フィルタ式を使用すると、予測レスポンスは、フィルタの属性値に一致するプライマリ商品またはバリエーション商品を少なくとも 1 つ含むプライマリ商品を返します。
フィルタリングのオプション属性
categories
フィールドをクリーンな状態に保ち、分類用に最適化します。さらにフィルタリングが必要な場合は、categories
フィールドではなく、個別のカスタム属性を使用して、広範なカテゴリに基づいて実装します。また、カテゴリ候補の自動補完トレーニングに悪影響を及ぼすことも回避できます。
たとえば、通常は [lvl1, lvl1>lvl2, lvl1>lvl2>lvl3]
などのカテゴリをフィルタリング用に設定するとします。オートコンプリートは、特定のクエリで最も頻繁に使用されるカテゴリをカウントするため、候補カテゴリとして lvl1
と lvl2
(すべての商品)が表示されます。
ベスト プラクティス
カタログがプライマリ商品とバリエーション商品で構成されており、両方に同じ属性が定義されている場合、フィルタリングではバリエーションの属性が考慮されます。
属性を正確に入力する: 効果を最大限に高めるため、特にフィルタリングに使用される属性について、メインの商品とバリエーション商品の両方で詳細が正確かつ完全に入力されていることを確認します。
組み込みフィールドを使用する: カスタム属性のみに依存しないでください。商品情報を組み込みの
Product
フィールド(brands
、colors
、sizes
、必須フィールド)にマッピングします。組み込みフィールドは、検索可能性、インデックス登録可能性、関連性の最適化に大きな影響を与えます。カスタム属性(Product.attributes
)は、事前定義されたシステム属性に適合しない商品データに使用します。サイト全体の取得可能なフィールドの制御を設定する: API はバリエーションの
variantRollupKeys
をサポートしているため、検索レスポンスで詳細を取得できます。カタログの言語の一貫性: 商品カタログは 1 つの言語のみで作成し、検索クエリも同じ言語で送信する必要があります。カタログに複数の言語が含まれていると、モデルのパフォーマンスが低下する可能性があります。言語コードを設定しないと、スペル修正などの機能に影響が生じることがあります。
価格情報: メイン商品とバリエーション商品の両方の価格情報を正確に入力して、正確な推奨事項とフィルタリングを確保します。商品レベルの価格設定がなく、ローカル在庫の価格設定のみに依存している場合は、在庫レベルの価格設定の中央値でプライマリ商品の価格設定を入力します。
構成モード
構成モードによって、属性構成の処理方法と設定できる属性構成が決まります。
- カタログレベルの構成モード(デフォルト): このモードでは、カタログレベルの属性構成が信頼できる情報源として使用されます。
- 商品レベルの構成モード(非推奨): このモードでは、商品レベルの属性構成が信頼できる情報源として使用されます。
以前は、商品レベルの構成がデフォルトのモードでした。まだ商品レベルの構成モードで、カタログレベルの構成モードに切り替える必要がある場合は、サポートにお問い合わせください。切り替え後に、検索では商品レベルの構成モードに戻ることはできません。
構成モードを確認するには、コマース向け検索コンソールの [コントロール] ページに移動します。[インデックス登録可能] オプションが [サイト全体のコントロール] タブで列として利用できる場合、構成モデルはカタログレベルです。[インデックス登録可能] 列が [サイト全体のコントロール] タブで利用できない場合、構成モデルは商品レベルです。
構成メソッド
次の方法で属性構成を設定できます。
コマース向け検索コンソール: コマース向け検索コンソールを使用して、カタログレベルで属性構成を設定します。これにより、すべての商品全体で属性がグローバルに構成されます。コンソールでどちらの設定方法を使用できるかは、構成モードによって異なります。コンソールで属性を構成する方法について詳しくは、次のセクションをご覧ください。
AttributeConfig
API メソッド: API を使用して、カタログレベルで属性構成を設定します。これにより、すべての商品全体で属性が構成されます。Product
API メソッド(非推奨):Product
API メソッドを使用して、商品レベルでカスタム属性を設定します。新規ユーザーはこの方法で属性を設定することができないため、おすすめしません。
コンソールで属性を構成する
[サイト全体のコントロール] タブの Search for Commerce コンソールの [コントロール] ページから、すべての商品の属性オプションをグローバルに設定できます。コンソールでこれを設定する方法について詳しくは、サイト全体の属性コントロールを管理するをご覧ください。
この機能を使用するには、構成モードがカタログレベルである必要があります。
インデックス登録可能と検索可能についての属性構成の設定の変更は、カタログの取り込み直後に有効になります。それ以外の場合、変更が有効になるまでに最長で 12 時間ほどかかることがあります。変更が適用されたかどうかは、[評価] ページでテストできます。
AttributesConfig
で属性を構成する
AttributesConfig
API リソースを使用すると、カタログレベルで属性構成を管理できます。
次のフィールドでは、カタログ レベルで属性オプションを設定します。
CatalogAttribute.indexableOption
: 属性のインデックス登録可能なオプションを設定します。CatalogAttribute.dynamicFacetableOption
: 属性の動的ファセット オプションを設定します。CatalogAttribute.searchableOption
: 属性の検索可能なオプションを設定します。CatalogAttribute.recommendationsFilteringOption
(公開プレビュー): 属性のレコメンデーション フィルタリング オプションを設定します。
すべての属性構成を取得するには、GetAttributesConfig
メソッドを使用します。
複数の属性の更新
updateAttributesConfig
メソッドを使用して、カタログ レベルで複数の属性を更新します。
リクエストに含めるカタログ属性は、カタログ内で更新されます。存在しない場合は挿入されます。カタログ属性フィールドに値がない場合、デフォルト値が割り当てられます。
リクエストで許可されるカタログ属性の最大数は 1,000 です。
個々の属性の更新
個々のカタログ属性を更新するには、次のメソッドを使用します。
AddCatalogAttribute
: 個々の属性構成をカタログ属性に追加します。AddCatalogAttribute
の API リファレンス ドキュメントをご覧ください。ReplaceCatalogAttribute
: 個々の属性構成を変更します。AttributesConfig
で指定されたCatalogAttribute
を、同じCatalogAttribute.key
を持つカタログ属性を更新することで置き換えます。ReplaceCatalogAttribute
の API リファレンス ドキュメントをご覧ください。RemoveCatalogAttribute
:AttributesConfig
から個々の属性構成を削除します。削除できるのは、商品で使用されていない
CatalogAttributes
のみです。CatalogAttribute
が使用されている場合、RemoveCatalogAttribute
はそれを削除しませんが、その構成プロパティをデフォルト値にリセットします。属性がいずれかの商品で使用されている場合、CatalogAttribute.inUse
はTrue
に設定されます。RemoveCatalogAttribute
の API リファレンス ドキュメントをご覧ください。
Product
メソッドで属性を構成する(非推奨)
新規ユーザーはこの方法で属性を設定することができないため、おすすめしません。
次のフィールドでは、Product
API メソッドを使用して、特定の商品のインデックス登録可能な設定と検索可能な設定を設定します。
Product.attributes.indexable
。Product.attributes.searchable
。カスタム属性でのみ使用できます。