Usar la síntesis de respuestas para las respuestas respaldadas por citas en Búsqueda de Azure AI (versión preliminar)

Nota

Búsqueda de Azure AI está disponible a través del portal de Azure, las API REST y los SDK de Azure. También respalda Foundry IQ, la capa de conocimiento administrada que transforma el contenido empresarial en bases de conocimiento reutilizables y compatibles con permisos para agentes en el portal de Microsoft Foundry.

Importante

Las características, funcionalidades o propiedades marcadas (versión preliminar) no están cubiertas por un contrato de nivel de servicio, no se recomiendan para cargas de trabajo de producción y pueden cambiar o restringirse antes de que estén disponibles con carácter general. Los términos de la versión preliminar Búsqueda de Azure AI se aplican a todas las funciones de vista previa, ya sea independiente o parte de una característica disponible con carácter general.

De forma predeterminada, una base de conocimiento de Búsqueda de Azure AI realiza la extracción de datos, que devuelve fragmentos sin procesar de los orígenes de conocimiento. La extracción de datos es útil para recuperar información específica, pero carece del contexto y el razonamiento necesarios para las consultas complejas.

En su lugar, puede habilitar la síntesis de respuestas (versión preliminar), que usa el LLM especificado en la base de conocimiento para responder a las consultas en lenguaje natural. Cada respuesta incluye citas a los orígenes recuperados y sigue las instrucciones que proporcione, como el uso de listas con viñetas.

Puede establecer esta propiedad en una base de conocimiento o en una solicitud de recuperación. La configuración de la base de conocimiento establece el valor predeterminado para todas las consultas, mientras que la configuración de solicitud de recuperación invalida el valor predeterminado en una consulta por consulta.

Soporte para el uso

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

Requisitos previos

  • Un servicio Búsqueda de Azure AI con un knowledge base que especifica un LLM.

  • Permiso para actualizar las bases de conocimiento. Configure la autenticación sin clave con el rol Colaborador del servicio de búsqueda asignado a su cuenta de usuario (recomendado) o use una clave de API de administrador.

  • Para las llamadas salientes al LLM, el servicio de búsqueda debe tener una identidad administrada con permisos de usuario de Cognitive Services en el recurso Microsoft Foundry.

  • El paquete de versión preliminar Azure.Search.Documents más reciente: dotnet add package Azure.Search.Documents --prerelease

  • Para la autenticación sin claves, el Azure.Identity paquete: dotnet add package Azure.Identity

  • El paquete de versión preliminar azure-search-documents más reciente: pip install --pre azure-search-documents

  • Para la autenticación sin claves, el azure-identity paquete: pip install azure-identity

Limitaciones y consideraciones

  • El minimal nivel de razonamiento de recuperación desactiva el procesamiento del LLM, por lo que no es compatible con la generación de respuestas ni en las definiciones de la base de conocimientos ni en las solicitudes de recuperación. Para obtener más información, consulte Configure el esfuerzo de razonamiento de recuperación.

  • La síntesis de respuestas genera cargos de pago por uso de Azure OpenAI, basados en el número de tokens de entrada y de salida. Los cargos aparecen en el LLM asignado a la base de conocimiento. Para obtener más información, consulte Disponibilidad, límites y facturación de regiones.

Habilitación de la síntesis de respuestas en una base de conocimiento

En esta sección se muestra cómo habilitar la síntesis de respuestas en una base de conocimiento existente. Aunque puede usar esta configuración para las nuevas bases de conocimiento, la creación de la base de conocimiento está fuera del ámbito de este artículo.

Configure OutputMode como "answerSynthesis" en la definición KnowledgeBase. Opcionalmente, establezca AnswerInstructions para personalizar la salida de la respuesta. El siguiente ejemplo indica a la base de conocimientos que 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

Configure output_mode como "answerSynthesis" en la definición KnowledgeBase. Opcionalmente, establezca answer_instructions para personalizar la salida de la respuesta. El siguiente ejemplo indica a la base de conocimientos que 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

Establezca outputMode en "answerSynthesis" en la definición de la base de conocimientos. Opcionalmente, establezca answerInstructions para personalizar la salida de la respuesta. El siguiente ejemplo indica a la base de conocimientos que 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"
}

Reference:Knowledge Base: Crear o actualizar

Habilitación de la síntesis de respuestas en una solicitud de recuperación

Para el control por consulta sobre el formato de respuesta, puede habilitar la síntesis de respuestas en el momento de la consulta. Este enfoque invalida el modo de salida predeterminado especificado en la base de conocimiento.

Establezca OutputMode en "answerSynthesis" en un 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

Establezca output_mode en "answerSynthesis" en un 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

Establezca outputMode en "answerSynthesis" en una solicitud de obtención.

### 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"
}

Referencia:Recuperación de Conocimiento - Recuperar

Obtención de una respuesta sintetizada

Cuando se habilita la síntesis de respuestas, la base de conocimiento devuelve una respuesta de lenguaje natural en función de las instrucciones especificadas opcionalmente en la base de conocimiento. Las citas a los orígenes de conocimiento tienen el formato [ref_id:<number>].

Por ejemplo, si las instrucciones son Use concise bulleted lists y la consulta es What is healthcare?, la respuesta debe ser similar al ejemplo siguiente.

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

La salida completa text es la siguiente:

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

En función de la configuración de la base de conocimiento, la respuesta puede incluir otra información, como registros de actividad y matrices de referencia. Para obtener más información, consulte Creación de una base de conocimiento.