Retornar uma resposta semântica no Azure AI Search

Ao invocar uma classificação semântica e legendas, você pode, opcionalmente, extrair conteúdo dos documentos com maior correspondência que "responde" diretamente à consulta. É possível retornar uma ou mais respostas, que você pode renderizar em uma página de pesquisa para melhorar a experiência do usuário do aplicativo.

Uma resposta semântica é o conteúdo verbatim no seu índice de pesquisa que um modelo de compreensão de leitura reconheceu como resposta para a consulta feita na solicitação. Não é uma resposta gerada. Para obter diretrizes sobre um modelo de interação do usuário no estilo chat que usa IA generativa para redigir respostas do conteúdo, confira RAG (Geração Aumentada de Recuperação).

Neste artigo, saiba como solicitar uma resposta semântica, descompactar o conteúdo retornado e descobrir quais características de conteúdo são mais úteis para produzir respostas de alta qualidade.

Pré-requisitos

Todos os pré-requisitos que se aplicam a consultas semânticas também se aplicam a respostas, incluindo a camada de serviço e a região.

  • A lógica de consulta deve incluir os parâmetros de consulta semântica "queryType=semantic", além do parâmetro "respostas". Os parâmetros necessários são discutidos neste artigo.

  • As cadeias de caracteres de consulta inseridas pelo usuário devem ser reconhecíveis como uma pergunta (o que, onde, quando, como).

  • Os documentos de pesquisa no índice devem conter texto com as características de uma resposta, e esse texto deve existir em um dos campos listados em configuração semântica. Por exemplo, numa consulta "o que é uma tabela de hash", se nenhum dos campos na configuração semântica tiver passagens que incluam "Uma tabela de hash é...", será pouco provável que seja devolvida uma resposta.

Observação

A partir da versão 2021-04-30-Preview, nas solicitações Criar ou atualizar índice (versão prévia), um "semanticConfiguration" é necessário para especificar os campos de entrada para classificação semântica.

O que é uma resposta semântica?

Uma resposta semântica é uma subestrutura de uma resposta de consulta semântica. Ele consiste em uma ou mais passagens literais de um documento de pesquisa, formulado como uma resposta a uma consulta que se parece com uma pergunta. Para que a resposta seja retornada, um documento de pesquisa deve conter frases ou sentenças que tenham as características da linguagem de uma resposta, e a consulta em si deve ser apresentada como uma pergunta.

O Azure AI Search usa um modelo de compreensão de leitura de máquina para reconhecer e escolher a melhor resposta. O modelo produz um conjunto de possíveis respostas usando o conteúdo disponível e, quando atinge um nível de confiança alto o suficiente, propõe um como uma resposta.

As respostas são retornadas como um objeto independente e de nível superior no conteúdo de retorno da consulta, que você pode renderizar em páginas de pesquisa com os resultados. Estruturalmente, trata-se de um elemento de matriz dentro da resposta que consiste em texto, uma chave de documento e uma pontuação de confiança.

Formular uma consulta REST para "respostas"

Para retornar uma resposta semântica, a consulta deve ter os parâmetros semânticos "queryType", "queryLanguage", "semanticConfiguration" e "answers". Especificar esses parâmetros não garante uma resposta, mas a solicitação deve incluí-los para que o processamento de resposta ocorra.

{
    "search": "how do clouds form",
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config",
    "answers": "extractive|count-3",
    "captions": "extractive|highlight-true",
    "count": "true"
}
  • A cadeia de caracteres de consulta não deve ser nula e deve ser formulada como uma pergunta.

  • "queryType" deve ser definido como semântico.

  • "queryLanguage" deve ser um dos valores da lista de idiomas com suporte (API REST).

  • Um "semanticConfiguration" determina quais campos de cadeia de caracteres fornecem tokens para o modelo de extração. Os mesmos campos que produzem legendas também produzem respostas. Consulte Criar uma configuração semântica para obter detalhes.

  • Para "answers", a construção do parâmetro é "answers": "extractive", em que o número padrão de respostas retornadas é um. Você pode aumentar o número de respostas adicionando um count, como exibido no exemplo acima, até um máximo de 10. A necessidade de mais de uma resposta depende da experiência do usuário do seu aplicativo e de como você deseja renderizar os resultados.

Descompactar uma "resposta" da resposta

As respostas são incluídas na matriz "@search.answers", que aparece primeiro na resposta da consulta. Cada resposta na matriz inclui:

  • Chave de documento
  • Texto ou conteúdo da resposta, em texto sem formatação ou com formatação
  • Pontuação de confiança

Se uma resposta for indeterminada, o conteúdo retornado será exibido como "@search.answers": []. A matriz de respostas é seguida pela matriz de valor, que é a resposta padrão em uma consulta semântica.

Dada a consulta "como as nuvens se formam", o exemplo a seguir ilustra uma resposta:

{
    "@search.answers": [
        {
            "key": "4123",
            "text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the   atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case),   but not where it is descending (over the river).",
            "highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the   atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case),   but not where it is<em> descending</em> (over the river).",
            "score": 0.94639826
        }
    ],
    "value": [
        {
            "@search.score": 0.5479723,
            "@search.rerankerScore": 1.0321671911515296,
            "@search.captions": [
                {
                    "text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
                    "highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at    which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
                }
            ],
            "title": "Earth Atmosphere",
            "content": "Fog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at  \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
            "locations": [
                "Pacific Northwest",
                "North America",
                "Vancouver"
            ]
        }
    ]
}

Ao criar uma página de resultados de pesquisa que inclua respostas, você deve lidar com os casos em que nenhuma resposta é encontrada.

Em @search.answers:

  • "key" é a chave do documento ou a ID da correspondência. Dada uma chave de documento, você pode usar a API Documento de Pesquisa para recuperar uma ou todas as partes do documento de pesquisa a serem incluídas na página de pesquisa ou em uma página de detalhes.

  • "text" e "highlights" fornecem conteúdo idêntico, em texto sem formatação e com destaques.

    Por padrão, os destaques são estilizados como <em>, que podem ser substituídos usando os parâmetros highlightPreTag e highlightPostTag. Como já observado, a maior parte da resposta é o conteúdo literal de um documento de pesquisa. O modelo de extração procura características de uma resposta para encontrar o conteúdo apropriado, mas não compõe uma nova linguagem na resposta.

  • "score" é uma pontuação de confiança que indica a adequação da resposta. Se houver várias respostas no conteúdo retornado, essa pontuação será usada para determinar a ordem. É possível derivar as legendas principais de um documento e a resposta principal de outro documento, mas, em geral, os mesmos documentos são exibidos nas posições superiores em cada matriz.

As respostas são seguidas pela matriz "value", que sempre inclui pontuações, legendas e todos os campos que são recuperáveis por padrão. Se você especificar o parâmetro select, a matriz "value" será limitada aos campos que você especificou. Confira Configurar classificação semântica para obter detalhes.

Dicas para produzir respostas de alta qualidade

Para obter melhores resultados, retorne as respostas semânticas em um corpus de documento com as seguintes características:

  • "semanticConfiguration" deve incluir campos que oferecem texto suficiente no qual uma resposta provavelmente será encontrada. Os campos com mais probabilidade de conter respostas devem ser listados primeiro em "prioritizedContentFields". Somente o texto literal de um documento pode aparecer como uma resposta.

  • As cadeias de consulta não devem ser nulas (search = *) e devem ter as características de uma pergunta, como por exemplo "o que é" ou "como fazer" ao contrário de uma pesquisa de palavra-chave contendo termos ou frases em uma order arbitrária. Se a cadeia de caracteres de consulta não tiver a aparência de uma pergunta, o processamento de resposta será ignorado, mesmo que a solicitação tenha "respostas" como parâmetro de consulta.

  • Na extração semântica e no resumo, há limites ao número de tokens analisados por documento em tempo hábil. Em termos práticos, se você tiver documentos grandes com centenas de páginas, tente dividir o conteúdo em documentos menores.

Próximas etapas