Auf dieser Seite wird erläutert, wie Sie Natural Language Understanding anwenden können, 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 strukturierten Datenspeichern verbunden sind.
Interpretation von Anfragen in natürlicher Sprache
Wenn Sie eine benutzerdefinierte Suchanwendung mit strukturierten Daten haben, können die Anfragen Ihrer Nutzer in natürlicher Sprache als gefilterte Anfragen neu formatiert werden. Dies kann zu besseren Suchergebnissen führen, als wenn Sie nach Wörtern im Abfragestring suchen.
Beispielsweise kann eine Anfrage in natürlicher Sprache wie "Find a coffee shop serving
banana bread" als Anfrage und Filter neu formuliert werden:
"query": "banana bread", "filter": "type": ANY(\"cafe\").
Die Interpretation 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 Interpretation von Anfragen in natürlicher Sprache anwenden können: harte und weiche Filter.
Harte Filter 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 Suchanfrage.Weiche Filter Alternativ zum harten Filter können Sie die Suchergebnisse hochstufen. Hochgestufte Ergebnisse werden mit größerer Wahrscheinlichkeit zurückgegeben, aber auch Ergebnisse, die das Hochstufungskriterium nicht erfüllen, können zurückgegeben werden.
Das Verhalten ähnelt dem
boostSpecFeld in der Suchanfrage.
Sie können mit beiden Arten von Filtern experimentieren. Wenn bei Suchanfragen nicht genügend Ergebnisse zurückgegeben werden, versuchen Sie es mit dem weichen Filter anstelle des harten Filters.
Weitere Informationen zum Anwenden eines weichen Filters finden Sie unten unter Mit dem weichen Filter suchen.
Beispiele
Diese Funktion lässt sich am besten anhand von Beispielen erklären:
Beispiel: Feldextraktion aus Anfragen (harter Filter) zeigt die Feldfilter, die aus der Anfrage extrahiert wurden.
Beispiel: Mit einem Geofilter (harter Filter) enthält den Sonderfall des Geofilters.
Beispiel: Feldextraktion aus Anfragen (weicher Filter) zeigt den weichen Filter, der aus einer Anfrage an eine kombinierte Anwendung extrahiert wurde.
Beispiel: Feldextraktion aus Anfragen (harter Filter)
Diese Funktion zur Interpretation von Anfragen in natürlicher Sprache wird anhand des Beispiels der Suche nach einem Hotel erläutert.
Nehmen Sie die folgende Anfrage an einen strukturierten Datenspeicher für eine Hotelseite: "Find me a family-friendly hotel with at least four stars that costs less than 300 a night, lets me bring my dog, and has free Wi-Fi."
Ohne die Interpretation von Anfragen in natürlicher Sprache sucht die Suchanwendung nach Dokumenten, die die Wörter in der Anfrage enthalten.
Mit der Interpretation von Anfragen in natürlicher Sprache und entsprechend strukturierten Daten wird die Suche effektiver, indem 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 Geofilter (harter Filter)
Dieses Beispiel ähnelt dem vorherigen, enthält aber einen Geofilter. Das ist eine spezielle Art von extrahiertem Filter. Agent Search kann Orte in einer Anfrage erkennen und Filter für die Nähe zu diesen Orten erstellen.
Nehmen Sie die folgende Anfrage an eine unternehmensweite Website: "Find me a chic and stylish hotel with at least 4 stars that is in San Francisco."
Mit der Interpretation von Anfragen in natürlicher Sprache und dem Geofilter wird die Suche neu formuliert, um den folgenden Filter für ein Hotel mit mindestens 4 Sternen und im Umkreis von 10 km um San Francisco einzuschließen:
{
"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 geschrieben sein, obwohl die ursprüngliche Anfrage eine Adresse enthielt.
Beispiel: Feldextraktion aus Anfragen (weicher Filter)
Diese Funktion zur Interpretation von Anfragen in natürlicher Sprache wird anhand des Beispiels der Suche nach einem Hotel erläutert, wobei einige Ergebnisse angezeigt werden, die nicht alle Kriterien erfüllen.
Nehmen Sie die folgende Anfrage an eine Reiseseite: "Find me a family-friendly hotel with at least four stars that costs less than 300 a night, and lets me bring my dog."
Mit der Interpretation von Anfragen in natürlicher Sprache und entsprechend strukturierten Daten wird die Suche effektiver, indem ein Teil der natürlichen Sprache in der Anfrage durch weiche Filter ersetzt wird. Wenn die strukturierten Daten Felder für star_rating (Zahlen), price (Zahlen) und amenities (Strings) enthalten, kann die Anfrage als folgende Hochstufung neu formuliert werden:
Aus der Anfrage in natürlicher Sprache extrahierte Hochstufungsbedingung:
{
"boostSpec": {
"conditionBoostSpecs": {
"condition": "(star_rating >= 4.5) AND (price < 200) AND ANY(amenities, \"Pets Allowed\")",
"boost": 0.7
}
}
}
In diesem Fall werden möglicherweise einige Hotels mit niedrigerer Bewertung oder Hotels, in denen keine Haustiere erlaubt sind, zurückgegeben.
Die Stärke der Hochstufung hängt von der Anzahl der strukturierten Filter ab, die ein Dokument erfüllt. Wenn drei Bedingungen extrahiert werden und das Dokument nur eine der Bedingungen erfüllt, wird das Dokument nur geringfügig hochgestuft. Wenn das Dokument alle drei Bedingungen erfüllt, wird es stark hochgestuft.
Beschränkungen
Für die Interpretation von Anfragen in natürlicher Sprache gelten die folgenden Einschränkungen:
Die Interpretation von Anfragen in natürlicher Sprache kann nicht auf kombinierte Suchanwendungen angewendet werden. Wenn Sie versuchen, die Interpretation von Anfragen in natürlicher Sprache mit einer kombinierten Suchanwendung zu verwenden, wird ein Fehler ausgegeben.
Die Interpretation von Anfragen in natürlicher Sprache funktioniert nur für benutzerdefinierte Suchanwendungen, die strukturierte Datenspeicher verwenden.
Die Interpretation von Anfragen in natürlicher Sprache erhöht die Latenz. Wenn die Latenz ein Problem darstellt, sollten Sie diese Funktion daher nicht verwenden.
Für die Geolocation muss der Standort explizit beschrieben werden. Sie können keine Standorte wie „in meiner Nähe“ oder „zu Hause“ verwenden.
Der Radius für die Geolocation beträgt 10 km und ist nicht konfigurierbar.
Boolesche Felder können nicht in Filtern verwendet werden. Wenn die Anfrage beispielsweise "Find me a non-smoking hotel room" lautet, ist ein boolesches Feld wie
"non_smoking": truenicht nützlich. Ein Stringfeld wie"non_smoking": "YES"kann jedoch Teil des Filters sein.
Hinweis
Bevor Sie die Interpretation von Anfragen in natürlicher Sprache verwenden können, müssen Sie sie für die strukturierten Datenspeicher aktivieren, die mit den Anwendungen 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.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Seite Daten 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/v1/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 Google Cloud Projekts in.DATA_STORE_ID: die ID des Agent Search-Datenspeichers.
Wiederholen Sie die Schritte 1 und 2 für jeden Datenspeicher.
Warten Sie etwa 24 Stunden.
Wenn Sie versuchen, die Interpretation von Anfragen in natürlicher Sprache zu verwenden, bevor der Datenspeicher bereit ist, ist die Antwort dieselbe, als wäre
filterExtractionConditionaufDISABLEDgesetzt.
Suchen und Anfragen in natürlicher Sprache in Filter umwandeln
So suchen Sie nach einer Anfrage in natürlicher Sprache und erhalten Ergebnisse, die für Anfragen in natürlicher Sprache optimiert sind:
REST
Führen Sie den folgenden curl-Befehl aus, der die
searchMethode aufruft: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 Google Cloud Projekts in.APP_ID: die ID der Agent Search-Anwendung, die Sie abfragen möchten. Die Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die Anwendung darf keine kombinierte Suchanwendung sein.QUERY: die Anfrage in natürlicher Sprache.
Suchen und Orte in Anfragen in Geofilter umwandeln
So suchen Sie nach einer Anfrage in natürlicher Sprache und erhalten Ergebnisse, die für Anfragen in natürlicher Sprache optimiert sind, einschließlich der Nähe zu Orten:
REST
Führen Sie den folgenden curl-Befehl aus, der die
searchMethode aufruft: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 Google Cloud Projekts in.APP_ID: die ID der Agent Search-Anwendung, die Sie abfragen möchten. Die Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die Anwendung darf keine kombinierte Suchanwendung sein.QUERY: die Anfrage in natürlicher Sprache.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: eine Liste von Werten vom Typgeolocation. Wenn der Werttyp nichtgeolocationist, wird dieses Feld ignoriert.
Mit dem weichen Filter 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.
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, der die
searchMethode aufruft: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 Google Cloud Projekts in.APP_ID: Die ID Ihrer Suchanwendung. Die Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die Anwendung darf keine kombinierte Suchanwendung sein.QUERY: Ihre Anfrage in natürlicher Sprache.
Felder für Anfragen in natürlicher Sprache angeben
Damit ein Feld als Filter bei der Interpretation 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.
Agent Search bestimmt, welche der indexierbaren Felder im Schema für Filter zur Interpretation von Anfragen in natürlicher Sprache sinnvoll sind. Wenn jedoch Felder enthalten sind, die Sie nicht möchten, müssen Sie eine Zulassungsliste erstellen, um anzugeben, welche Felder verwendet werden können.
Nehmen wir eine Hotelbuchungsseite mit Feldern wie amenities, id, price_per_night, rating und room_types. Wenn id ein String aus Zeichen und Zahlen ist, wird Agent Search es wahrscheinlich aus den Feldern ausschließen, die für die Interpretation von Anfragen in natürlicher Sprache verwendet werden.
Wenn Sie jedoch feststellen, dass Agent 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 Eintrag aus dem strukturierten Datenspeicher mit 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"].
renovation_status fehlt in der Liste.
So geben Sie eine Zulassungsliste von Feldern an, die für die Interpretation von Anfragen in natürlicher Sprache in einer Suche 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.
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, der die
searchMethode aufruft: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 Google Cloud Projekts in.APP_ID: Die ID Ihrer Suchanwendung. Die Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die Anwendung darf keine kombinierte Suchanwendung sein.QUERY: Ihre Anfrage in natürlicher Sprache.FIELD_N: Ein indexierbares Feld im Schema, das für die Interpretation von Anfragen in natürlicher Sprache verwendet werden kann.