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, assim, melhorar a qualidade dos resultados retornados.

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

Sobre a compreensão de consultas de linguagem natural

Se você tiver um app de pesquisa personalizada com dados estruturados, as consultas em linguagem natural dos usuários poderão ser reformuladas como consultas filtradas. Isso pode levar a resultados de pesquisa de melhor qualidade do que pesquisar palavras na string de consulta.

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

Confira alguns exemplos para entender melhor esse recurso:

Exemplo: extração de campos de consultas

Esse recurso de compreensão de consultas de linguagem natural é explicado com o exemplo de pesquisa de um hotel.

Confira a seguinte consulta feita a um repositório de dados estruturados para um site de hotel: "Encontre um hotel para famílias com pelo menos quatro estrelas que custe menos de 300 por noite, permita que eu leve meu cachorro e tenha Wi-Fi gratuito."

Sem o entendimento de consultas em 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 adequadamente, a pesquisa se torna 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 poderá ser reescrita como os 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.

Faça a seguinte consulta em um site de negócios em todo o estado: "Encontre um hotel elegante e moderno com pelo menos quatro estrelas em São Francisco."

Com o entendimento 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 uma classificação de 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, ele pode ser escrito como uma latitude e uma longitude, mesmo que a consulta original contenha 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 na consulta residual. Isso é diferente dos outros filtros, como o star_rating.

Limitações

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

  • A compreensão de consultas em linguagem natural não pode ser aplicada a apps de pesquisa combinada. Você vai receber um erro se tentar usar a compreensão de consultas em linguagem natural com um app de pesquisa combinada.

  • A compreensão de consultas em linguagem natural só funciona para apps de pesquisa personalizados que usam repositórios de dados estruturados.

  • Usar o entendimento de consultas em linguagem natural aumenta a latência. Por isso, talvez você prefira não usar esse recurso 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 para 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, é preciso ativar esse recurso para os repositórios de dados estruturados 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 Google Cloud , acesse a página Aplicativos de IA e, no menu de navegação, clique em Repositórios de dados.

      Acesse 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"
          }
        }'
    

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • 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 em linguagem natural antes que o repositório de dados esteja pronto, a resposta será 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 receber resultados otimizados para consultas em 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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • 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. O app não pode ser um app de pesquisa combinada.
    • QUERY: a consulta é escrita em uma linguagem natural.

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

Para pesquisar uma consulta em linguagem natural e receber resultados otimizados para consultas em linguagem natural, incluindo 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 Google Cloud projeto.
    • 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. O app não pode ser um app de pesquisa combinada.
    • QUERY: a consulta é 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.