Filtrer avec la compréhension du langage naturel

Cette page explique comment appliquer la compréhension du langage naturel aux créer des filtres pour les requêtes de recherche et, par conséquent, pour améliorer la qualité sont renvoyés.

Vous pouvez utiliser cette fonctionnalité avec les applis de recherche associées à des données structurées magasins.

À propos de la compréhension des requêtes en langage naturel

Si vous disposez d'une application de recherche générique avec des données structurées, les requêtes en langage naturel de vos utilisateurs peuvent être reformatées en requêtes filtrées. Cela peut améliorer la qualité des résultats de recherche par rapport à la recherche de mots dans la chaîne de requête.

L'utilisation de la compréhension des requêtes en langage naturel est plus facile et plus flexible que l'écriture de votre propre filtre . Pour en savoir plus sur l'écriture d'expressions de filtre, consultez la section Filtrer la recherche générique pour les données structurées ou non structurées.

Cette fonctionnalité est mieux expliquée par des exemples :

Exemple : Extraction de champs à partir de requêtes

Cette fonctionnalité de compréhension des requêtes en langage naturel est expliquée dans l'exemple de la recherche hôtel.

Prenons l'exemple de la requête suivante envoyée à un entrepôt de données structurées pour un site d'hôtel : "Trouvez-moi un hôtel adapté aux familles avec au moins quatre étoiles, qui coûte moins de 300 € par nuit, où je peux emmener mon chien et qui propose un accès Wi-Fi gratuit."

Sans compréhension des requêtes en langage naturel, l'application de recherche recherche les documents contenant les mots dans la requête.

Grâce à la compréhension des requêtes en langage naturel et aux données structurées de manière appropriée, la recherche est plus efficace en remplaçant une partie du langage naturel de la requête par des filtres. Si les données structurées comportent des champs pour star_rating (chiffres), price (nombres) et amenities (chaînes), la requête peut être réécrite les filtres suivants plus une requête résiduelle:

  • Filtres extraits de la requête en langage naturel:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • Requête résiduelle, reformulée après l'extraction des filtres:

    family-friendly

Exemple : Avec un filtre de géolocalisation

Cet exemple est semblable au précédent, sauf qu'il inclut geolocation, un type spécial de filtre extrait. Vertex AI Search peut reconnaître des zones géographiques dans une requête créer des filtres de proximité pour les lieux.

Prenons la requête suivante, effectuée sur le site d'une entreprise à l'échelle d'un État: "Trouve-moi un hôtel chic et élégant d'au moins 4 étoiles situé à San Francisco Francisco."

Grâce à la compréhension des requêtes en langage naturel et au filtre de géolocalisation, la recherche est reformulée sous la forme suivante : et une requête résiduelle:

  • Filtres extraits de la requête en langage naturel, pour au moins 4 étoiles dans un rayon de 10 km de San Francisco:

    {
        "star_rating": ≥4,
        "location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
    }
    

    Dans cet exemple, GEO_DISTANCE est une adresse, mais dans d'autres requêtes, il peut s'écrire sous la forme d'une latitude et d'une longitude, même si la requête d'origine contient une adresse.

  • Requête résiduelle, reformulée après l'extraction des filtres:

    chic and stylish in San Francisco

    Bien que le filtre de géolocalisation soit créé, le nom du lieu reste dans le requête résiduelle. Cela diffère des autres filtres, tels que star_rating.

Limites

Les limites suivantes s'appliquent à la compréhension des requêtes en langage naturel :

  • La compréhension des requêtes en langage naturel ne peut pas être appliquée aux applications de recherche combinée. Une erreur s'affiche si vous essayez d'utiliser la compréhension des requêtes en langage naturel avec une application de recherche combinée.

  • La compréhension des requêtes en langage naturel fonctionne pour toute application de recherche générique qui utilise des données structurées. Toutefois, Google ne recommande pas d'utiliser cette fonctionnalité avec les types de données structurées suivants :

    • Données non structurées avec métadonnées
    • Données du site Web avec données structurées

    Cette fonctionnalité ne produira probablement pas de bons résultats lorsqu'elle sera appliquée à ces types de données structurées, car elles ne contiennent généralement pas de contenu, mais des informations sur la nature du contenu.

  • L'utilisation de la compréhension des requêtes en langage naturel augmente la latence. Vous pouvez donc choisir de ne pas l'utiliser si la latence pose problème.

  • Pour la géolocalisation, l'emplacement doit être décrit explicitement. Vous ne pouvez pas utiliser des lieux tels que "à proximité" ou "domicile".

  • Le rayon de géolocalisation est de 10 km et n'est pas configurable.

Avant de commencer

Avant de commencer à utiliser la compréhension des requêtes en langage naturel, vous devez l'activer pour les data stores associé aux applications que vous prévoyez d'utiliser.

Pour activer la compréhension des requêtes en langage naturel, procédez comme suit:

REST

  1. Recherchez l'ID de votre data store. Si vous disposez déjà de votre data store ID, passez à l'étape suivante.

    1. Dans la console Google Cloud, accédez à la page Agent Builder et cliquez sur Data Stores dans le menu de navigation.

      Accéder à la page "Data stores"

    2. Cliquez sur le nom de votre data store.

    3. Sur la page Données de votre data store, obtenez l'ID du data store.

  2. Exécutez la commande curl suivante:

    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"
          }
        }'
    
    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID : ID du data store Vertex AI Search.
  3. Répétez les étapes 1 et 2 pour chaque data store.

  4. Patientez environ 24 heures.

    Si vous essayez d'utiliser la compréhension des requêtes en langage naturel avant que le data store ne soit prêt, la réponse que vous obtenez est la même que si filterExtractionCondition était défini sur DISABLED.

Recherche, conversion des requêtes en langage naturel en filtres

Pour effectuer une recherche sur une requête en langage naturel et obtenir des résultats optimisés pour les requêtes en langage naturel, procédez comme suit :

REST

  1. Exécutez la commande curl suivante, qui appelle la méthode search méthode:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
          }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • APP_ID: ID de l'application Vertex AI Search que vous que vous souhaitez interroger. L'application doit être connecté à un data store contenant des métadonnées ou des données structurées. La l'application ne peut pas être application de recherche mélangée.
    • QUERY : la requête est écrite dans une langue naturelle.

Recherche, conversion des lieux dans les requêtes en filtres de géolocalisation

Pour effectuer une recherche en langage naturel et obtenir des résultats optimisés pour lors de requêtes en langage naturel, y compris à proximité de lieux, procédez comme suit:

REST

  1. Exécutez la commande curl suivante, qui appelle la méthode search :

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/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"]"
            }
          }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • APP_ID: ID de l'application Vertex AI Search que vous que vous souhaitez interroger. L'application doit être connecté à un data store contenant des métadonnées ou des données structurées. La l'application ne peut pas être application de recherche mélangée.
    • QUERY: la requête est écrite de façon naturelle. langue.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N : liste de valeurs de type geolocation. Si le type de valeur n'est pas geolocation, ce champ est ignoré.