Filtrar com a compreensão de linguagem natural

Esta página explica como aplicar a compreensão de linguagem natural para criar automaticamente filtros para consultas de pesquisa e, por conseguinte, melhorar a qualidade dos resultados devolvidos.

Pode usar esta funcionalidade com apps de pesquisa ligadas a arquivos de dados estruturados.

Acerca da compreensão de consultas de linguagem natural

Se tiver uma app de pesquisa personalizada com dados estruturados, as consultas de linguagem natural dos seus utilizadores podem ser reformatadas como consultas filtradas. Isto pode levar a resultados da pesquisa de melhor qualidade do que pesquisar palavras na string de consulta.

A utilização da compreensão de consultas em linguagem natural é mais fácil e flexível do que escrever as suas próprias expressões de filtro. Para obter informações sobre como escrever expressões de filtro, consulte o artigo Filtre a pesquisa personalizada para dados estruturados ou não estruturados.

Esta funcionalidade é melhor explicada através de exemplos:

Exemplo: extração de campos de consultas

Esta funcionalidade de compreensão de consultas de linguagem natural é explicada através do exemplo de uma pesquisa de um hotel.

Considere a seguinte consulta feita a um repositório de dados estruturados para um site de hotéis: "Encontra-me um hotel adequado para famílias com, pelo menos, quatro estrelas que custe menos de 300 por noite, que me permita levar o meu cão e que tenha Wi-Fi grátis."

Sem a compreensão de consultas de linguagem natural, a app de pesquisa procura documentos que contenham as palavras na consulta.

Com a compreensão de consultas em linguagem natural e dados estruturados adequadamente, a pesquisa torna-se mais eficaz ao substituir parte da linguagem natural na consulta por filtros. Se os dados estruturados tiverem campos para star_rating (números), price (números) e amenities (strings), a consulta pode ser reescrita como os seguintes filtros, mais uma consulta residual:

  • Filtros extraídos da consulta de linguagem natural:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • Consulta residual, reformulada após a extração dos filtros:

    family-friendly

Exemplo: com um filtro de geolocalização

Este exemplo é semelhante ao anterior, exceto que inclui um filtro de geolocalização, que é um tipo especial de filtro extraído. A Pesquisa do Vertex AI tem a capacidade de reconhecer localizações numa consulta e criar filtros de proximidade para as localizações.

Considere a seguinte consulta feita a um site de empresas a nível estadual: "Encontra-me um hotel elegante e com estilo com, pelo menos, 4 estrelas em São Francisco."

Com a compreensão de consultas de linguagem natural e o filtro de geolocalização, a pesquisa é reformulada como filtros e uma consulta residual:

  • Filtros extraídos da consulta em linguagem natural, para, pelo menos, uma classificação de 4 estrelas e num raio de 10 km de São Francisco:

    {
        "star_rating": ≥4,
        "location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
    }
    

    Neste exemplo, GEO_DISTANCE é uma morada, mas noutras consultas, pode ser escrito como uma latitude e uma longitude, mesmo que a consulta original contivesse uma morada.

  • Consulta residual, reformulada após a extração dos filtros:

    chic and stylish in San Francisco

    Embora o filtro de geolocalização seja criado, o nome do local permanece na consulta residual. Isto é diferente dos outros filtros, como o star_rating.

Limitações

As seguintes limitações aplicam-se à compreensão de consultas em linguagem natural:

  • A compreensão de consultas de linguagem natural não pode ser aplicada a apps de pesquisa combinada. Recebe um erro se tentar usar a compreensão de consultas de linguagem natural com uma app de pesquisa combinada.

  • A compreensão de consultas de linguagem natural só funciona para apps de pesquisa personalizadas que usam arquivos de dados estruturados.

  • A utilização da compreensão de consultas em linguagem natural aumenta a latência, pelo que pode optar por não a utilizar se a latência for um problema.

  • Para a geolocalização, a localização tem de ser descrita explicitamente. Não pode usar localizações como "perto de mim" ou "casa".

  • O raio da geolocalização é de 10 km e não é configurável.

Antes de começar

Antes de começar a usar a compreensão de consultas em linguagem natural, tem de a ativar para os arquivos de dados estruturados associados às apps que planeia usar.

Para ativar a compreensão de consultas em linguagem natural, siga estes passos:

REST

  1. Encontre o ID da loja de dados. Se já tiver o ID do armazenamento de dados, avance para o passo seguinte.

    1. Na Google Cloud consola, aceda à página Aplicações de IA e, no menu de navegação, clique em Armazenamentos de dados.

      Aceda à página Armazenamentos de dados

    2. Clique no nome do seu arquivo de dados.

    3. Na página Dados da sua loja de dados, obtenha o ID da loja de dados.

  2. Execute o seguinte 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"
          }
        }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search.
  3. Repita os passos 1 e 2 para cada arquivo de dados.

  4. Aguarde aproximadamente 24 horas.

    Se tentar usar a compreensão de consultas em linguagem natural antes de o repositório de dados estar pronto, a resposta que recebe é a mesma que se filterExtractionCondition estivesse definido como DISABLED.

Pesquisar, convertendo consultas de linguagem natural em filtros

Para pesquisar uma consulta em linguagem natural e obter resultados otimizados para consultas de linguagem natural, faça o seguinte:

REST

  1. Execute o seguinte comando curl, que chama o 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"
            }
          }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • APP_ID: o ID da app Vertex AI Search que quer consultar. A app tem de estar associada a um armazenamento de dados que contenha dados estruturados. A app não pode ser uma app de pesquisa mista.
    • QUERY: a consulta está escrita num idioma natural.

Pesquisa, convertendo localizações em consultas para filtros de geolocalização

Para pesquisar uma consulta em linguagem natural e obter resultados otimizados para consultas de linguagem natural, incluindo a proximidade a localizações, faça o seguinte:

REST

  1. Execute o seguinte comando curl, que chama o 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"]"
            }
          }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • APP_ID: o ID da app Vertex AI Search que quer consultar. A app tem de estar associada a um armazenamento de dados que contenha dados estruturados. A app não pode ser uma app de pesquisa mista.
    • QUERY: a consulta está escrita num idioma natural.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: uma lista de valores do tipo geolocation. Se o tipo de valor não for geolocation, este campo é ignorado.