Cette page explique comment appliquer la compréhension du langage naturel pour créer automatiquement des filtres pour les requêtes de recherche et, par conséquent, améliorer la qualité des résultats renvoyés.
Vous pouvez utiliser cette fonctionnalité avec des applications de recherche connectées à des data stores de données structurées.
À 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 simple et plus flexible que d'écrire vos propres expressions de 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 montre les filtres de champ extraits de la requête.
Exemple: Avec un filtre de géolocalisation inclut le cas particulier du filtre de géolocalisation.
Exemple: Extraction de champs à partir de requêtes
Cette fonctionnalité de compréhension des requêtes en langage naturel est expliquée à l'aide de l'exemple de recherche d'un hôtel.
Prenons l'exemple de la requête suivante envoyée à un data store 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 de 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
(nombres), price
(nombres) et amenities
(chaînes), la requête peut être réécrite en tant que 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 à l'exemple précédent, mais il inclut un filtre de position géographique, qui est un type spécial de filtre extrait. Vertex AI Search peut reconnaître des lieux dans une requête et créer des filtres de proximité pour ces lieux.
Prenons l'exemple de la requête suivante envoyée à un site d'entreprise à l'échelle de l'État : "Trouvez-moi un hôtel chic et élégant, avec au moins quatre étoiles, à San Francisco."
Grâce à la compréhension des requêtes en langage naturel et au filtre de géolocalisation, la recherche est reformulée en filtres et en requête résiduelle:
Filtres extraits de la requête en langage naturel, pour un établissement classé au moins 4 étoiles et situé 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 être écrit sous la forme de latitude et de longitude, même si la requête d'origine contenait 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 appliqué, le nom du lieu reste dans la 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 ne fonctionne que pour les applications de recherche génériques qui utilisent des data stores structurés.
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 entrepôts de données structurées connectés aux applications que vous prévoyez d'utiliser.
Pour activer la compréhension des requêtes en langage naturel, procédez comme suit:
REST
Recherchez l'ID de votre data store. Si vous disposez déjà de l'ID de votre data store, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder et cliquez sur Data Stores dans le menu de navigation.
Cliquez sur le nom de votre data store.
Sur la page Données de votre data store, obtenez l'ID du data store.
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 CloudDATA_STORE_ID
: ID du data store Vertex AI Search.
Répétez les étapes 1 et 2 pour chaque data store.
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 surDISABLED
.
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
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" } }'
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search que vous souhaitez interroger. L'application doit être connectée à un data store contenant des données structurées. L'application ne peut pas être une application de recherche combiné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 sur une requête en langage naturel et obtenir des résultats optimisés pour les requêtes en langage naturel, y compris la proximité des lieux, procédez comme suit:
REST
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 CloudAPP_ID
: ID de l'application Vertex AI Search que vous souhaitez interroger. L'application doit être connectée à un data store contenant des données structurées. L'application ne peut pas être une application de recherche combinée.QUERY
: la requête est écrite dans une langue naturelle.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N
: liste de valeurs de typegeolocation
. Si le type de valeur n'est pasgeolocation
, ce champ est ignoré.