Filtrar com compreensão de linguagem natural

Esta página explica como aplicar o processamento de linguagem natural para criar filtros automaticamente para consultas de pesquisa e, portanto, melhorar a qualidade dos resultados retornados.

Você pode usar esse recurso com apps de pesquisa conectados a repositórios de dados estruturados.

Sobre o processamento de consultas em linguagem natural

Se você tiver um app de pesquisa genérico com dados estruturados, as consultas de linguagem natural dos usuários poderão ser reformadas como consultas filtradas. Isso pode gerar resultados da pesquisa de melhor qualidade do que a pesquisa de palavras na string de consulta.

Usar processamento de consultas em linguagem natural é mais fácil e flexível do que escrever seu próprio filtro e expressões. Para informações sobre como escrever expressões de filtro, consulte Filtrar a pesquisa genérica para dados estruturados ou não estruturados.

Para explicar melhor este recurso, aprenda a usar exemplos:

Exemplo: extração de campos de consultas

Esse recurso de processamento de consultas em linguagem natural é explicado pelo exemplo de pesquisa por um hotel.

Considere a seguinte consulta feita em um repositório de dados estruturados para o site de um hotel: "Encontre um hotel familiar com pelo menos quatro estrelas que custa menos de 300 por noite, permite que eu leve meu cachorro e tem Wi-Fi gratuito."

Sem o entendimento da consulta de linguagem natural, o app de pesquisa procura documentos que contenham as palavras da consulta.

Com a compreensão de consultas em linguagem natural e dados estruturados de maneira adequada, a pesquisa fica 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 o seguintes filtros mais uma consulta residual:

  • Filtros extraídos da consulta em 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, mas inclui um filtro de geolocalização, que é um tipo especial de filtro extraído. A Vertex AI Search consegue reconhecer locais em uma consulta e criar filtros de proximidade para eles.

Considere a seguinte consulta feita em um site de empresas em todo o estado: "Encontre um hotel chique e estiloso com pelo menos 4 estrelas que esteja em São Paulo São Francisco".

Com o processamento de consultas em 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 4 estrelas e em um raio de 10 km de São Francisco:

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

    Neste exemplo, GEO_DISTANCE é um endereço, mas, em outras consultas, pode ser escrita como latitude e longitude, mesmo que a consulta original continha um endereço.

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

    chic and stylish in San Francisco

    Embora o filtro de geolocalização seja feito, o nome do lugar permanece no consulta residual. Ele é diferente dos outros filtros, como o star_rating:

Limitações

As limitações a seguir se aplicam à 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. Você recebe um erro se tentar usar a compreensão de consultas em linguagem natural com um app de pesquisa combinada.

  • O processamento de consultas em linguagem natural funciona para qualquer app de pesquisa genérica que use dados estruturados. No entanto, o Google não recomenda usar esse recurso com os seguintes tipos de dados estruturados:

    • Dados não estruturados com metadados
    • Dados do site com dados estruturados

    É improvável que esse recurso produza bons resultados quando aplicado a esses tipos de dados estruturados, porque eles geralmente não contêm conteúdo, mas têm informações sobre a natureza do conteúdo.

  • Usar o processamento de consultas de linguagem natural aumenta a latência, portanto, você pode optar por não usá-lo se a latência for um problema.

  • Para geolocalização, o local precisa ser descrito explicitamente. Não é possível usar locais como "perto de mim" ou "casa".

  • O raio da geolocalização é de 10 km e não pode ser configurado.

Antes de começar

Antes de começar a usar a compreensão de consultas em linguagem natural, ative-a para os repositórios de dados conectados aos apps que você planeja usar.

Para ativar a compreensão de consultas em linguagem natural, siga estas etapas:

REST

  1. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console do Google Cloud, acesse a página Criador de agentes e, no menu de navegação, clique em Repositórios de dados.

      Acessar a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  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"
          }
        }'
    
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
  3. Repita as etapas 1 e 2 para cada repositório de dados.

  4. Aguarde aproximadamente 24 horas.

    Se você tentar usar a compreensão de consultas de linguagem natural antes que o repositório de dados esteja pronto, a resposta será a mesma que se filterExtractionCondition fosse definido como DISABLED.

Pesquisa, conversão de consultas de linguagem natural em filtros

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

REST

  1. Execute o comando curl a seguir, 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • APP_ID: o ID do app da Vertex AI para Pesquisa que você quer consultar. O app precisa estar conectado a um repositório de dados que contenha dados estruturados ou metadados. O app não pode ser um aplicativo de pesquisa mista.
    • QUERY: a consulta está escrita em uma linguagem natural.

Pesquisar, convertendo locais em consultas em filtros de geolocalização

Para pesquisar em uma consulta em linguagem natural e receber resultados otimizados para consultas de linguagem natural, incluindo a proximidade de locais, 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • APP_ID: o ID do app da Vertex AI para Pesquisa que você quer consultar. O app precisa estar conectado a um repositório de dados que contenha dados estruturados ou metadados. O app não pode ser um aplicativo de pesquisa mista.
    • QUERY: a consulta está escrita em uma linguagem 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, esse campo será ignorado.