Mit Natural Language Understanding filtern

Auf dieser Seite wird beschrieben, wie Sie Natural Language Understanding 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 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. So können Sie Suchergebnisse von höherer Qualität erzielen, als wenn Sie nach Wörtern im Abfragestring suchen.

Eine Abfrage 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 filter in der Nachricht SearchRequest.

  • 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_spec in der Nachricht SearchRequest.

Sie können mit beiden Filtertypen 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 Soft-Filters finden Sie unten unter Mit dem Soft-Filter suchen.

Beispiele

Diese Funktion lässt sich am besten anhand von Beispielen erklären:

Beispiel: Feldextraktion aus Anfragen (Hard Filter)

Diese Funktion zur Interpretation 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 das Verständnis von Anfragen in natürlicher Sprache sucht die Such-App nach Dokumenten, die die Wörter in der Anfrage enthalten.

Durch die Auswertung 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 Geofilter (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 Auswertung 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 neu geschrieben werden:

Aus der Abfrage in natürlicher Sprache extrahierte Bedingung für die Steigerung:

{
  "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.

Die Stärke des Boosts hängt von der Anzahl der strukturierten Filter ab, die mit einem Dokument übereinstimmen. Wenn drei Bedingungen extrahiert werden und das Dokument nur einer der Bedingungen entspricht, erhält das Dokument einen kleinen Boost. Wenn das Dokument alle drei Bedingungen erfüllt, wird es stark hochgestuft.

Beschränkungen

Für das Verarbeiten 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 die kombinierte Suche angewendet werden. Wenn Sie versuchen, das Verständnis von Anfragen in natürlicher Sprache mit einer App für die kombinierte Suche zu verwenden, erhalten Sie eine Fehlermeldung.

  • Die Interpretation 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 Standortbestimmung 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": true nicht 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

  1. Suchen Sie nach Ihrer Datenspeicher-ID. Wenn Sie die ID Ihres Datenspeichers bereits haben, fahren Sie mit dem nächsten Schritt fort.

    1. 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.

    2. Klicken Sie auf den Namen des Datenspeichers.

    3. Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.

  2. 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 Projekts in Google Cloud .
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers.
  3. Wiederholen Sie die Schritte 1 und 2 für jeden Datenspeicher.

  4. 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, die Sie erhalten, dieselbe, als wäre filterExtractionCondition auf DISABLED festgelegt.

Suchen und Anfragen in natürlicher Sprache in 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:

REST

  1. Führen Sie den folgenden curl-Befehl aus, mit dem die Methode search aufgerufen 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-Anwendung, die Sie abfragen möchten. Die App muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine zusammengeführte Such-App sein.
    • QUERY: Die in natürlicher Sprache formulierte Anfrage.

Standorte in Anfragen in Filter zur Standortbestimmung 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

  1. Führen Sie den folgenden curl-Befehl aus, mit dem die Methode search aufgerufen 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 zusammengeführte Such-App sein.
    • QUERY: Die in natürlicher Sprache formulierte Anfrage.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: eine Liste von Werten des Typs geolocation. Wenn der Werttyp nicht geolocation ist, wird dieses Feld ignoriert.

Mit dem Weichzeichnerfilter suchen

So wenden Sie einen weichen Filter an:

REST

  1. App-ID suchen. Wenn Sie Ihre App-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

      Gehen Sie zu Apps

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und entnehmen Sie die App-ID der Spalte ID.

  2. Führen Sie den folgenden curl-Befehl aus, mit dem die Methode search aufgerufen 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 Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine zusammengeführte Such-App 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 bestimmt, welche der indexierbaren Felder im Schema für Filter zum Verarbeiten von Suchanfragen 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 Hotelbuchungswebsite 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 Anfragen 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 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"]. In der Liste fehlt renovation_status.

So geben Sie eine Zulassungsliste von Feldern an, die in einer Abfrage in natürlicher Sprache in einer Suche verwendet werden können:

REST

  1. App-ID suchen. Wenn Sie Ihre App-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

      Gehen Sie zu Apps

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und entnehmen Sie die App-ID der Spalte ID.

  2. Führen Sie den folgenden curl-Befehl aus, mit dem die Methode search aufgerufen 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 Anwendung muss mit einem Datenspeicher verbunden sein, der strukturierte Daten enthält. Die App darf keine zusammengeführte Such-App sein.
    • QUERY: Ihre Anfrage in natürlicher Sprache.
    • FIELD_N: Ein indexierbares Feld im Schema, das für das Verarbeiten von Abfragen in natürlicher Sprache verwendet werden kann.