Filtra con la comprensión del lenguaje natural

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, por lo tanto, mejorar la calidad de los resultados que se muestran.

Puedes usar esta función con apps de búsqueda que estén conectadas a almacenes de datos estructurados.

Información acerca de la comprensión de consultas de lenguaje natural

Si tienes una app de búsqueda genérica con datos estructurados, las consultas en lenguaje natural de tus usuarios se pueden volver a dar formato como consultas filtradas. Esto puede generar resultados de búsqueda de mejor calidad que la búsqueda de palabras en la cadena de consulta.

El uso de la comprensión de consultas de 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 genérica de datos estructurados o no estructurados.

Esta función se explica mejor con ejemplos:

Ejemplo: Extracción de campos de consultas

Esta función de comprensión de consultas de lenguaje natural se explica a través del ejemplo de la búsqueda de un hotel.

Considera la siguiente consulta realizada a un almacén de datos estructurados para un sitio de hotel: "Encuéntrame un hotel familiar con al menos cuatro estrellas que cueste menos que USD 300 por noche, que me permita llevar a mi perro y que tenga Wi-Fi gratuito".

Sin la comprensión de las consultas de lenguaje natural, la app de búsqueda busca documentos que contengan las palabras de la consulta.

Con la comprensión de las consultas en lenguaje natural y los datos estructurados de forma adecuada, la búsqueda se vuelve más efectiva, ya que reemplaza parte del lenguaje natural de la consulta con filtros. Si los datos estructurados tienen campos para star_rating (números), price (números) y amenities (cadenas), la consulta se puede volver a escribir como los siguientes filtros más una consulta residual:

  • Filtros extraídos de la consulta de 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, excepto que incluye un filtro de geolocalización, 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.

Considera la siguiente consulta realizada a un sitio de negocios a nivel estatal: "Encuéntrame un hotel elegante y con estilo con al menos 4 estrellas en San Francisco".

Con la comprensión de consultas en lenguaje natural y el filtro de geolocalización, la búsqueda se reformula como filtros y una consulta residual:

  • Filtros extraídos de la búsqueda en lenguaje natural, con una calificación mínima 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 consultas, podría escribirse como una latitud y una longitud, aunque la consulta original contenía una dirección.

  • Consulta residual, reformulada después de extraer los filtros:

    chic and stylish in San Francisco

    Aunque se aplica el filtro de geolocalización, 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 al entendimiento de las consultas de lenguaje natural:

  • La comprensión de consultas de 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 de lenguaje natural con una app de búsqueda combinada.

  • La comprensión de consultas en lenguaje natural solo funciona para apps de búsqueda genéricas que usan almacenes de datos estructurados.

  • El uso de la comprensión de consultas de lenguaje natural aumenta la latencia, por lo que es posible que prefieras no usarla si esta 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 comenzar

Antes de comenzar a usar la comprensión de consultas de lenguaje natural, debes habilitarla para los almacenes de datos estructurados conectados a las apps que planeas usar.

Para habilitar la comprensión de consultas de lenguaje natural, sigue estos pasos:

REST

  1. Busca el ID de tu almacén de datos. Si ya tienes el ID del almacén de datos, ve al siguiente paso.

    1. En la consola de Google Cloud, ve a la página Agent Builder y, en el menú de navegación, haz clic en Almacenes de datos.

      Ve a la página Almacenes de datos.

    2. Haz clic en el nombre de tu almacén de datos.

    3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

  2. 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"
          }
        }'
    
    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
  3. Repite los pasos 1 y 2 para cada almacén de datos.

  4. 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 obtienes es la misma que si filterExtractionCondition se configurara como DISABLED.

Búsqueda, conversión de consultas de lenguaje natural en filtros

Para buscar en una consulta en lenguaje natural y obtener resultados optimizados para las consultas en lenguaje natural, haz lo siguiente:

REST

  1. 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: El ID del proyecto de Google Cloud.
    • APP_ID: El ID de la app de Vertex AI Search que quieres 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 consulta está escrita en un lenguaje natural.

Búsqueda, conversión de ubicaciones en consultas a filtros de geolocalización

Para buscar una consulta en lenguaje natural y obtener resultados optimizados para las consultas en lenguaje natural, incluida la proximidad a las ubicaciones, haz lo siguiente:

REST

  1. 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: El ID del proyecto de Google Cloud.
    • APP_ID: El ID de la app de Vertex AI Search que quieres 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 consulta está escrita en un lenguaje natural.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: Es una lista de valores de tipo geolocation. Si el tipo de valor no es geolocation, se ignora este campo.