En esta página, se explica cómo aplicar la comprensión del lenguaje natural para crear filtros automáticamente para las búsquedas y, de este modo, mejorar la calidad de los resultados que se muestran.
Puedes usar esta función con las apps 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 app de búsqueda personalizada con datos estructurados, las consultas en lenguaje natural de tus usuarios se pueden reformatear como consultas filtradas. Esto puede generar resultados de búsqueda de mejor calidad que la búsqueda de palabras en la cadena de consulta.
Usar la comprensió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 Cómo filtrar la Búsqueda personalizada para datos estructurados o no estructurados.
Esta función se explica mejor con ejemplos:
En Ejemplo: Extracción de campos de búsquedas, se muestran los filtros de campos extraídos de la búsqueda.
Ejemplo: Con un filtro de ubicación geográfica incluye el caso especial del filtro de ubicación geográfica.
Ejemplo: Extracción de campos de búsquedas
Esta función de comprensión de consultas en lenguaje natural se explica a través del ejemplo de la búsqueda de un hotel.
Toma la siguiente búsqueda realizada en un almacén de datos estructurados para un sitio de hoteles: "Encuentra un hotel familiar con al menos cuatro estrellas que cueste menos de USD 300 por noche, que me permita llevar a mi perro y que tenga Wi-Fi gratis".
Sin la comprensión de consultas en lenguaje natural, la app de búsqueda busca documentos que contengan las palabras de la consulta.
Con la comprensión de consultas en lenguaje natural y los datos estructurados de forma adecuada, la búsqueda se vuelve más eficaz, ya que se reemplaza 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 búsqueda en lenguaje natural:
{ "star_rating": ≥4, "price": ≤300, "amenities": "Wifi", "Pets Allowed" }
Consulta residual, reformulada después de que se extraen los filtros:
family-friendly
Ejemplo: Con un filtro de ubicación geográfica
Este ejemplo es similar al anterior, excepto que incluye un filtro de ubicación geográfica, que es un tipo especial de filtro extraído. Vertex AI Search puede reconocer ubicaciones en una búsqueda y crear filtros de proximidad para ellas.
Toma la siguiente búsqueda realizada en un sitio comercial estatal: "Encuentra un hotel elegante y con estilo de al menos 4 estrellas en San Francisco".
Con la comprensión de consultas en lenguaje natural y el filtro de ubicación geográfica, la búsqueda se reformula como filtros y una consulta residual:
Filtros extraídos de la búsqueda en lenguaje natural, para al menos una calificación de 4 estrellas y dentro de 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 búsquedas, podría escribirse como una latitud y una longitud, aunque la búsqueda original contenga una dirección.Consulta residual, reformulada después de que se extraen los filtros:
chic and stylish in San Francisco
Aunque se crea el filtro de ubicación geográfica, el nombre del lugar permanece en la consulta residual. Esto es diferente de los otros filtros, como
star_rating
.
Limitaciones
Las siguientes limitaciones se aplican a la comprensión de preguntas en lenguaje natural:
La comprensión de consultas en lenguaje natural no se puede aplicar a las apps de búsqueda combinada. Recibirás un error si intentas usar la comprensión de consultas en lenguaje natural con una app de búsqueda combinada.
La comprensión de consultas en lenguaje natural solo funciona para las apps de búsqueda personalizadas que usan almacenes de datos estructurados.
Usar la comprensión de consultas en lenguaje natural aumenta la latencia, por lo que es posible 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 ubicación geográfica es de 10 km y no se puede configurar.
Antes de comenzar
Antes de comenzar a usar la comprensión de preguntas en lenguaje natural, debes habilitarla para los almacenes de datos estructurados conectados a las apps que planeas usar.
Para habilitar la comprensión de consultas en lenguaje natural, sigue estos pasos:
REST
Busca el ID de tu almacén de datos. Si ya tienes el ID del almacén de datos, ve al siguiente paso.
En la consola de Google Cloud , ve a la página AI Applications y, en el menú de navegación, haz clic en Data Stores.
Haz clic en el nombre de tu almacén de datos.
En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.
Ejecuta el siguiente comando de 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" } }'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .DATA_STORE_ID
: Es 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 establecido enDISABLED
.
Búsqueda, que convierte las consultas en lenguaje natural en filtros
Para buscar una consulta en lenguaje natural y obtener resultados optimizados para consultas en lenguaje natural, haz lo siguiente:
REST
Ejecuta el siguiente comando de 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" } }'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .APP_ID
: Es el ID de la app de Vertex AI Search que deseas consultar. La app debe estar conectada a un almacén de datos que contenga datos estructurados. La app no puede ser una app de búsqueda combinada.QUERY
: La búsqueda se escribe en lenguaje natural.
Búsqueda, que convierte las ubicaciones de las búsquedas en filtros de ubicación geográfica
Para buscar una consulta en lenguaje natural y obtener resultados optimizados para consultas en lenguaje natural, incluida la proximidad a las ubicaciones, haz lo siguiente:
REST
Ejecuta el siguiente comando de 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"]" } }'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .APP_ID
: Es el ID de la app de Vertex AI Search que deseas consultar. La app debe estar conectada a un almacén de datos que contenga datos estructurados. La app no puede ser una app de búsqueda combinada.QUERY
: La búsqueda se escribe en lenguaje natural.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N
: Es una lista de valores de tipogeolocation
. Si el tipo de valor no esgeolocation
, se ignora este campo.