En esta página se explica cómo aplicar la comprensión del lenguaje natural para crear filtros automáticamente para las consultas de búsqueda y, por lo tanto, mejorar la calidad de los resultados devueltos.
Puedes usar esta función con aplicaciones de búsqueda que estén conectadas a almacenes de datos estructurados.
Acerca de la comprensión de consultas en lenguaje natural
Si tienes una aplicación de búsqueda personalizada con datos estructurados, las consultas en lenguaje natural de tus usuarios se pueden reformatear como consultas filtradas. Esto puede dar lugar a resultados de búsqueda de mayor calidad que si se buscan palabras en la cadena de consulta.
Usar la interpretación de consultas en lenguaje natural es más fácil y flexible que escribir tus propias expresiones de filtro. Para obtener información sobre cómo escribir expresiones de filtro, consulta Filtrar búsquedas personalizadas de datos estructurados o sin estructurar.
La mejor forma de explicar esta función es con ejemplos:
Ejemplo: extracción de campos de consultas muestra los filtros de campos extraídos de la consulta.
Ejemplo: Con un filtro de geolocalización incluye el caso especial del filtro de geolocalización.
Ejemplo: extracción de campos de consultas
Esta función de comprensión de consultas en lenguaje natural se explica con el ejemplo de la búsqueda de un hotel.
Consulta realizada a un almacén de datos estructurados de un sitio de hoteles: "Busca un hotel familiar de al menos cuatro estrellas que cueste menos de 300 € por noche, en el que pueda llevar a mi perro y que tenga Wi-Fi gratis".
Si no se comprende la consulta en lenguaje natural, la aplicación de búsqueda busca documentos que contengan las palabras de la consulta.
Gracias a la comprensión de las consultas en lenguaje natural y a los datos estructurados de forma adecuada, la búsqueda es más eficaz, ya que se sustituye parte del lenguaje natural de la consulta por filtros.
Si los datos estructurados tienen campos para star_rating
(números), price
(números) y amenities
(cadenas), la consulta se puede reescribir como los siguientes filtros más una consulta residual:
Filtros extraídos de la consulta en lenguaje natural:
{ "star_rating": ≥4, "price": ≤300, "amenities": "Wifi", "Pets Allowed" }
Consulta residual, reformulada después de extraer los filtros:
family-friendly
Ejemplo: Con un filtro de geolocalización
Este ejemplo es similar al anterior, pero incluye un filtro de geolocalización, que es un tipo especial de filtro extraído. Vertex AI Search puede reconocer ubicaciones en una consulta y crear filtros de proximidad para esas ubicaciones.
Consulta la siguiente petición hecha a un sitio web de empresas de todo el estado: "Busca un hotel elegante y con estilo de al menos 4 estrellas en San Francisco".
Gracias a la comprensión de las consultas en lenguaje natural y al filtro de geolocalización, la búsqueda se reformula como filtros y una consulta residual:
Filtros extraídos de la consulta en lenguaje natural, con una valoración de al menos 4 estrellas y a un radio de 10 km de San Francisco:
{ "star_rating": ≥4, "location": GEO_DISTANCE(\"San Francisco, CA\", 10000) }
En este ejemplo,
GEO_DISTANCE
es una dirección, pero en otras consultas podría escribirse como latitud y longitud, aunque la consulta original contuviera una dirección.Consulta residual, reformulada después de extraer los filtros:
chic and stylish in San Francisco
Aunque se haya creado el filtro de geolocalización, el nombre del sitio permanece en la consulta residual. Es diferente de otros filtros, como el de
star_rating
.
Limitaciones
Se aplican las siguientes limitaciones a la interpretación de consultas en lenguaje natural:
La comprensión de consultas en lenguaje natural no se puede aplicar a las aplicaciones de búsqueda combinada. Si intentas usar la comprensión de consultas en lenguaje natural con una aplicación de búsqueda combinada, se producirá un error.
La comprensión de consultas en lenguaje natural solo funciona en aplicaciones de búsqueda personalizada que usan almacenes de datos estructurados.
Usar la comprensión de consultas en lenguaje natural aumenta la latencia, por lo que puede que decidas no usarla si la latencia es un problema.
En el caso de la geolocalización, la ubicación debe describirse de forma explícita. No puedes usar ubicaciones como "cerca de mí" o "casa".
El radio de la geolocalización es de 10 km y no se puede configurar.
Antes de empezar
Antes de empezar a usar la comprensión de consultas en lenguaje natural, debes habilitarla en los almacenes de datos estructurados conectados a las aplicaciones que quieras usar.
Para habilitar la interpretación de consultas en lenguaje natural, sigue estos pasos:
REST
Busca el ID de tu almacén de datos. Si ya tiene el ID del almacén de datos, vaya al siguiente paso.
En la Google Cloud consola, ve a la página Aplicaciones de IA y, en el menú de navegación, haz clic en Almacenes de datos.
Haga clic en el nombre de su almacén de datos.
En la página Datos de su almacén de datos, obtenga el ID del almacén de datos.
Ejecuta el siguiente comando curl:
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" } }'
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .DATA_STORE_ID
: el ID del almacén de datos de Vertex AI Search.
Repite los pasos 1 y 2 para cada almacén de datos.
Espera aproximadamente 24 horas.
Si intentas usar la comprensión de consultas en lenguaje natural antes de que el almacén de datos esté listo, la respuesta que obtendrás será la misma que si
filterExtractionCondition
se hubiera definido comoDISABLED
.
Buscar y convertir consultas en lenguaje natural en filtros
Para buscar una consulta en lenguaje natural y obtener resultados optimizados para consultas en lenguaje natural, sigue estos pasos:
REST
Ejecuta el siguiente comando curl, que llama al método
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" } }'
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .APP_ID
: el ID de la aplicación de Vertex AI Search que quieres consultar. La aplicación debe estar conectada a un almacén de datos que contenga datos estructurados. La aplicación no puede ser una aplicación de búsqueda combinada.QUERY
: la consulta se escribe en lenguaje natural.
Búsqueda, que convierte las ubicaciones de las consultas en filtros de geolocalización
Para buscar una consulta en lenguaje natural y obtener resultados optimizados para consultas en lenguaje natural, incluida la proximidad a ubicaciones, haz lo siguiente:
REST
Ejecuta el siguiente comando curl, que llama al método
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"]" } }'
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .APP_ID
: el ID de la aplicación de Vertex AI Search que quieres consultar. La aplicación debe estar conectada a un almacén de datos que contenga datos estructurados. La aplicación no puede ser una aplicación de búsqueda combinada.QUERY
: la consulta se escribe en lenguaje natural.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N
: una lista de valores de tipogeolocation
. Si el tipo de valor no esgeolocation
, este campo se ignora.