Utiliser la synthèse des réponses pour les réponses soutenues par des citations dans Recherche Azure AI (préversion)

Note

Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.

Important

Les fonctionnalités, capacités ou propriétés marquées (préversion) ne sont pas couvertes par un accord de niveau de service, ne sont pas recommandées pour les workloads de production et peuvent être modifiées ou faire l’objet de restrictions avant leur mise à disposition générale. Les Recherche Azure AI termes de la préversion s'appliquent à toutes les fonctionnalités d'aperçu, qu'il s'agisse d'une fonctionnalité autonome ou d'une partie d'une fonctionnalité généralement disponible.

Par défaut, une base de connaissances d’Recherche Azure AI effectue une extraction de données, qui renvoie des fragments bruts de grounding à partir de vos sources de connaissances. L’extraction de données est utile pour récupérer des informations spécifiques, mais n’a pas le contexte et le raisonnement nécessaires pour les requêtes complexes.

Vous pouvez aussi activer la synthèse des réponses (aperçu), qui utilise le LLM spécifié dans votre base de connaissances pour répondre aux requêtes en langage naturel. Chaque réponse inclut des citations aux sources récupérées et suit toutes les instructions que vous fournissez, telles que l’utilisation de listes à puces.

Vous pouvez définir cette propriété dans une base de connaissances ou une demande de récupération. Le paramètre de base de connaissances établit la valeur par défaut pour toutes les requêtes, tandis que le paramètre de requête de récupération remplace la valeur par défaut par requête.

Assistance à l'utilisation

portail Azure portail Microsoft Foundry Kit de développement logiciel (SDK) .NET Kit de développement logiciel (SDK) Python sdk Java Kit de développement logiciel (SDK) JavaScript REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Conditions préalables

  • Service Recherche Azure AI avec une base knowledge qui spécifie un LLM.

  • Autorisation de mettre à jour les bases de connaissances. Configurez l’authentification sans clé avec le rôle Contributeur de service de recherche affecté à votre compte d’utilisateur (recommandé) ou utilisez une clé API d’administration.

  • Pour les appels sortants vers le LLM, le service de recherche doit disposer d’une identité managée avec les autorisations Utilisateur Cognitive Services sur la ressource Microsoft Foundry.

  • Le dernier paquet Azure.Search.Documents (préversion) : dotnet add package Azure.Search.Documents --prerelease

  • Pour l’authentification sans clé, le Azure.Identity package : dotnet add package Azure.Identity

  • Le dernier paquet azure-search-documents (préversion) : pip install --pre azure-search-documents

  • Pour l’authentification sans clé, le azure-identity package : pip install azure-identity

Limitations et considérations

  • L’effort de raisonnement de récupération minimal désactive le traitement par LLM ; il est donc incompatible avec la synthèse de réponses, aussi bien dans les définitions de bases de connaissances que dans les requêtes de récupération. Pour plus d’informations, consultez Définir l’effort de raisonnement de récupération.

  • La synthèse des réponses entraîne des frais à l’utilisation d’Azure OpenAI, calculés en fonction du nombre de jetons en entrée et en sortie. Les frais apparaissent sous le LLM attribué à la base de connaissances. Pour plus d’informations, consultez disponibilité, limites et facturation de la région.

Activer la synthèse des réponses dans une base de connaissances

Cette section montre comment activer la synthèse des réponses dans une base de connaissances existante. Bien que vous puissiez utiliser cette configuration pour les nouvelles bases de connaissances, la création de la base de connaissances dépasse la portée de cet article.

Définissez OutputMode sur "answerSynthesis" dans la définition KnowledgeBase. Si vous le souhaitez, définissez AnswerInstructions pour personnaliser la sortie de la réponse. L’exemple suivant indique à la base de connaissances la valeur 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

Définissez output_mode sur "answerSynthesis" dans la définition KnowledgeBase. Si vous le souhaitez, définissez answer_instructions pour personnaliser la sortie de la réponse. L’exemple suivant indique à la base de connaissances la valeur 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

Réglez outputMode sur "answerSynthesis" dans la définition de la base de connaissances. Si vous le souhaitez, définissez answerInstructions pour personnaliser la sortie de la réponse. L’exemple suivant indique à la base de connaissances la valeur 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"
}

Référence :Base de connaissances - Créer ou mettre à jour

Activer la synthèse des réponses dans une demande de récupération

Pour le contrôle par requête sur le format de réponse, vous pouvez activer la synthèse des réponses au moment de la requête. Cette approche remplace le mode de sortie par défaut spécifié dans la base de connaissances.

Défini OutputMode sur "answerSynthesis" sur 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

Défini output_mode sur "answerSynthesis" sur 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

Définissez outputMode sur "answerSynthesis" dans une requête de récupération.

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

Référence :Récupération des connaissances - Récupérer

Obtenir une réponse synthétisée

Lorsque la synthèse des réponses est activée, la base de connaissances retourne une réponse en langage naturel en fonction des instructions que vous avez éventuellement spécifiées dans la base de connaissances. Les citations à vos sources de connaissances sont mises en forme comme [ref_id:<number>].

Par exemple, si vos instructions sont Use concise bulleted lists et que votre requête est What is healthcare?, la réponse doit être similaire à l’exemple suivant.

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

La sortie complète text est la suivante :

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

Selon la configuration de votre base de connaissances, la réponse peut inclure d’autres informations, telles que les journaux d’activité et les tableaux de référence. Pour plus d’informations, consultez Créer une base de connaissances.