Adicione classificação semântica a consultas no IA do Azure Search

Este artigo explica como invocar o classificador semântico em consultas. Você pode aplicar a classificação semântica a consultas de texto, consultas híbridas e consultas de vetores se os documentos de pesquisa contiverem campos de cadeia de caracteres e a consulta de vetores tiver uma representação de texto.

A classificação semântica itera sobre um conjunto de resultados inicial, aplicando uma metodologia de classificação L2 que promove os resultados semanticamente mais relevantes para o topo 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

Você pode usar qualquer uma das seguintes ferramentas e SDKs para criar uma consulta que use a classificação semântica:

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

Alguns recursos de consulta ignoram a pontuação de relevância, o que os torna 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 somente filtro puro, não funcionará porque não há nada para medir a relevância semântica e, portanto, as pontuações de pesquisa são zero. A consulta deve fornecer termos ou frases que possam ser avaliados durante o processamento.

  • 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.

    Captura de tela que mostra as opções de consulta no explorador de pesquisa.

  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:

    Captura de tela mostrando a sintaxe de consulta JSON no portal do Microsoft Azure.

    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"
    },
  ...
]

Cargas de trabalho esperadas

Para a classificação semântica, você deve esperar que um serviço de pesquisa dê suporte a até 10 consultas simultâneas por réplica.

O serviço limita as solicitações de classificação semântica se os volumes forem muito altos. Uma mensagem de erro que inclua essas frases indica que o serviço está no limite da capacidade da classificação semântica:

Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded

Se você prevê requisitos de taxa de transferência consistentes próximos, iguais ou superiores a esse nível, registre um tíquete de suporte para que possamos provisionar sua carga de trabalho.

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.