Auf dieser Seite wird beschrieben, wie Sie Natural Language Understanding (NLU) anwenden, um automatisch Filter für Suchanfragen zu erstellen und so die Qualität der zurückgegebenen Ergebnisse zu verbessern.
Sie können diese Funktion mit Suchanwendungen verwenden, die mit Datenspeichern für strukturierte Daten verbunden sind.
Interpretation von Anfragen in natürlicher Sprache
Wenn Sie eine benutzerdefinierte Such-App mit strukturierten Daten haben, können die Anfragen Ihrer Nutzer in natürlicher Sprache als gefilterte Anfragen neu formatiert werden. Das kann zu qualitativ besseren Suchergebnissen führen als die Suche nach Wörtern im Abfragestring.
Eine Anfrage in natürlicher Sprache wie "Find a coffee shop serving
banana bread" kann beispielsweise als Abfrage und Filter neu formuliert werden: "query": "banana bread", "filter": "type": ANY(\"cafe\").
Die Auswertung von Anfragen in natürlicher Sprache ist einfacher und flexibler als das Schreiben eigener Filterausdrücke. Informationen zum Schreiben von Filterausdrücken finden Sie unter Benutzerdefinierte Suche nach strukturierten oder unstrukturierten Daten filtern.
Harte und weiche Filter
Es gibt zwei Arten von Filtern, die Sie für die Auswertung von Anfragen in natürlicher Sprache anwenden können: hart und weich.
Schwierig Standardmäßig werden extrahierte Filter als obligatorische Kriterien angewendet, die ein Ergebnis erfüllen muss, um zurückgegeben zu werden.
Das Verhalten ähnelt dem Feld
filterin der NachrichtSearchRequest.Weich Alternativ zum harten Filter können Sie die Suchergebnisse verstärken. Es ist wahrscheinlicher, dass Ergebnisse mit höherem Gewicht zurückgegeben werden. Ergebnisse, die das Kriterium für die Gewichtung nicht erfüllen, können aber auch zurückgegeben werden.
Das Verhalten ähnelt dem Feld
boost_specin der NachrichtSearchRequest.
Sie können mit beiden Filtertypen experimentieren. Wenn bei Suchanfragen nicht genügend Ergebnisse zurückgegeben werden, verwenden Sie den weichen anstelle des harten Filters.
Weitere Informationen zum Anwenden eines sanften Filters finden Sie unten im Abschnitt Mit dem sanften Filter suchen.
Beispiele
Diese Funktion lässt sich am besten anhand von Beispielen erklären:
Im Beispiel: Feldextraktion aus Abfragen (Hard-Filter) sehen Sie die aus der Abfrage extrahierten Feldfilter.
Beispiel: Mit einem Geolocation-Filter (Hard-Filter) enthält den Sonderfall des Geolocation-Filters.
Beispiel: Feldextraktion aus Anfragen (weicher Filter) zeigt den weichen Filter, der aus einer Anfrage an eine zusammengeführte App extrahiert wurde.
Beispiel: Felder aus Abfragen extrahieren (Hard Filter)
Diese Funktion zur Verarbeitung von Anfragen in natürlicher Sprache wird anhand eines Beispiels für die Suche nach einem Hotel erläutert.
Hier ist eine Anfrage, die an einen strukturierten Datenspeicher für eine Hotelwebsite gerichtet wurde: „Suche mir ein familienfreundliches Hotel mit mindestens vier Sternen, das weniger als 300 € pro Nacht kostet, in dem ich meinen Hund mitbringen kann und das kostenloses WLAN bietet.“
Ohne die Verarbeitung von Anfragen in natürlicher Sprache sucht die Suchanwendung nach Dokumenten, die die Wörter in der Anfrage enthalten.
Durch die Verarbeitung von Anfragen in natürlicher Sprache und entsprechend strukturierte Daten wird die Suche effektiver, da ein Teil der natürlichen Sprache in der Anfrage durch Filter ersetzt wird.
Wenn die strukturierten Daten Felder für star_rating (Zahlen), price (Zahlen) und amenities (Strings) enthalten, kann die Anfrage so formuliert werden, dass sie die folgenden Filter enthält:
{
"star_rating": >=4,
"price": <=300,
"amenities": "Wifi", "Pets Allowed"
}
Beispiel: Mit einem Geolocation-Filter (Hard-Filter)
Dieses Beispiel ähnelt dem vorherigen, enthält aber einen geolocation-Filter, der eine spezielle Art von extrahiertem Filter ist. Vertex AI Search kann Orte in einer Anfrage erkennen und Näherungsfilter für die Orte erstellen.
Hier ist eine Anfrage, die an eine unternehmensweite Website gerichtet wurde: „Suche ein schickes und stilvolles Hotel mit mindestens 4 Sternen in San Francisco.“
Durch die Verarbeitung von Anfragen in natürlicher Sprache und den Geolocation-Filter wird die Suche so umformuliert, dass sie den folgenden Filter für ein Hotel mit mindestens 4 Sternen und einem Umkreis von 10 km um San Francisco enthält:
{
"star_rating": >=4,
"location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
}
In diesem Beispiel ist GEO_DISTANCE eine Adresse. In anderen Anfragen kann sie jedoch als Breiten- und Längengrad angegeben sein, obwohl die ursprüngliche Anfrage eine Adresse enthielt.
Beispiel: Felder aus Abfragen extrahieren (weicher Filter)
Diese Funktion zum Verarbeiten von Suchanfragen in natürlicher Sprache wird anhand des Beispiels der Suche nach einem Hotel erläutert, bei der einige Ergebnisse angezeigt werden, die nicht alle Kriterien erfüllen.
Hier ist eine Anfrage, die an eine Reisewebsite gerichtet wurde: „Suche mir ein familienfreundliches Hotel mit mindestens vier Sternen, das weniger als 300 € pro Nacht kostet und in dem ich meinen Hund mitbringen kann.“
Durch die Verarbeitung von Anfragen in natürlicher Sprache und entsprechend strukturierte Daten wird die Suche effektiver, da ein Teil der natürlichen Sprache in der Anfrage durch Softfilter ersetzt wird. Wenn die strukturierten Daten Felder für star_rating (Zahlen), price (Zahlen) und amenities (Strings) enthalten, kann die Anfrage als folgender Boost umgeschrieben werden:
Bedingung für die Steigerung, die aus der Abfrage in natürlicher Sprache extrahiert wurde:
{
"boostSpec": {
"conditionBoostSpecs": {
"condition": "(star_rating >= 4.5) AND (price < 200) AND ANY(amenities, \"Pets Allowed\")",
"boost": 0.7
}
}
}
In diesem Fall werden möglicherweise Hotels mit niedrigeren Bewertungen oder Hotels, in denen keine Haustiere erlaubt sind, zurückgegeben.
Beschränkungen
Für das Verständnis von Anfragen in natürlicher Sprache gelten die folgenden Einschränkungen:
Die Interpretation von Anfragen in natürlicher Sprache kann nicht auf Apps für kombinierte Suchanfragen angewendet werden. Wenn Sie versuchen, Natural Language Query Understanding mit einer App für die kombinierte Suche zu verwenden, erhalten Sie eine Fehlermeldung.
Die Auswertung von Anfragen in natürlicher Sprache funktioniert nur für benutzerdefinierte Such-Apps, die strukturierte Datenspeicher verwenden.
Die Verwendung der Interpretation von Anfragen in natürlicher Sprache erhöht die Latenz. Sie sollten sie daher nicht verwenden, wenn Latenz ein Problem darstellt.
Bei der Geolocation muss der Standort explizit beschrieben werden. Sie können keine Orte wie „in meiner Nähe“ oder „Zuhause“ verwenden.
Der Radius für die Geolocation beträgt 10 km und kann nicht konfiguriert werden.
Boolesche Felder können nicht in Filtern verwendet werden. Wenn die Anfrage beispielsweise „Finde ein Nichtraucher-Hotelzimmer für mich“ lautet, ist ein boolesches Feld wie
"non_smoking": truenicht hilfreich, aber ein Stringfeld wie"non_smoking": "YES"kann Teil des Filters sein.
Hinweise
Bevor Sie die Funktion zum Verarbeiten von Anfragen in natürlicher Sprache verwenden können, müssen Sie sie für die strukturierten Datenspeicher aktivieren, die mit den Apps verbunden sind, die Sie verwenden möchten.
So aktivieren Sie die Interpretation von Anfragen in natürlicher Sprache:
REST
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.
Rufen Sie die Seite Datenspeicher auf.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.
Führen Sie den folgenden curl-Befehl aus:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \ -d '{ "naturalLanguageQueryUnderstandingConfig": { "mode": "ENABLED" } }'Ersetzen Sie Folgendes:
PROJECT_ID: Die ID Ihres Projekts in Google Cloud .DATA_STORE_ID: die ID des Vertex AI Search-Datenspeichers.
Wiederholen Sie die Schritte 1 und 2 für jeden Datenspeicher.
Warten Sie etwa 24 Stunden.
Wenn Sie versuchen, die Verarbeitung von Abfragen in natürlicher Sprache zu verwenden, bevor der Datenspeicher bereit ist, entspricht die Antwort, die Sie erhalten, der Antwort, die Sie erhalten, wenn
filterExtractionConditionaufDISABLEDfestgelegt ist.
Suchen und Umwandeln von Anfragen in natürlicher Sprache in Filter
So suchen Sie mit einer Abfrage in natürlicher Sprache und erhalten Ergebnisse, die für Abfragen in natürlicher Sprache optimiert sind:
REST
Führen Sie den folgenden curl-Befehl aus, mit dem die Methode
searchaufgerufen wird:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED" } }'Ersetzen Sie Folgendes:
PROJECT_ID: Die ID Ihres Projekts in Google Cloud .APP_ID: die ID der Vertex AI Search-App, die Sie abfragen möchten. Die App muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine App für die kombinierte Suche sein.QUERY: Die in natürlicher Sprache formulierte Anfrage.
Standorte in Anfragen in Geolocation-Filter umwandeln
So suchen Sie mit einer Abfrage in natürlicher Sprache und erhalten Ergebnisse, die für Abfragen in natürlicher Sprache optimiert sind, einschließlich der Nähe zu Orten:
REST
Führen Sie den folgenden curl-Befehl aus, mit dem die Methode
searchaufgerufen wird:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED", "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]" } }'Ersetzen Sie Folgendes:
PROJECT_ID: Die ID Ihres Projekts in Google Cloud .APP_ID: die ID der Vertex AI Search-App, die Sie abfragen möchten. Die App muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine App für die kombinierte Suche sein.QUERY: die in natürlicher Sprache formulierte Anfrage.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: eine Liste von Werten des Typsgeolocation. Wenn der Werttyp nichtgeolocationist, wird dieses Feld ignoriert.
Mit dem Weichzeichnerfilter suchen
So wenden Sie einen weichen Filter an:
REST
App-ID suchen. Wenn Sie Ihre App-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.
Gehen Sie zu Apps
Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und entnehmen Sie die App-ID der Spalte ID.
Führen Sie den folgenden curl-Befehl aus, mit dem die Methode
searchaufgerufen wird:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED", "extractedFilterBehavior": "SOFT_BOOST" } }'Ersetzen Sie Folgendes:
PROJECT_ID: Die ID Ihres Projekts in Google Cloud .APP_ID: Die ID Ihrer Suchanwendung. Die App muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine App für die kombinierte Suche sein.QUERY: Ihre Anfrage in natürlicher Sprache.
Felder für Anfragen in natürlicher Sprache angeben
Damit ein Feld als Filter bei der Auswertung von Anfragen in natürlicher Sprache verwendet werden kann, muss es im Schema als indexierbar gekennzeichnet sein. Allgemeine Informationen zum Ansehen und Bearbeiten eines Schemas finden Sie unter Schema aktualisieren.
Vertex AI Search ermittelt, welche der indexierbaren Felder im Schema für Filter zur Auswertung von Anfragen in natürlicher Sprache verwendet werden können. Wenn jedoch Felder enthalten sind, die Sie nicht möchten, müssen Sie eine Zulassungsliste erstellen, um anzugeben, welche Felder verwendet werden dürfen.
Nehmen wir als Beispiel eine Website für Hotelbuchungen mit Feldern wie amenities, id, price_per_night, rating und room_types. Wenn id eine Zeichenfolge aus Buchstaben und Zahlen ist, wird sie von Vertex AI Search wahrscheinlich aus den Feldern ausgeschlossen, die zum Verarbeiten von Suchanfragen in natürlicher Sprache verwendet werden.
Wenn Sie jedoch feststellen, dass Vertex AI Search Suchergebnisse von schlechter Qualität zurückgibt, weil Felder nicht ausgeschlossen werden, die ausgeschlossen werden sollten, müssen Sie angeben, welche Felder verwendet werden können. Wenn das Hotelschema beispielsweise ein Feld für renovation_status enthält, das für Kunden nicht nützlich ist und für die Hotelkette peinlich sein könnte, können Sie es aus der Liste der zulässigen Felder ausschließen.
Beispiel für einen Datensatz aus dem Datenspeicher für strukturierte Daten von Hoteldaten.
{
"title": "Miller-Jones",
"rating": 1.7,
"price_per_night": 115.16,
"id": 2902,
…
],
"amenities": [
"Spa",
"Parking",
"Restaurant"
…
],
"renovation_status": "Restaurant and spa renovation planned for 2027"
}
Eine geeignete Zulassungsliste für Felder in diesem Beispiel wäre ["amenities",
"price_per_night", "rating", "title"].
In der Liste fehlt renovation_status.
So geben Sie eine Zulassungsliste von Feldern an, die in einer Suche für das Verarbeiten von Anfragen in natürlicher Sprache verwendet werden können:
REST
App-ID suchen. Wenn Sie Ihre App-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.
Gehen Sie zu Apps
Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und entnehmen Sie die App-ID der Spalte ID.
Führen Sie den folgenden curl-Befehl aus, mit dem die Methode
searchaufgerufen wird:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "allowedFieldNames": ["FIELD_1", "FIELD_2"], } }'Ersetzen Sie Folgendes:
PROJECT_ID: Die ID Ihres Projekts in Google Cloud .APP_ID: Die ID Ihrer Suchanwendung. Die App muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine App für die kombinierte Suche sein.QUERY: Ihre Anfrage in natürlicher Sprache.FIELD_N: Ein indexierbares Feld im Schema, das für das Verständnis von Anfragen in natürlicher Sprache verwendet werden kann.