Empfehlungen filtern

Auf dieser Seite werden die Filterung der Ergebnisse für Recommendations AI mit Produktattributen beschrieben.

Sie können Vorhersageergebnisse filtern, indem Sie in Vorhersageanfragen einen Filterausdruck angeben. Der Filterausdruck ist ein logischer Ausdruck, der für jedes Produkt ausgewertet wird. Die Liste der Produkte in der Antwort ist auf Produkte beschränkt, bei denen der Ausdruck als „true“ ausgewertet wird.

Es gibt zwei Versionen des Filterns für Recommendations AI:

  • Wir empfehlen Version 2.
  • Version 1 wurde verworfen, wird aber möglicherweise noch verwendet.

Die Abschnitte in dieser Anleitung gelten nur für Version 2 des Filterns, bei der Empfehlungen mit Produktattributen gefiltert werden.

Empfehlungsfilter, Version 2

In Version 2 werden Produktattribute verwendet. Filterausdrücke basieren auf Produktattributen. Das können vordefinierte Systemattribute wie categories und colors oder von Ihnen definierte benutzerdefinierte Attribute sein, z. B. attributes.styles. Wenn Sie ein Produktattribut als filterbar festlegen, kann Recommendations AI diese Attribute dann automatisch als Tags für das Filtern von Empfehlungen verwenden. Sie müssen dann keine Filter-Tags manuell hinzufügen.

Wenn Sie Produkte zum Filtern von Produkten verwenden, gibt die Vorhersageantwort primäre Produkte zurück, die mindestens ein primäres oder ein Produktvarianten enthalten, deren Attributwert mit dem Filterausdruck übereinstimmt. Weitere Informationen zu primären und Artikelvarianten finden Sie unter Produktebenen.

Im folgenden Filterausdruckbeispiel werden auch alle roten oder blauen Produkte gefiltert, die als „Neu (Ankunft)“ und nicht als „Werbung“ festgelegt sind:

colors: ANY("red", "blue") AND attributes.status: ANY("New-Arrival") AND NOT attributes.is_promotional: ANY("true")

Führen Sie diese Schritte aus, um Filter 2 für Recommendations AI zu verwenden. Die einzelnen Schritte werden später auf dieser Seite beschrieben.

  1. Aktivieren Sie die Filterung von Empfehlungen für ein Modell, das gefilterte Empfehlungen liefert.
  2. Aktivieren Sie die Empfehlungsfilterung für Produktattribute, nach denen Sie filtern möchten.
  3. Filterbare Produktattribute in Vorhersageanfragen verwenden.

Empfehlungsfilter, Version 1 (eingestellt)

In Version 1 werden manuell erstellte Filter-Tags verwendet. Filterausdrücke basieren auf Filter-Tags, die Sie manuell den Produkten in Ihrem Katalog hinzufügen möchten, die Sie filtern möchten.

Im folgenden Filterausdruckbeispiel werden Filter-Tags verwendet, um Produkte mit der Kennzeichnung „Red“ oder „Blue“ sowie das Tag „New-Arrival“ zu kennzeichnen. Sie werden nicht als „promotional“ gekennzeichnet:

tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")

Weitere Informationen zum Feld Product.tags[] finden Sie in der API-Referenzdokumentation.

Tag-Ausdrücke können die booleschen Operatoren OR oder NOT enthalten. Diese müssen von den Tag-Werten durch ein oder mehrere Leerzeichen getrennt sein. Den Tag-Werten können auch Bindestriche (-) vorangestellt werden. Dies entspricht dem Operator NOT. Tag-Ausdrücke, die boolesche Operatoren verwenden, müssen in Klammern stehen.

Zusätzlich zu Tags können Sie nach filterOutOfStockItems filtern. Das Flag filterOutOfStockItems filtert alle Produkte mit einem stockState von OUT_OF_STOCK aus.

Sie können Tag-Filter und Filter, die nicht auf Lager sind, so kombinieren, dass nur Elemente zurückgegeben werden, die allen angegebenen Filterausdrücken entsprechen.

Beispiele für Filterstrings:

"filter": "tag=\"spring-sale\""
"filter": "filterOutOfStockItems"
"filter": "tag=\"spring-sale\" tag=\"exclusive\" filterOutOfStockItems"

Im folgenden Beispiel werden nur Artikel auf Lager, die entweder das Tag spring-sale oder das Tag exclusive (oder beides) haben und nicht das Tag items-to-exclude haben.

"filter": "tag=(\"spring-sale\" OR \"exclusive\") tag=(-\"items-to-exclude\") filterOutOfStockItems"

Kompatibilität von Attribut- und Tag-Filtern

Wenn ein Modell sowohl manuell erstellte Tags als auch filterbare Produktattribute hat, kann es Vorhersageanfragen mit beiden Versionen der Filterung verarbeiten. Es ist jedoch nicht möglich, sowohl v1- als auch v2-Filterausdrücke in dieselbe Vorhersageanfrage aufzunehmen.

Einschränkungen für das Filtern von Empfehlungen

Jedes filterbare Attribut verbraucht einen gewissen Arbeitsspeicher in jedem Ihrer Modelle. Die folgenden Limits sollen negative Auswirkungen auf die Bereitstellungsleistung verhindern:

  • Sie können in Ihrem Katalog bis zu 10 benutzerdefinierte Attribute als filterbar festlegen.
  • Ihr Katalog kann bis zu 100.000.000 filterbare Attributwerte enthalten.

    Die Gesamtzahl der Attributwerte in Ihrem Katalog lässt sich schätzen, indem Sie die Anzahl der Produkte in Ihrem Katalog mit der Anzahl der filterbaren Attribute multiplizieren.

    Wenn Sie beispielsweise einen Katalog mit 1.000 Produkten und 3 Attributen als „Filterbar“ festgelegt haben, wird die Gesamtzahl der Attributwerte auf 3*1.000=3.000 geschätzt.

    Wenn Sie Empfehlungen der Version 1 und Version 2 filtern, wird die Anzahl der Filtertags auf Ihr Kontingent angerechnet. Die Anzahl der Filtertags,die der Gesamtzahl der Attributwerte hinzugefügt werden,muss kleiner als 100.000.000 sein.

Wenn Sie die Limits überschreiten, können Sie in der Retail API keine zusätzlichen Attribute als filterbar festlegen. Wenn Sie diese Limits überschreiten müssen, fordern Sie eine Kontingenterhöhung an.

Die Gesamtzahl der Tags wird während des Modelltrainings berechnet. Wenn die Gesamtzahl das Limit überschreitet, schlägt das Modelltraining fehl. Wenn beim Modelltraining mehr als 10 filterbare benutzerdefinierte Attribute gefunden werden, werden nur 10 verwendet.

Syntax von Recommendations AI-Filterausdrücken

Die Syntaxen für Filterausdrücke für Retail Search und Recommendations AI sind ähnlich. Für Recommendations AI gelten jedoch einige Einschränkungen.

Die Syntax des Filterausdrucks für Recommendations AI kann mit der folgenden EBNF zusammengefasst werden:

  # A single expression or multiple expressions that are joined by "AND" or "OR".
  filter = expression, { " AND " | "OR", expression };

  # An expression can be prefixed with "-" or "NOT" to express a negation.
  expression = [ "-" | "NOT " ],
                    # A parenthesized expression
                    | "(", expression, ")"
                    # A simple expression applying to a textual field.
                    # Function "ANY" returns true if the field contains any of the literals.
                    ( textual_field, ":", "ANY", "(", literal, { ",", literal }, ")"

  # A literal is any double-quoted string. You must escape backslash (\) and
  # quote (") characters.
  literal = double-quoted string;

  textual_field = see the tables below;

Syntaxeinschränkungen filtern

Folgende Einschränkungen gelten:

  • Die Tiefe der Einbettung der Operatoren AND und OR in Klammern ist begrenzt. Die logischen Ausdrücke im Filter müssen in der konjunktiven Normalform (CNN) vorliegen. Der komplexste logische Ausdruck kann eine mit AND verbundene Liste von Klauseln sein, die nur OR-Operatoren enthalten. Beispiele: (... OR ... OR ...) AND (... OR ...) AND (... OR ...)
  • Ausdrücke können mit dem Keyword NOT oder mit - negiert werden. Dies funktioniert nur bei ANY()-Ausdrücken mit einem einzelnen Argument, das keine inventarbezogenen Attribute enthält.
  • availability-basierte Einschränkungen müssen sich auf der obersten Ebene befinden. Sie können nicht als Teil einer OR-Klausel oder einer Negation (NOT) verwendet werden.
  • Bei der Filterung nach standardmäßigen Empfehlungen werden nur Textfelder unterstützt. Kleinere und größere Vorgänge können nur mit Empfehlungen für Auf/Zu-Steuerung für Empfehlungen verwendet werden, die einige numerische Felder unterstützen (siehe Boost/bury-unterstützte Felder).
  • In der obersten AND-Klausel sind maximal 20 Begriffe zulässig.
  • Eine OR-Klausel kann bis zu 100 Argumente enthalten, die in ANY()-Ausdrücken enthalten sind. Wenn eine OR-Klausel mehrere ANY()-Ausdrücke enthält, werden alle Argumente auf dieses Limit angerechnet. colors: ANY("red", "green") OR colors: ANY("blue") hat beispielsweise drei Argumente.

Die folgende Tabelle enthält gültige Beispiele für Filterausdrücke sowie ungültige Beispiele und ihre Gründe.

Ausdruck Gültig Hinweise
colors: ANY("red", "green") Ja
NOT colors: ANY("red") Ja
NOT colors: ANY("red", green") Nein Negiert eine „ANY()“ mit mehr als einem Argument.
colors: ANY("red", "green") OR
categories: ANY(\"Phone > Android > Pixel\")
Ja
(colors: ANY("red") OR colors: ANY("green")) AND
categories: ANY(\"Phone > Android > Pixel\")
Ja
(colors: ANY("red") AND colors: ANY("green")) OR
categories: ANY(\"Phone > Android > Pixel\")
Nein Nicht in Konjunktion normal, also normal.
(colors: ANY("red")) AND (availability: ANY("IN_STOCK") Ja
(colors: ANY("red")) OR (availability: ANY("IN_STOCK")) Nein Kombiniert availability in einem OR-Ausdruck mit anderen Bedingungen.

Inventarbezogenes Attribut filtern

Das Filtern von inventarbezogenen Attributen basiert auf dem Echtzeitstatus Ihrer Produkte.

IN_STOCK ist der einzige availability-Attributwert, der in Version 2 der Empfehlungsfilterung unterstützt wird.

Inventarbezogene Attribute können in AND-Klauseln, aber nicht in OR-Klauseln verwendet werden.

Unterstützte Felder

Unterstützte Textfelder werden in der folgenden Tabelle zusammengefasst.

Boost/bury for Recommendations AI unterstützt zusätzliche Felder, die von der Standardfilterung von Empfehlungen nicht unterstützt werden. Eine Liste der zusätzlichen Felder, die von Boost/Bull für Recommendations AI unterstützt werden, finden Sie unter Von und auf Boost unterstützte Felder.

Feld Beschreibung
„productId“ Die Produkt-ID (das letzte Segment von Product.name).
"brands" Die Product.brands.
„categories“ Die Product.categories.
„genders“ Die Audience.genders.
„ageGroups“ Die Audience.age_groups.
"colorFamilies" Die ColorInfo.color_families.
„colors“ Die ColorInfo.colors.
„sizes“ Die Product.sizes.
„materials“ Die Product.materials.
„patterns“ Die Product.patterns.
„conditions“ Die Product.conditions.
"attributes.key" Das benutzerdefinierte Textattribut im Produktobjekt. Ein Schlüssel kann ein beliebiger Schlüssel in der Zuordnung Product.attributes sein, wenn die Attributwerte in Textform vorliegen.

Hoch-/Herabstufung von unterstützten Feldern

Boost/bury unterstützt einige zusätzliche Felder, die nicht durch das Filtern von Standardempfehlungen unterstützt werden, einschließlich numerischer Felder.

Zusätzlich zu den in Unterstützte Felder aufgeführten Feldern unterstützt boost/bury für Empfehlungen die folgenden Felder:

Textfelder

Feld description
"Tags" Product.tags[]. Mit dem Produkt verknüpfte benutzerdefinierte Tags.

Numerische Felder

Feld Beschreibung
„price“ PriceInfo.price: Der Preis des Produkts.
„discount“ Der Produktrabatt. Dieses Feld wird anhand der ursprünglichen Werte für Preis- und Preisfelder von PriceInfo berechnet.
„rating“ Product.rating. Die Gesamtzahl der Bewertungen für das Produkt.
„ratingCount“ rating.ratingCount. Die Gesamtzahl der Bewertungen für das Produkt.

Filtern von Empfehlungen für ein Modell festlegen

Sie können die Filterung für Recommendations AI über die Retail-Konsole oder die API-Ressource Models aktivieren.

In der Console können Sie ein neues Modell erstellen, für das die Filterung von Empfehlungen aktiviert ist. Sie können diese Option auch für vorhandene Modelle aktualisieren.

Mit der API-Ressource Models können Sie ein neues Modell mit aktivierter Empfehlungsfilterung erstellen oder diese Einstellung für ein vorhandenes Modell mit models.Patch aktualisieren.

Wenn für die Bereitstellungskonfiguration, die Vorhersagen zurückgibt, der Kategorieabgleich aktiviert ist, funktioniert das Filtern des Attributs „Kategorien“ nicht, da in der Antwort nur Produktergebnisse zurückgegeben werden, die eine Kategorie mit dem Kontextprodukt teilen.

Filter für ein Modell über die Console festlegen

Wählen Sie in der Retail-Konsole beim Erstellen des Modells die Option Tags automatisch generieren aus, um das Filtern von Empfehlungen für dieses Modell zuzulassen.

Eine Anleitung zum Erstellen eines Empfehlungsmodells mit der Console finden Sie unter Empfehlungsmodelle erstellen.

Diese Einstellung kann in der Console für vorhandene Modelle nicht aktualisiert werden. Verwenden Sie die models.Patch API-Methode, um diese Einstellung für ein Modell zu aktualisieren.

Filter für ein Modell mithilfe der API festlegen

Sie können die Empfehlungsfilterung für ein Modell mit models.Create beim Erstellen eines neuen Modells oder models.Patch beim Aktualisieren eines vorhandenen Modells aktivieren.

Legen Sie das Feld filteringOption für Ihr Modell fest, um das Filtern zu ermöglichen. Die zulässigen Werte dieses Felds sind:

  • RECOMMENDATIONS_FILTERING_DISABLED (Standard): Die Filterung für das Modell ist deaktiviert.
  • RECOMMENDATIONS_FILTERING_ENABLED: Das Filtern für primäre Produkte ist aktiviert.

Im folgenden curl-Beispiel wird ein neues Modell erstellt, für das die Empfehlungsfilterung aktiviert ist.

curl -X PATCH \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     --data "{
       'name': 'MODEL_NAME',
       'displayName': 'MODEL_DISPLAY_NAME',
       'type': 'home-page',
       'filteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED',
     }" \
     "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/models"

Im folgenden curl-Beispiel wird die Filteroption für ein vorhandenes Modell aktualisiert.

curl -X PATCH \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     --data "{
       'filteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED',
     }" \
     "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/models/MODEL_ID?updateMask=filteringOption"

Attribute als filterbar festlegen

Wenn Sie empfohlene Produkte filtern möchten, aktivieren Sie das Filtern nach den Produktattributen, die Sie in Filterausdrücken verwenden. Sie können diese Einstellung über die Retail-Konsole oder die API-Ressource Attributes aktualisieren.

Filtern Sie nicht mehr Attribute als nötig. Die Anzahl der filterbaren Attribute ist begrenzt.

Attribute mithilfe der Console als filterbar festlegen

Sie können ein Attribut in der Google Cloud Console als filterbare Seite „Steuerelemente“ festlegen.

  1. Rufen Sie in der Google Cloud Console die Seite Einzelhandel auf.

    Zur Seite „Steuerelemente“

  2. Rufen Sie den Tab Attributsteuerelemente auf.

    Auf diesem Tab wird eine Tabelle mit allen Produktattributen angezeigt, für die Sie websiteweite Steuerungen festlegen können.

  3. Klicken Sie auf Steuerelemente ändern.

  4. Legen Sie für das Produktattribut Filterbar auf Wahr fest.

  5. Klicken Sie auf Steuerelemente speichern.

Sie können das Attribut nach dem nächsten Modelltrainingszyklus zum Filtern verwenden.

Attribute mithilfe der API als filterbar festlegen

AttributesConfig stellt eine Liste von Attributen für einen Katalog dar.

Legen Sie das Feld AttributesConfig.filteringOption für CatalogAttribute fest. Für dieses Feld sind folgende Werte zulässig:

  • RECOMMENDATIONS_FILTERING_DISABLED (Standard): Die Filterung für das Attribut ist deaktiviert.
  • RECOMMENDATIONS_FILTERING_ENABLED: Die Filterung für das Attribut ist aktiviert.

Im folgenden curl-Beispiel werden Ihre vorhandenen Produktattribute abgefragt.

curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/attributesConfig"

Im folgenden curl-Beispiel wird das Produktattribut categories als filterbar festgelegt.

Behalten Sie beim Aktualisieren eines vorhandenen Attributs die ursprünglichen Werte des Attributs indexableOption, dynamicFacetableOption und searchableOption bei, wie sie im vorherigen Schritt dargestellt wurden. Wenn das ausgewählte Attribut beim Aufrufen von attributesConfig wie im vorherigen Beispiel nicht angezeigt wird, verwenden Sie die Standardeinstellungen, wie im folgenden Beispiel gezeigt.

curl -X PATCH \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     --data "{
        'name': 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/attributesConfig',
        'catalogAttributes': {
          'categories': {
            'key': 'categories',
            'indexableOption': 'INDEXABLE_ENABLED',
            'dynamicFacetableOption': 'DYNAMIC_FACETABLE_DISABLED',
            'searchableOption': 'SEARCHABLE_DISABLED',
            'recommendationsFilteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED'
          }
        },
        'attributeConfigLevel': 'CATALOG_LEVEL_ATTRIBUTE_CONFIG'
     }" \
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/attributesConfig"

Sie können das Attribut nach dem nächsten Modelltrainingszyklus zum Filtern verwenden.

Filterbare Attribute in einer Vorhersageanfrage verwenden

Nachdem Ihr Modell neu trainiert wurde, können Sie in Ihren Vorhersageanfragen filterbare Produktattribute verwenden.

Setzen Sie den Wert des Anfrageparameters filterSyntaxV2 auf „true“, um die Empfehlungsfilter für Version 2 zu aktivieren. Wenn der Parameter nicht festgelegt ist, bleibt die Filterung von Version 1 aktiv. Wenn ein Modell sowohl manuell erstellte Tags als auch filterbare Produktattribute hat, kann es Vorhersageanfragen mit beiden Versionen der Filterung verarbeiten. Es ist jedoch nicht möglich, sowohl v1-Filterung als auch v2-Filterausdrücke in dieselbe Vorhersageanfrage aufzunehmen.

Im folgenden Teil-Curl-Beispiel ist filterSyntaxV2 auf „true“ gesetzt und ein Filterausdruck mit den Produktattributen colors und categories. In diesem Beispiel wird davon ausgegangen, dass colors und categories als filterbar festgelegt sind.

"params": {
  "filterSyntaxV2": true
},
"filter": "(categories: ANY(\"Phone > Android > Pixel\") OR colors: ANY(\"red\", \"green\")) AND (availability: ANY(\"IN_STOCK\"))"

Das folgende curl-Beispiel zeigt eine vollständige Vorhersageanfrage.

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     --data "{
        'userEvent': {
          'eventType': 'detail-page-view',
          'visitorId': 'VISITOR_ID',
          'productDetails': {
            'product': {
              'id': 'PRODUCT_ID'
            }
          }
        },
        'params': {
          'returnProduct': true,
          'filterSyntaxV2': true,
          'strictFiltering': true,
        },
        'filter': 'categories: ANY(\"xyz\")',
        useMostRecentServingConfig: true
     }" \
     "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/placements/SERVING_CONFIG:predict"

Zusätzlich zu den Filtern kann sich die Diversifizierungseinstellung der Bereitstellungskonfiguration auch auf die Anzahl der Ergebnisse auswirken, die von der Antwort zurückgegeben werden.