Použití syntézy odpovědí pro citační odpovědi v Azure AI Vyhledávač (Preview)

Poznámka

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Důležité

Na funkce, možnosti nebo vlastnosti označené jako (Preview) se nevztahuje smlouva o úrovni služeb, nejsou doporučené pro produkční úlohy a mohou se změnit nebo být omezeny dříve, než budou obecně k dispozici. Podmínky Azure AI Vyhledávač Preview platí pro všechny funkce ve verzi Preview, ať už jsou samostatné nebo součástí obecně dostupné funkce.

Ve výchozím nastavení znalostní báze v Azure AI Vyhledávač provádí extrakci dat, která vrací nezpracované uzemnění bloků dat z vašich zdrojů znalostí. Extrakce dat je užitečná pro načtení konkrétních informací, ale nemá kontext a odůvodnění nezbytné pro složité dotazy.

Místo toho můžete povolit syntézu odpovědí (Preview), která k zodpovězení dotazů v přirozeném jazyce používá LLM zadanou ve znalostní bázi. Každá odpověď obsahuje citace na načtené zdroje a řídí se všemi pokyny, které zadáte, například pomocí seznamů s odrážkami.

Tuto vlastnost můžete nastavit ve znalostní bázi nebo v požadavku na načtení. Nastavení znalostní databáze určuje výchozí hodnotu pro všechny dotazy, zatímco nastavení požadavku retrieve tuto výchozí hodnotu přepisuje pro každý jednotlivý dotaz.

Podpora využití

portál Azure Portál Microsoft Foundry .NET SDK Python SDK Java SDK JavaScript SDK REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Požadavky

  • Služba Azure AI Vyhledávač s knowledge base, která určuje LLM.

  • Oprávnění k aktualizaci znalostních bází Nakonfigurujte ověřování bez klíčů s rolí Přispěvatel vyhledávací služby přiřazenou k vašemu uživatelskému účtu (doporučeno) nebo použijte klíč rozhraní API pro správu.

  • Pro odchozí volání do LLM musí vyhledávací služba mít spravovanou identitu s oprávněním uživatele služby Cognitive Services k prostředku Microsoft Foundry.

  • Nejnovější balíček Azure.Search.Documents ve verzi Preview: dotnet add package Azure.Search.Documents --prerelease

  • Balíček Azure.Identity pro bezklíčové ověřování: dotnet add package Azure.Identity

  • Nejnovější balíček azure-search-documents ve verzi Preview: pip install --pre azure-search-documents

  • Balíček azure-identity pro bezklíčové ověřování: pip install azure-identity

Omezení a úvahy

  • Parametr minimal pro odůvodnění při načítání vypíná zpracování pomocí LLM, takže není kompatibilní se syntézou odpovědí v definicích znalostní báze ani v požadavcích na načtení. Další informace najdete v tématu Nastavení úrovně úsilí pro načítání argumentů.

  • Za syntézu odpovědí se v rámci služby Azure OpenAI účtují průběžné poplatky, které se odvíjejí od počtu vstupních a výstupních tokenů. Poplatky se zobrazí v rámci LLM přiřazeného znalostní bázi. Další informace najdete v tématu Dostupnost oblasti, limity a fakturace.

Povolení syntézy odpovědí ve znalostní bázi

Tato část ukazuje, jak povolit syntézu odpovědí v existující znalostní bázi. I když tuto konfiguraci můžete použít pro nové znalostní báze, vytvoření znalostní báze je nad rámec tohoto článku.

Nastavte OutputMode na "answerSynthesis" v definici KnowledgeBase. Volitelně můžete nastavit AnswerInstructions přizpůsobení výstupu odpovědi. Následující příklad dává znalostní bázi pokyn , aby 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

Nastavte output_mode na "answerSynthesis" v definici KnowledgeBase. Volitelně můžete nastavit answer_instructions přizpůsobení výstupu odpovědi. Následující příklad dává znalostní bázi pokyn , aby 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

Nastavte outputMode na "answerSynthesis" v definici znalostní báze. Volitelně můžete nastavit answerInstructions přizpůsobení výstupu odpovědi. Následující příklad dává znalostní bázi pokyn , aby 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"
}

Referenční informace:Znalostní báze – Vytvoření nebo aktualizace

Povolení syntézy odpovědí v dotazu na načtení

Pro kontrolu nad formátem odpovědi můžete povolit syntézu odpovědí v době dotazu. Tento přístup přepíše výchozí výstupní režim zadaný ve znalostní bázi.

Nastavte OutputMode na "answerSynthesis" na 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

Nastavte output_mode na "answerSynthesis" na 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

Nastavte outputMode na "answerSynthesis" v požadavku na načtení.

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

Reference:Získávání znalostí – načtení

Získání syntetizované odpovědi

Pokud je povolena syntéza odpovědí, vrátí znalostní báze odpověď v přirozeném jazyce na základě pokynů, které jste volitelně zadali ve znalostní bázi. Citace pro vaše zdroje znalostí jsou formátovány jako [ref_id:<number>].

Pokud jsou například vaše pokyny Use concise bulleted lists a váš dotaz je What is healthcare?, měla by odpověď vypadat podobně jako v následujícím příkladu.

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

Úplný text výstup je následující:

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

V závislosti na konfiguraci znalostní báze může odpověď obsahovat další informace, jako jsou protokoly aktivit a referenční pole. Další informace naleznete v tématu Vytvoření znalostní báze.