Utilizar a síntese de resposta para respostas baseadas em citação no Pesquisa de IA do Azure  (versão de pré-visualização)

Nota

Pesquisa de IA do Azure  está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.

Importante

Recursos, funcionalidades ou propriedades marcados como (versão prévia) não são cobertos por um contrato de nível de serviço (SLA), não são recomendados para cargas de trabalho de produção e podem mudar ou ser restringidos antes da disponibilidade geral. Os termos de visualização do Pesquisa de IA do Azure  se aplicam a toda funcionalidade em visualização, seja autônoma ou parte de um recurso de disponibilidade geral.

Por padrão, uma base de conhecimento no Pesquisa de IA do Azure  realiza a extração de dados, que retorna segmentos brutos de fundamentação das suas fontes de conhecimento. A extração de dados é útil para recuperar informações específicas, mas não tem o contexto e o raciocínio necessários para consultas complexas.

Em vez disso, você pode habilitar a síntese de resposta (versão prévia), que usa a LLM especificada em sua base de dados de conhecimento para responder a consultas em linguagem natural. Cada resposta inclui citações para as fontes recuperadas e segue todas as instruções fornecidas, como o uso de listas com marcadores.

Você pode definir essa propriedade em uma base de dados de conhecimento ou em uma solicitação de recuperação. A configuração da base de conhecimento define o padrão para todas as consultas, enquanto a configuração da solicitação de recuperação substitui esse padrão consulta por consulta.

Suporte de uso

Portal do Azure Portal Foundry da Microsoft SDK do .NET SDK do Python SDK do Java SDK do JavaScript REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Pré-requisitos

  • Um serviço Pesquisa de IA do Azure  com uma base de conhecimento que especifica uma LLM.

  • Permissão para atualizar bases de dados de conhecimento. Configure a autenticação sem chave com a função Colaborador do Serviço de Pesquisa atribuída à sua conta de usuário (recomendada) ou use uma chave de API de administrador.

  • Para chamadas de saída para o LLM, o serviço de pesquisa deve possuir uma identidade gerenciada com permissões de Usuário de Serviços Cognitivos no recurso Microsoft Foundry.

  • O pacote de versão prévia Azure.Search.Documents mais recente: dotnet add package Azure.Search.Documents --prerelease

  • Para autenticação sem chave, o Azure.Identity pacote: dotnet add package Azure.Identity

  • O pacote de versão prévia azure-search-documents mais recente: pip install --pre azure-search-documents

  • Para autenticação sem chave, o azure-identity pacote: pip install azure-identity

Limitações e considerações

  • O esforço de raciocínio de recuperação minimal desabilita o processamento de LLM; portanto, ele é incompatível com a síntese de resposta em definições de base de dados de conhecimento e solicitações de recuperação. Para obter mais informações, consulte Definir o esforço de raciocínio de recuperação.

  • A síntese de respostas gera cobranças no modelo pagamento conforme o uso do OpenAI do Azure, com base no número de tokens de entrada e saída. As cobranças são exibidas no LLM atribuído à base de dados de conhecimento. Para obter mais informações, consulte Disponibilidade, limites e cobrança de região.

Habilitar a síntese de resposta em uma base de dados de conhecimento

Esta seção demonstra como habilitar a síntese de respostas em uma base de dados de conhecimento existente. Embora você possa usar essa configuração para novas bases de dados de conhecimento, a criação da base de dados de conhecimento está além do escopo deste artigo.

Defina OutputMode como "answerSynthesis" na definição KnowledgeBase. Opcionalmente, defina AnswerInstructions para personalizar a saída da resposta. O exemplo a seguir instrui a base de dados de conhecimento a Use concise bulleted lists.

var aoaiParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri("<aoai-endpoint>"),
    DeploymentName = "<aoai-gpt-deployment>",
    ModelName = "<aoai-gpt-model>",
};

var knowledgeBase = new KnowledgeBase(
    name: "<knowledge-base-name>",
    knowledgeSources: new[] { new KnowledgeSourceReference("<knowledge-source-name>") })
{
    Models = { new KnowledgeBaseAzureOpenAIModel(aoaiParams) },
    OutputMode = "answerSynthesis",
    AnswerInstructions = "Use concise bulleted lists",
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Reference:SearchIndexClient, KnowledgeBase

Defina output_mode como "answerSynthesis" na definição KnowledgeBase. Opcionalmente, defina answer_instructions para personalizar a saída da resposta. O exemplo a seguir instrui a base de dados de conhecimento a Use concise bulleted lists.

from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    KnowledgeBase,
    KnowledgeBaseAzureOpenAIModel,
    KnowledgeSourceReference,
)

aoai_params = AzureOpenAIVectorizerParameters(
    resource_url="<aoai-endpoint>",
    deployment_name="<aoai-gpt-deployment>",
    model_name="<aoai-gpt-model>",
)

knowledge_base = KnowledgeBase(
    name="<knowledge-base-name>",
    models=[KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters=aoai_params)],
    knowledge_sources=[KnowledgeSourceReference(name="<knowledge-source-name>")],
    output_mode="answerSynthesis",
    answer_instructions="Use concise bulleted lists",
)

index_client = SearchIndexClient(endpoint=search_endpoint, credential=credential)
index_client.create_or_update_knowledge_base(knowledge_base)

Reference:SearchIndexClient, KnowledgeBase

Defina outputMode para "answerSynthesis" na definição da base de conhecimento. Opcionalmente, defina answerInstructions para personalizar a saída da resposta. O exemplo a seguir instrui a base de dados de conhecimento a Use concise bulleted lists.

### Enable answer synthesis in a knowledge base
PUT {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
    "name": "{{knowledge-base-name}}",
    "knowledgeSources": [ ... // OMITTED FOR BREVITY ],
    "models": [ ... // OMITTED FOR BREVITY ],
    "outputMode": "answerSynthesis",
    "answerInstructions": "Use concise bulleted lists"
}

Referência:Base de Dados de Conhecimento – Criar ou Atualizar

Habilitar a síntese de resposta em uma solicitação de recuperação

Para controle por consulta sobre o formato de resposta, você pode habilitar a síntese de resposta no momento da consulta. Essa abordagem substitui o modo de saída padrão especificado na base de dados de conhecimento.

Defina OutputMode para "answerSynthesis" em um KnowledgeBaseRetrievalRequest.

var client = new KnowledgeBaseRetrievalClient(
    endpoint: new Uri(searchEndpoint),
    knowledgeBaseName: knowledgeBaseName,
    credential: credential);

var request = new KnowledgeBaseRetrievalRequest();
request.Messages.Add(
    new KnowledgeBaseMessage(
        content: new[]
        {
            new KnowledgeBaseMessageTextContent("What is healthcare?")
        }) { Role = "user" });
request.OutputMode = "answerSynthesis";

var result = await client.RetrieveAsync(request);

Reference:KnowledgeBaseRetrievalClient, KnowledgeBaseRetrievalRequest

Defina output_mode para "answerSynthesis" em um KnowledgeBaseRetrievalRequest.

from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import (
    KnowledgeBaseMessage,
    KnowledgeBaseMessageTextContent,
    KnowledgeBaseRetrievalRequest,
)

agent_client = KnowledgeBaseRetrievalClient(
    endpoint=search_endpoint,
    credential=credential,
    knowledge_base_name=knowledge_base_name,
)

request = KnowledgeBaseRetrievalRequest(
    messages=[
        KnowledgeBaseMessage(
            role="user",
            content=[KnowledgeBaseMessageTextContent(text="What is healthcare?")],
        )
    ],
    output_mode="answerSynthesis",
)

result = agent_client.retrieve(retrieval_request=request)

Reference:KnowledgeBaseRetrievalClient, KnowledgeBaseRetrievalRequest

Defina outputMode para "answerSynthesis" em uma solicitação de recuperação.

### Enable answer synthesis in a retrieve request
POST {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}/retrieve?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "What is healthcare?"
                }
            ]
        }
    ],
    "outputMode": "answerSynthesis"
}

Referência:Recuperação de Conhecimento – Recuperar

Obter uma resposta sintetizada

Quando a síntese de resposta está habilitada, a base de dados de conhecimento retorna uma resposta de linguagem natural com base nas instruções especificadas opcionalmente na base de dados de conhecimento. As citações às fontes de conhecimento são formatadas como [ref_id:<number>].

Por exemplo, se suas instruções forem Use concise bulleted lists e sua consulta for What is healthcare?, a resposta deverá ser semelhante ao exemplo a seguir.

{
  "response": [
    {
      "content": [
        {
          "type": "text",
          "text": "- Healthcare encompasses various services provided to patients and the general population ..."
        }
      ]
    }
  ]
}

A saída completa text é a seguinte:

"- Healthcare encompasses various services provided to patients and the general population, including primary health services, hospital care, dental care, mental health services, and alternative health services [ref_id:1].\n- It involves the delivery of safe, effective, patient-centered care through different modalities, such as in-person encounters, shared medical appointments, and group education sessions [ref_id:0].\n- Behavioral health is a significant aspect of healthcare, focusing on the connection between behavior and overall health, including mental health and substance use [ref_id:2].\n- The healthcare system aims to ensure quality of care, access to providers, and accountability for positive outcomes while managing costs effectively [ref_id:2].\n- The global health system is evolving to address complex health needs, emphasizing the importance of cross-sectoral collaboration and addressing social determinants of health [ref_id:4]."

Dependendo da configuração da base de dados de conhecimento, a resposta pode incluir outras informações, como logs de atividades e matrizes de referência. Para obter mais informações, consulte Criar uma base de dados de conhecimento.