Filtra con la comprensión del lenguaje natural

En esta página, se explica cómo aplicar la comprensión del lenguaje natural a las APIs hacer filtros para las consultas de búsqueda y, por lo tanto, mejorar la calidad de la resultados devueltos.

Puedes usar esta función con 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 genérica con datos estructurados, tus usuarios las consultas en lenguaje natural pueden cambiarse a un formato filtrado para tus consultas. 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 tu propio filtro. con expresiones regulares. 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 en lenguaje natural se explica mediante el 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), entonces la consulta se puede reescribir como el 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 que se extraen 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 latitud y longitud, aunque la consulta original contenían una dirección.

  • Consulta residual, que se reformula después de que se extraen 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. Es diferente de los otros filtros, como el star_rating

Limitaciones

Las siguientes limitaciones se aplican a la comprensión de consultas en lenguaje natural:

  • La comprensión de consultas de lenguaje natural no se puede aplicar a las apps de búsqueda combinada. Tú Se mostrará 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 funciona para cualquier app de búsqueda genérica que use datos estructurados. Sin embargo, Google no recomienda usar esta función con los siguientes tipos de datos estructurados:

    • Datos no estructurados con metadatos
    • Datos del sitio web con datos estructurados

    Es poco probable que esta función genere buenos resultados cuando se aplique a estos tipos de datos estructurados, ya que, por lo general, no contienen contenido, sino información sobre la naturaleza del contenido.

  • El uso de la comprensión de consultas en lenguaje natural aumenta la latencia, por lo que puede optar por no usarlo si la latencia es un problema.

  • En el caso de la geolocalización, la ubicación debe describirse de forma explícita. Tú no se pueden 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 conectados a las apps que planeas usar.

Para habilitar la comprensión de consultas en 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.

      Ir 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 realizar una búsqueda en un lenguaje natural y obtener resultados optimizados para en lenguaje natural, haz lo siguiente:

REST

  1. Ejecuta el siguiente comando curl, que llama a search método:

    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: Es el ID de la app de Vertex AI Search que usaste. que deseas consultar. La app debe ser conectadas a un almacén de datos que contiene datos estructurados o metadatos. La app no puede ser una app de búsqueda combinada.
    • QUERY: La consulta está escrita de una forma idioma.

Búsqueda, conversión de ubicaciones en consultas a filtros de ubicación geográfica

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 curl, que llama a search método:

    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: Es el ID de la app de Vertex AI Search que usaste. que deseas consultar. La app debe ser conectadas a un almacén de datos que contiene datos estructurados o metadatos. La app no puede ser una app de búsqueda combinada.
    • QUERY: La consulta está escrita de una forma idioma.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: una lista de valores de tipo geolocation. Si el tipo de valor no es geolocation, se ignora este campo.