Wenn Sie eine Empfehlungs-App haben, können Sie Dokumentfelder verwenden, um Ihre Empfehlungsergebnisse zu filtern. Auf dieser Seite wird erläutert, wie Sie Dokumentfelder verwenden, um eine Empfehlung auf eine bestimmte Gruppe von Dokumenten zu filtern. Die Beispiele auf dieser Seite beziehen sich zwar auf Medienempfehlungen, die hier gezeigten Prinzipien gelten aber auch für benutzerdefinierte Empfehlungen. Weitere Informationen zu Media-Empfehlungen finden Sie unter Einführung in Vertex AI Search for Media.
Empfehlungen und Datenspeicheraktualisierungen filtern
Nach jeder Aktualisierung des Datenspeichers müssen Sie bis zu 8 Stunden warten, bis das Modell neu trainiert wurde. Das liegt daran, dass das Modell die aktuellen Werte in den Dokumentmetadaten sowie die als filterbar konfigurierten Felder kennen muss. Sie müssen warten, bis Dokument- und Schemaänderungen übernommen wurden. Bei Empfehlungen (im Gegensatz zur Suche) erfolgt die Filterung nicht in Echtzeit.
Filter und Einstellungen für die Diversifizierung (nur Medienempfehlungen)
Neben Filtern wirkt sich auch die Diversifizierungseinstellung einer App auf die Ergebnisse aus, die in einer Antwort auf eine Media-Empfehlung zurückgegeben werden. Die Auswirkungen von Filtern und Diversifizierung werden kombiniert. Die Diversifizierung erfolgt zuerst und die Filterung an zweiter Stelle.
Wenn Sie eine hohe, regelbasierte Vielfalt mit der attributbasierten Filterung nach Kategorie kombinieren, erhalten Sie oft eine leere Ausgabe. Das liegt daran, dass bei hoher Vielfalt nur ein Ergebnis pro Kategorie zurückgegeben wird.
Sie möchten beispielsweise Filme empfehlen, die auf „Toy Story“ basieren. Sie haben die regelbasierte Diversitätsstufe auf „Hoch“ festgelegt. Da die Vielfalt hoch ist, wird in der Kategorie „Kinderfilme“ nur ein Film zurückgegeben, obwohl viele Filme empfohlen werden könnten (z. B. WALL·E). Wenn der Filter für Kinderfilme angewendet wird, wird nur WALL·E als Empfehlung zurückgegeben.
Allgemeine Informationen zur Diversifizierung finden Sie unter Medienempfehlungen diversifizieren.
Hinweise
Sie müssen eine Empfehlungs-App und einen Datenspeicher erstellt haben. Weitere Informationen finden Sie unter Media-Apps erstellen oder Benutzerdefinierten Datenspeicher für Empfehlungen erstellen.
Beispieldokumente
Sehen Sie sich diese Beispielmediendokumente an. Sie können sich diese Beispieldokumente ansehen, während Sie diese Seite lesen.
{"id":"1","schemaId":"default_schema","structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"88125","schemaId":"default_schema","structData":{"title":"Harry Potter and the Deathly Hallows: Part 2 (2011)","categories":["Action","Adventure","Drama","Fantasy","Mystery","IMAX"],"uri":"http://mytestdomain.movie/content/88125","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"2857","schemaId":"default_schema","structData":{"title":"Yellow Submarine (1968)","categories":["Adventure","Animation","Comedy","Fantasy","Musical"],"uri":"http://mytestdomain.movie/content/2857","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"60069","schemaId":"default_schema","structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
Filterausdrücke
Verwenden Sie Filterausdrücke, um die Filter für Empfehlungen zu definieren.
Syntax für Filterausdrücke
In der folgenden erweiterten Backus-Naur-Form wird die Syntax für Filterausdrücke zusammengefasst, die Sie zum Definieren Ihrer Empfehlungsfilter verwenden können.
# 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 }, ")" # OR filter by "available" available, ":", "true", # A literal is any double-quoted string. You must escape backslash (\) and # quote (") characters. literal = double-quoted string; textual_field = see the tables below;
Einschränkungen für Filterausdrücke
Für Filterausdrücke für Empfehlungen gelten die folgenden Einschränkungen:
- Die Tiefe der Einbettung von
AND
- undOR
-Operatoren in Klammern ist begrenzt. Die logischen Ausdrücke im Filter müssen in konjunktiver Normalform (Conjunctive Normal Form, CNF) vorliegen. Der komplexeste unterstützte logische Ausdruck kann eine durchAND
verbundene Liste von Klauseln sein, die nurOR
-Operatoren enthalten, z. B.:(... OR ... OR ...) AND (... OR ...) AND (... OR ...)
Ausdrücke können mit dem Schlüsselwort
NOT
oder mit-
negiert werden. Dies funktioniert nur mitANY()
-Ausdrücken mit einem einzelnen Argument.available
-Einschränkungen müssen auf der obersten Ebene angegeben werden. Sie können nicht als Teil einerOR
-Klausel oder einer Negation (NOT
) verwendet werden. Sie können nuravailable: true
verwenden. Wenn Sie diesen Filter weglassen, werden möglicherweise abgelaufene und noch nicht verfügbare Dokumente als Empfehlungen zurückgegeben.Das Feld
available
wird der folgenden Logik zugeordnet:datetime.now >= available_time AND datetime.now <= expire_time
Wenn
expire_time
nicht festgelegt ist, wirddatetime.now <= expire_time
auftrue
aufgelöst.Die maximale Anzahl von Begriffen in der
AND
-Klausel der obersten Ebene beträgt 20.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 ihre Argumente auf dieses Limit angerechnet.categories: ANY("drama", "comedy") OR categories: ANY("adventure")
hat beispielsweise drei Argumente.
Beispiele für Filterausdrücke
In der folgenden Tabelle finden Sie Beispiele für gültige und ungültige Filterausdrücke. Außerdem werden die Gründe dafür angegeben, warum die ungültigen Beispiele ungültig sind.
Ausdruck | Gültig | Hinweise |
---|---|---|
language_code: ANY("en", "fr") |
Ja | |
NOT language_code: ANY("en") |
Ja | |
NOT language_code: ANY("en", "fr") |
Nein | Negiert eine ANY() mit mehr als einem Argument. |
language_code: ANY("en", "fr") OR categories: ANY("drama") |
Ja | |
(language_code: ANY("en") OR language_code: ANY("fr")) AND categories: ANY("drama") |
Ja | |
(language_code: ANY("en") AND language_code: ANY("fr")) OR categories: ANY("drama") |
Nein | Nicht in konjunktiver Normalform. |
(language_code: ANY("en")) AND (available: true) |
Ja | |
(language_code: ANY("en")) OR (available: true) |
Nein | Kombiniert available in einem OR -Ausdruck mit anderen Bedingungen. |
Der folgende Filterausdruck filtert nach Dokumenten, die in die Kategorie „Drama“ oder „Action“ fallen, nicht auf Englisch sind und verfügbar sind:
categories: ANY("drama", "action") AND NOT language_code: ANY("en") AND available: true
Filterlimits
Jedes filterbare Dokumentfeld belegt in jedem Ihrer Modelle etwas Arbeitsspeicher. Die folgenden Grenzwerte sollen negative Auswirkungen auf die Leistung der Anzeigenbereitstellung verhindern:
In Ihrem Schema können bis zu 10 benutzerdefinierte Felder als filterbar festgelegt werden.
Wenn beim App-Training mehr als 10 benutzerdefinierte Felder gefunden werden, werden nur 10 verwendet.
Ihr Schema kann bis zu 100.000.000 filterbare Feldwerte enthalten.
Sie können die Gesamtzahl der filterbaren Feldwerte in Ihrem Schema schätzen, indem Sie die Anzahl der Dokumente in Ihrem Schema mit der Anzahl der filterbaren Felder multiplizieren. Wenn Sie diese Limits überschreiten, geschieht Folgendes:
- Sie können keine zusätzlichen Felder als filterbar festlegen.
- Das App-Training schlägt fehl.
Empfehlungen filtern
So filtern Sie Medienempfehlungen:
Suchen Sie nach Ihrer Datenspeicher-ID. Wenn Sie die ID Ihres Datenspeichers bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Datenspeicher.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.
Legen Sie das Dokumentfeld oder die Dokumentfelder fest, nach denen Sie filtern möchten. Für die Dokumente unter Vorbereitung können Sie beispielsweise das Feld
categories
als Filter verwenden.So machen Sie das Feld
categories
filterbar:Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.
Klicken Sie auf die App für Empfehlungen.
Klicken Sie auf den Tab Schema. Auf diesem Tab werden die aktuellen Feldeinstellungen angezeigt.
Klicken Sie auf Bearbeiten.
Falls noch nicht geschehen, klicken Sie in der Zeile categories das Kästchen Filterable an und klicken Sie dann auf Save.
Warten Sie sechs Stunden, damit die Schemaänderung übernommen werden kann. Nach sechs Stunden können Sie mit dem nächsten Schritt fortfahren.
Wenn Sie eine Empfehlung erhalten und nach dem Feld
categories
filtern möchten, führen Sie den folgenden Code in der Befehlszeile aus:curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "userEvent": { "eventType": "EVENT_TYPE", "userPseudoId": "USER_PSEUDO_ID", "documents": { "id": "DOCUMENT_ID" } }, "params": { "returnDocument": true, "attributeFilteringSyntax": true, "strictFiltering": true }, "filter": "FILTER" }' \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/SERVING_CONFIG_ID:recommend"
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID.DATA_STORE_ID
: die ID Ihres Datenspeichers.DOCUMENT_ID
: die ID des Dokuments, für das Sie Empfehlungen in der Vorschau ansehen möchten. Verwenden Sie die ID, die Sie für dieses Dokument zum Zeitpunkt der Aufnahme Ihrer Daten verwendet haben.EVENT_TYPE
: Der Typ des Nutzerereignisses. Informationen zueventType
-Werten finden Sie unter UserEvent.USER_PSEUDO_ID
: eine pseudonymisierte Kennung des Nutzers. Sie können für dieses Feld ein HTTP-Cookie verwenden, das einen Besucher auf einem einzelnen Gerät eindeutig identifiziert. Legen Sie für dieses Feld nicht für mehrere Nutzer dieselbe Kennung fest. Dadurch würden die Ereignisverläufe kombiniert und die Modellqualität würde sinken. Geben Sie in diesem Feld keine personenidentifizierbaren Informationen an.SERVING_CONFIG_ID
: die ID Ihrer Serving-Konfiguration. Die ID Ihrer Bereitstellungskonfiguration ist dieselbe wie Ihre Engine-ID. Verwenden Sie also Ihre Engine-ID.FILTER
: Ein Textfeld, in dem Sie mit der Syntax für Filterausdrücke nach einer bestimmten Gruppe von Feldern filtern können. Der Standardwert ist ein leerer String, d. h. es wird kein Filter angewendet.
Angenommen, Sie möchten eine Empfehlung für ein bestimmtes Media-Play-Nutzerereignis und die Empfehlungsergebnisse so filtern, dass sie nur Dokumente enthalten, die (1) in der Kategorie „Kinder“ sind und (2) derzeit verfügbar sind. Dazu müssen Sie die folgenden Anweisungen in Ihren Aufruf einfügen:
"eventType": "media-play"
"filter": "categories: ANY(\"Children\") AND available: true"
Weitere Informationen finden Sie im Artikel zur
recommend
-Methode.Klicken Sie hier, um eine Beispielantwort zu sehen.
Wenn Sie eine Empfehlungsanfrage wie die oben genannte stellen, erhalten Sie eine Antwort ähnlich der folgenden. Die Antwort enthält die beiden Dokumente mit dem
categories
-WertChildren
und einemavailability_start_time
-Wert, der nach dem aktuellen Datum liegt.{ "results": [ { "id":"1", "schemaId":"default_schema", "structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1", "availability_start_time":"2023-01-01T00:00:00Z", "media_type":"movie" } }, { "id":"60069", "schemaId":"default_schema", "structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069", "availability_start_time":"2023-01-01T00:00:00Z", "media_type":"movie" } } ], "attributionToken": "ChMzMDk3NTQ4MzQxOTcxOTE0ODM1GglhZi10ZXN0LTEiDmFmLXRlc3QtMTE0NTE0KAAwBg" }