Criar uma consulta semântica na Pesquisa de IA do Azure

Neste artigo, aprenda a invocar uma classificação semântica em um conjunto de resultados, promovendo os resultados semanticamente mais relevantes para a parte superior da pilha. Você também pode obter legendas semânticas, com destaques sobre os termos e frases mais relevantes e respostas semânticas.

Pré-requisitos

Observação

As legendas e as respostas são extraídas literalmente do texto no documento de pesquisa. O subsistema semântico usa a compreensão de leitura de computador para reconhecer o conteúdo que tem as características de uma legenda ou resposta, mas não compõe novas frases ou orações. Por isso, o conteúdo que inclui explicações ou definições funciona melhor para a classificação semântica. Se você deseja ter uma interação no estilo chat com respostas geradas, confira RAG (Geração Aumentada de Recuperação).

Selecione um cliente

Escolha um cliente de pesquisa que dê suporte à classificação semântica. Estas são algumas opções:

Evitar recursos que ignoram a pontuação de relevância

Vários recursos de consulta no Azure AI Search ignoram a pontuação de relevância ou são incompatíveis com a classificação semântica. Se a lógica de consulta incluir os seguintes recursos, você não poderá classificar os resultados semanticamente:

  • Uma consulta com search=* ou uma cadeia de caracteres de pesquisa vazia, como consulta pura somente de filtro, não irá funcionar porque não há nada para medir a relevância semântica. A consulta deve fornecer termos ou frases que possam ser avaliados durante o processamento.

  • Uma consulta composta na sintaxe completa de Lucene (queryType=full) é incompatível com a classificação semântica (queryType=semantic). O modelo semântico não dá suporte à sintaxe de Lucene completa.

  • A classificação (cláusulas orderBy) em campos específicos substitui as pontuações de pesquisa e uma pontuação semântica. Considerando que a pontuação semântica deve fornecer a classificação, adicionar uma cláusula orderby resultará em um erro HTTP 400, se você aplicar a classificação semântica sobre os resultados ordenados.

Configurar a consulta

Nesta etapa, adicione parâmetros à solicitação de consulta. Para ser bem-sucedida, sua consulta deve ser uma pesquisa de texto completo (usando o parâmetro search para passar uma cadeia de caracteres) e o índice deve conter campos de texto com conteúdo semântico avançado e uma configuração semântica.

O Gerenciador de Pesquisa inclui opções de classificação semântica.

  1. Entre no portal do Azure.

  2. Abra o índice de pesquisa e selecione Gerenciador de pesquisa.

  3. Selecione Opções de Consulta. Se você já definiu uma configuração semântica, ela será selecionada por padrão. Se você não tiver uma, crie uma configuração semântica para o índice.

    Screenshot showing query options in Search explorer.

  4. Insira uma consulta, como "hotel histórico com boa comida" e selecione Pesquisar.

  5. Como alternativa, selecione o modo de exibição JSON e cole as definições no editor de consultas:

    Screenshot showing JSON query syntax in the Azure portal.

    Aqui está um texto JSON que você pode colar na exibição:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

Avaliar a resposta

Somente as principais 50 correspondências dos resultados iniciais podem ser classificadas semanticamente. Assim como acontece com todas as consultas, uma resposta é composta por todos os campos marcados como recuperáveis ou apenas pelos campos listados no parâmetro de seleção. Uma resposta inclui a pontuação de relevância original e também pode incluir uma contagem ou resultados em lote, dependendo de como a solicitação foi formulada.

Em uma classificação semântica, a resposta tem mais elementos: uma nova pontuação de relevância classificada semanticamente, uma legenda opcional em texto sem formatação e com destaques e uma resposta opcional. Se os resultados não incluírem esses elementos extras, sua consulta poderá estar configurada incorretamente. Como uma primeira etapa para solucionar o problema, verifique a configuração semântica para garantir que ela seja especificada na definição de índice e na consulta.

Em um aplicativo cliente, você pode estruturar a página de pesquisa para incluir uma legenda como descrição da correspondência, em vez de todo o conteúdo de um campo específico. Essa abordagem é útil quando campos individuais são muito densos para a página de resultados da pesquisa.

A resposta da consulta de exemplo acima retorna a correspondência exibida abaixo como a seleção superior. As legendas são retornadas porque a propriedade "captions" está definida, com texto sem formatação e versões realçadas. As respostas foram omitidas do exemplo porque não foi possível encontrar uma para esta consulta e corpus em especial.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

Próximas etapas

A classificação semântica pode ser usada em consultas híbridas que combinam busca de palavra-chave e busca em vetores em uma única solicitação e uma resposta unificada.