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:
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.
- Aktivieren Sie die Filterung von Empfehlungen für ein Modell, das gefilterte Empfehlungen liefert.
- Aktivieren Sie die Empfehlungsfilterung für Produktattribute, nach denen Sie filtern möchten.
- 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
undOR
in Klammern ist begrenzt. Die logischen Ausdrücke im Filter müssen in der konjunktiven Normalform (CNN) vorliegen. Der komplexste logische Ausdruck kann eine mitAND
verbundene Liste von Klauseln sein, die nurOR
-Operatoren enthalten. Beispiele:(... OR ... OR ...) AND (... OR ...) AND (... OR ...)
- Ausdrücke können mit dem Keyword
NOT
oder mit-
negiert werden. Dies funktioniert nur beiANY()
-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 einerOR
-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 inANY()
-Ausdrücken enthalten sind. Wenn eineOR
-Klausel mehrereANY()
-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 |
Ja | |
(colors: ANY("red") OR colors: ANY("green")) AND |
Ja | |
(colors: ANY("red") AND colors: ANY("green")) OR |
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.
Rufen Sie in der Google Cloud Console die Seite Einzelhandel auf.
Zur Seite „Steuerelemente“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.
Klicken Sie auf editSteuerelemente ändern.
Legen Sie für das Produktattribut Filterbar auf Wahr fest.
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.