Использование синтеза ответов для ответов, поддерживаемых ссылкой, в Поиск с использованием ИИ Azure (предварительная версия)

Примечание

Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.

Важно

Функции, возможности или свойства, помеченные (предварительная версия), не охватываются соглашением об уровне обслуживания, не рекомендуются для рабочих нагрузок и могут изменяться или ограничиваться до того, как они становятся общедоступными. Условия предварительной версии Поиск с использованием ИИ Azure применяются ко всем функциям предварительной версии, независимо от того, является ли он автономным или частью общедоступной функции.

По умолчанию база знаний в Поиск с использованием ИИ Azure выполняет извлечение данных и возвращает необработанные фрагменты контекста из ваших источников знаний. Извлечение данных полезно для получения конкретных сведений, но не хватает контекста и причин, необходимых для сложных запросов.

Вместо этого можно включить синтез ответов (предварительная версия), который использует LLM, указанный в базе знаний, для ответа на запросы на естественном языке. Каждый ответ содержит ссылки на извлеченные источники и выполняет все предоставленные инструкции, такие как использование маркированных списков.

Это свойство можно задать в базе знаний или запросе на получение. Настройка базы знаний задаёт значение по умолчанию для всех запросов, а настройка запроса retrieve переопределяет это значение для каждого запроса отдельно.

Поддержка использования

Портал Azure Портал Microsoft Foundry Пакет SDK для .NET Пакет SDK для Python SDK для Java Пакет SDK для JavaScript REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Необходимые условия

  • Служба Поиск с использованием ИИ Azure с базой знаний, в которой указывается LLM.

  • Разрешение на обновление баз знаний. Настройте проверку подлинности без ключа с помощью роли участника службы поиска , назначенной учетной записи пользователя (рекомендуется) или используйте ключ API администратора.

  • Для исходящих вызовов к LLM служба поиска должна иметь управляемое удостоверение с правами пользователя служб Cognitive Services для ресурса Microsoft Foundry.

  • Последний пакет предварительной версии Azure.Search.Documents: dotnet add package Azure.Search.Documents --prerelease

  • Для аутентификации без использования ключа пакет Azure.Identity: dotnet add package Azure.Identity

  • Последний пакет предварительной версии azure-search-documents: pip install --pre azure-search-documents

  • Для аутентификации без использования ключа пакет azure-identity: pip install azure-identity

  • 2026-08-01-preview — версия REST API службы поиска.

  • Для проверки подлинности без ключа добавьте маркер Microsoft Entra ID в Authorization заголовок каждого HTTP-запроса.

Ограничения и рекомендации

  • Параметр minimal уровня рассуждений при извлечении отключает обработку LLM, поэтому он несовместим с синтезом ответов как в определениях базы знаний, так и в запросах на извлечение. Дополнительные сведения см. в разделе "Настройка усилий по извлечению причин".

  • Синтез ответов влечет расходы при оплате по мере использования в Azure OpenAI, которые зависят от количества входных и выходных токенов. Расходы отображаются в LLM, назначенном базе знаний. Дополнительные сведения см. в разделе "Доступность регионов", "Ограничения" и "Выставление счетов".

Включение синтеза ответов в базе знаний

В этом разделе показано, как включить синтез ответов в существующей базе знаний. Хотя эту конфигурацию можно использовать для новых баз знаний, создание базы знаний выходит за рамки этой статьи.

Установите для OutputMode значение "answerSynthesis" в определении KnowledgeBase. При необходимости задайте AnswerInstructions для настройки выходных данных ответа. В следующем примере базе знаний предписывается 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

Установите для output_mode значение "answerSynthesis" в определении KnowledgeBase. При необходимости задайте answer_instructions для настройки выходных данных ответа. В следующем примере базе знаний предписывается 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

Установите для outputMode значение "answerSynthesis" в определении базы знаний. При необходимости задайте answerInstructions для настройки выходных данных ответа. В следующем примере базе знаний предписывается 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"
}

Справочник:База знаний — создание или обновление

Включение синтеза ответов в запросе на извлечение

Для контроля над форматом ответа для каждого запроса, можно включить синтез ответа в момент выполнения запроса. Этот подход переопределяет выходной режим по умолчанию, указанный в базе знаний.

Установите значение OutputMode"answerSynthesis" в параметре 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

Установите значение output_mode"answerSynthesis" в параметре 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

Задайте значение outputMode"answerSynthesis" для запроса на получение.

### 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:Knowledge Retrieval — восстановление

Получение синтезированного ответа

Если синтез ответа включен, база знаний возвращает ответ естественного языка на основе инструкций, которые вы дополнительно указали в базе знаний. Ссылки на источники знаний форматируются как [ref_id:<number>].

Например, если ваши инструкции — Use concise bulleted lists, а ваш запрос — What is healthcare?, ответ должен быть похож на следующий пример.

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

Полные text выходные данные приведены следующим образом:

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

В зависимости от конфигурации базы знаний ответ может содержать другие сведения, такие как журналы действий и эталонные массивы. Дополнительные сведения см. в статье "Создание базы знаний".