Cette page explique comment appliquer la compréhension du langage naturel pour créer automatiquement des filtres pour les requêtes de recherche et, ainsi, améliorer la qualité des résultats renvoyés.
Vous pouvez utiliser cette fonctionnalité avec les 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 personnalisée avec des données structurées, les requêtes en langage naturel de vos utilisateurs peuvent être reformulées en requêtes filtrées. Cela peut permettre d'obtenir des résultats de recherche de meilleure qualité que si vous recherchiez des mots dans la chaîne de requête.
Il est plus facile et plus flexible d'utiliser la compréhension des requêtes en langage naturel que d'écrire vos propres expressions de filtre. Pour savoir comment écrire des expressions de filtre, consultez Filtrer la recherche personnalisée pour les données structurées ou non structurées.
Cette fonctionnalité est plus facile à comprendre à l'aide d'exemples :
L'exemple d'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 à travers l'exemple de la recherche d'un hôtel.
Prenez la requête suivante effectuée dans un data store structurées pour un site d'hôtel : "Trouve-moi un hôtel adapté aux familles avec au moins quatre étoiles, qui coûte moins de 300 € par nuit, qui accepte les chiens et qui propose le 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 à des données structurées de manière appropriée, la recherche est plus efficace, car certains éléments en langage naturel de la requête sont remplacés 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 sous la forme des 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 un filtre de géolocalisation, qui est un type spécial de filtre extrait. Vertex AI Search peut reconnaître les lieux dans une requête et créer des filtres de proximité pour ces lieux.
Prenons l'exemple de la requête suivante effectuée sur un site d'entreprises à l'échelle de l'État : "Trouve-moi un hôtel chic et élégant d'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 une note d'au moins 4 étoiles et dans un rayon de 10 km autour 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, elle peut être écrite sous la forme d'une latitude et d'une 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 créé, le nom du lieu reste dans la requête résiduelle. Il 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 personnalisées qui utilisent des magasins de données structurées.
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 la 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 magasins 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
Trouvez 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 Applications d'IA 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 datastore, obtenez l'ID du datastore.
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" } }'
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google Cloud .DATA_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
.
Rechercher en convertissant des requêtes en langage naturel en filtres
Pour effectuer une recherche à l'aide d'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 Cloud .APP_ID
: ID de l'application Vertex AI Search que vous souhaitez interroger. L'application doit être associé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 rédigée en langage naturel.
Recherche, conversion des lieux dans les requêtes en filtres de géolocalisation
Pour rechercher 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 Cloud .APP_ID
: ID de l'application Vertex AI Search que vous souhaitez interroger. L'application doit être associé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 rédigée en langage naturel.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é.