Поделиться через


Учебное пособие: Создание сквозного решения для агентного извлечения с использованием Поиск с использованием ИИ Azure

Замечание

Эта функция сейчас доступна в общедоступной предварительной версии. Этот предварительный просмотр предоставляется без соглашения об уровне обслуживания и не предназначается для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.

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

Изучив это руководство, вы:

  • Настройка доступа на основе ролей для Поиск с использованием ИИ Azure и Майкрософт Foundry
  • Создание индекса поиска, источника знаний и базы знаний в Поиск с использованием ИИ Azure
  • Создание подключения проекта для связи MCP между Поиск с использованием ИИ Azure и Майкрософт Foundry
  • Создание агента в Майкрософт Foundry, использующего средство MCP для извлечения
  • Тестирование решения путем чата с агентом
  • Изучите советы по оптимизации решения

Диаграмма сквозного агентического извлечения, демонстрирующая интеграцию Поиск с использованием ИИ Azure со службой агента Foundry через MCP.

Подсказка

Хотите начать сразу? Клонируйте записную книжку agentic-retrieval-pipeline-example Python в GitHub. Записная книжка содержит код из этого руководства в формате, готовом к выполнению.

Предпосылки

Это важно

Если вы отключили общий доступ к сети для службы поиска и используете её как инструмент агента с изолированным сетевым ресурсом Майкрософт Foundry, необходимо использовать новый портал Майкрософт Foundry, SDK или CLI для создания ваших агентов. Портал Майкрософт Foundry (классический) не поддерживает этот сценарий. Дополнительные сведения см. в разделе "Средства агента" с сетевой изоляцией.

Понять решение

Это решение объединяет Поиск с использованием ИИ Azure и Майкрософт Foundry для создания сквозного конвейера извлечения:

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

  • Майкрософт Foundry размещает развертывания Azure OpenAI моделей, подключение к проекту и агента. Вы создаете подключение проекта, указывающее на конечную точку MCP базы знаний, а затем создаете агент, использующий средство MCP для доступа к базе знаний.

Пользователь инициирует обработку запросов, взаимодействуя с клиентским приложением, например чат-ботом, который вызывает агент. Агент использует средство MCP для оркестрации запросов к базе знаний и синтеза ответов. Когда чат-бот вызывает агент, средство MCP вызывает базу знаний в Поиск с использованием ИИ Azure и отправляет ответ агенту и чат-боту.

Настройка доступа

Перед началом работы убедитесь, что у вас есть разрешения на доступ к содержимому и операциям. Мы рекомендуем Microsoft Entra ID для проверки подлинности и доступа на основе ролей для авторизации. Для назначения ролей необходимо быть владельцем или администратором доступа пользователей . Если роли нецелесообразны, используйте аутентификацию на основе ключа.

Чтобы настроить доступ для этого решения, выполните следующие действия.

  1. Войдите на портал Azure.

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

  3. В службе поиска включите доступ на основе ролей и назначьте следующие роли.

    Role Назначенное лицо Цель
    Участник службы поиска Учетная запись пользователя Создание объектов
    Участник данных поискового индекса Учетная запись пользователя Загрузка данных
    Средство чтения данных индекса поиска Пользовательский аккаунт и управляемая идентификация проекта Чтение индексированного содержимого
  4. На родительском ресурсе проекта назначьте следующие роли.

    Role Назначенное лицо Цель
    пользователь ИИ Azure Учетная запись пользователя Доступ к развертываниям моделей и созданию агентов
    Менеджер проекта ИИ Azure Учетная запись пользователя Создание подключения к проекту и использование средства MCP в агентах
    Пользователь Служб Когнитивных Услуг Управляемая идентификация службы поиска Доступ к базе знаний

Настройка среды

  1. Создайте папку с именем tutorial-agentic-retrieval в локальной системе.

  2. Откройте папку в Visual Studio Code.

  3. Выберите View > Командная палитра, а затем выберите Python: Create Environment. Следуйте инструкциям по созданию виртуальной среды.

  4. Выберите терминал > "Новый терминал".

  5. Установите необходимые пакеты.

    pip install azure-ai-projects==2.0.0b1 azure-mgmt-cognitiveservices azure-identity ipykernel dotenv azure-search-documents==11.7.0b2 requests openai
    
  6. Создайте файл с именем .env в папке tutorial-agentic-retrieval .

  7. Добавьте следующие переменные в файл .env, заменив значения заполнителей собственными.

    AZURE_SEARCH_ENDPOINT = https://{your-service-name}.search.windows.net
    PROJECT_ENDPOINT = https://{your-resource-name}.services.ai.azure.com/api/projects/{your-project-name}
    PROJECT_RESOURCE_ID = /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.CognitiveServices/accounts/{account-name}/projects/{project-name}
    AZURE_OPENAI_ENDPOINT = https://{your-resource-name}.openai.azure.com
    AZURE_OPENAI_EMBEDDING_DEPLOYMENT = text-embedding-3-large
    AGENT_MODEL = gpt-4.1-mini
    

    Конечные точки и идентификатор ресурса можно найти на портале Azure:

    • AZURE_SEARCH_ENDPOINT находится на странице обзора службы поиска.

    • PROJECT_ENDPOINT находится на странице конечных точек проекта.

    • PROJECT_RESOURCE_ID находится на странице свойств проекта.

    • AZURE_OPENAI_ENDPOINT находится на странице конечных точек родительского ресурса проекта.

  8. Для проверки подлинности без ключа с помощью Microsoft Entra ID войдите в учетную запись Azure. Если у вас несколько подписок, выберите тот, который содержит ресурсы Поиск с использованием ИИ Azure и Майкрософт Foundry.

    az login
    
  9. Создайте файл с именем tutorial.ipynb в папке tutorial-agentic-retrieval . В следующем разделе вы добавите ячейки кода в этот файл.

Создание решения

В этом разделе вы создаете компоненты агентного решения для извлечения. Добавьте каждый фрагмент кода в отдельную ячейку кода в записной книжке tutorial.ipynb и последовательно запустите ячейки.

Ниже приведены действия, описанные в этом разделе:

  1. Загрузка подключений
  2. Создание индекса поиска
  3. Отправка документов в индекс
  4. Создание источника знаний
  5. Создание базы знаний
  6. Настройка клиента проекта
  7. Создание подключения к проекту
  8. Создание агента с помощью средства MCP
  9. Чат с агентом
  10. Очистка ресурсов

Загрузка подключений

Следующий код загружает переменные среды из файла .env и устанавливает подключения к Поиск с использованием ИИ Azure и Майкрософт Foundry.

import os

from azure.identity import DefaultAzureCredential
from azure.mgmt.core.tools import parse_resource_id
from dotenv import load_dotenv

load_dotenv(override=True) # Take environment variables from .env

project_endpoint = os.environ["PROJECT_ENDPOINT"]
project_resource_id = os.environ["PROJECT_RESOURCE_ID"]
project_connection_name = os.getenv("PROJECT_CONNECTION_NAME", "earthknowledgeconnection")
agent_model = os.getenv("AGENT_MODEL", "gpt-4.1-mini")
agent_name = os.getenv("AGENT_NAME", "earth-knowledge-agent")
endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
credential = DefaultAzureCredential()
knowledge_source_name = os.getenv("AZURE_SEARCH_KNOWLEDGE_SOURCE_NAME", "earth-knowledge-source")
index_name = os.getenv("AZURE_SEARCH_INDEX", "earth-at-night")
azure_openai_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
azure_openai_embedding_deployment = os.getenv("AZURE_OPENAI_EMBEDDING_DEPLOYMENT", "text-embedding-3-large")
azure_openai_embedding_model = os.getenv("AZURE_OPENAI_EMBEDDING_MODEL", "text-embedding-3-large")
base_name = os.getenv("AZURE_SEARCH_AGENT_NAME", "earth-knowledge-base")

# Parse the resource ID to extract subscription and other components
parsed_resource_id = parse_resource_id(project_resource_id)
subscription_id = parsed_resource_id['subscription']
resource_group = parsed_resource_id['resource_group']
account_name = parsed_resource_id['name']
project_name = parsed_resource_id['child_name_1']

Создание индекса поиска

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

Схема индекса содержит поля для идентификации документов и содержимого страницы, встраиваний и числовых данных. Схема также включает конфигурации для семантического ранжирования и векторного поиска, которые используют text-embedding-3-large развертывание для векторизации текста и сопоставления документов на основе семантического сходства.

Дополнительные сведения об этом шаге см. в разделе Создание индекса для агентного извлечения в Поиск с использованием ИИ Azure.

from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizer, AzureOpenAIVectorizerParameters,
    HnswAlgorithmConfiguration, SearchField, SearchIndex,
    SemanticConfiguration, SemanticField, SemanticPrioritizedFields,
    SemanticSearch, VectorSearch, VectorSearchProfile
)

index = SearchIndex(
    name=index_name,
    fields=[
        SearchField(name="id", type="Edm.String", key=True, filterable=True, sortable=True, facetable=True),
        SearchField(name="page_chunk", type="Edm.String", filterable=False, sortable=False, facetable=False),
        SearchField(name="page_embedding_text_3_large", type="Collection(Edm.Single)", stored=False, vector_search_dimensions=3072, vector_search_profile_name="hnsw_text_3_large"),
        SearchField(name="page_number", type="Edm.Int32", filterable=True, sortable=True, facetable=True)
    ],
    vector_search=VectorSearch(
        profiles=[VectorSearchProfile(name="hnsw_text_3_large", algorithm_configuration_name="alg", vectorizer_name="azure_openai_text_3_large")],
        algorithms=[HnswAlgorithmConfiguration(name="alg")],
        vectorizers=[
            AzureOpenAIVectorizer(
                vectorizer_name="azure_openai_text_3_large",
                parameters=AzureOpenAIVectorizerParameters(
                    resource_url=azure_openai_endpoint,
                    deployment_name=azure_openai_embedding_deployment,
                    model_name=azure_openai_embedding_model
                )
            )
        ]
    ),
    semantic_search=SemanticSearch(
        default_configuration_name="semantic_config",
        configurations=[
            SemanticConfiguration(
                name="semantic_config",
                prioritized_fields=SemanticPrioritizedFields(
                    content_fields=[
                        SemanticField(field_name="page_chunk")
                    ]
                )
            )
        ]
    )
)

index_client = SearchIndexClient(endpoint=endpoint, credential=credential)
index_client.create_or_update_index(index)
print(f"Index '{index_name}' created or updated successfully")

Отправка документов в индекс

В настоящее время индекс пуст. Следующий код заполняет индекс документами JSON из электронной книги НАСА "Земля ночью". В соответствии с Поиск с использованием ИИ Azure каждый документ соответствует полям и типам данных, определенным в схеме индекса.

Дополнительные сведения об этом шаге см. в разделе "Отправка данных в индекс".

import requests
from azure.search.documents import SearchIndexingBufferedSender

url = "https://raw.githubusercontent.com/Azure-Samples/azure-search-sample-data/refs/heads/main/nasa-e-book/earth-at-night-json/documents.json"
documents = requests.get(url).json()

with SearchIndexingBufferedSender(endpoint=endpoint, index_name=index_name, credential=credential) as client:
    client.upload_documents(documents=documents)

print(f"Documents uploaded to index '{index_name}'")

Создание источника знаний

Источник знаний — это повторно используемые ссылки на исходные данные. Следующий код создает источник знаний, предназначенный для созданного ранее индекса.

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

Дополнительные сведения об этом шаге см. в статье "Создание источника знаний индекса поиска".

from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    SearchIndexFieldReference, SearchIndexKnowledgeSource,
    SearchIndexKnowledgeSourceParameters
)

ks = SearchIndexKnowledgeSource(
    name=knowledge_source_name,
    description="Knowledge source for Earth at night data",
    search_index_parameters=SearchIndexKnowledgeSourceParameters(
        search_index_name=index_name,
        source_data_fields=[SearchIndexFieldReference(name="id"), SearchIndexFieldReference(name="page_number")]
    ),
)

index_client = SearchIndexClient(endpoint=endpoint, credential=credential)
index_client.create_or_update_knowledge_source(knowledge_source=ks)
print(f"Knowledge source '{knowledge_source_name}' created or updated successfully.")

Создание базы знаний

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

Для интеграции со службой агента Foundry база знаний настроена со следующими параметрами:

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

  • retrieval_reasoning_effort требует минимальных усилий и обходит планирование запросов на основе больших языковых моделей (LLM), что позволяет снизить затраты и задержку. Для других процессов рассуждения база знаний использует LLM для переформулирования запросов пользователей перед извлечением.

Для получения дополнительной информации об этом шаге см. раздел Создание базы знаний в Поиск с использованием ИИ Azure.

from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    KnowledgeBase, KnowledgeRetrievalMinimalReasoningEffort,
    KnowledgeRetrievalOutputMode, KnowledgeSourceReference
)

knowledge_base = KnowledgeBase(
    name=base_name,
    knowledge_sources=[
        KnowledgeSourceReference(
            name=knowledge_source_name
        )
    ],
    output_mode=KnowledgeRetrievalOutputMode.EXTRACTIVE_DATA,
    retrieval_reasoning_effort=KnowledgeRetrievalMinimalReasoningEffort()
)


index_client = SearchIndexClient(endpoint=endpoint, credential=credential)
index_client.create_or_update_knowledge_base(knowledge_base=knowledge_base)
print(f"Knowledge base '{base_name}' created or updated successfully")

mcp_endpoint = f"{endpoint}/knowledgebases/{base_name}/mcp?api-version=2025-11-01-Preview"

Настройка клиента проекта

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

from azure.ai.projects import AIProjectClient

project_client = AIProjectClient(endpoint=project_endpoint, credential=credential)

list(project_client.agents.list())

Создание подключения к проекту

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

import requests
from azure.identity import get_bearer_token_provider

bearer_token_provider = get_bearer_token_provider(credential, "https://management.azure.com/.default")
headers = {
    "Authorization": f"Bearer {bearer_token_provider()}",
}

response = requests.put(
    f"https://management.azure.com{project_resource_id}/connections/{project_connection_name}?api-version=2025-10-01-preview",
    headers=headers,
    json={
        "name": project_connection_name,
        "type": "Microsoft.MachineLearningServices/workspaces/connections",
        "properties": {
            "authType": "ProjectManagedIdentity",
            "category": "RemoteTool",
            "target": mcp_endpoint,
            "isSharedToAll": True,
            "audience": "https://search.azure.com/",
            "metadata": { "ApiType": "Azure" }
        }
    }
)

response.raise_for_status()
print(f"Connection '{project_connection_name}' created or updated successfully.")

Создание агента с помощью средства MCP

Следующий код создает агент, настроенный с помощью средства MCP. Когда агент получает запрос пользователя, он может вызвать базу знаний через средство MCP, чтобы получить соответствующее содержимое для реагирования.

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

Дополнительные сведения об этом шаге см. в руководстве "Быстрый старт: Создание нового агента".

from azure.ai.projects.models import PromptAgentDefinition, MCPTool

instructions = """
You are a helpful assistant that must use the knowledge base to answer all the questions from user. You must never answer from your own knowledge under any circumstances.
Every answer must always provide annotations for using the MCP knowledge base tool and render them as: `【message_idx:search_idx†source_name】`
If you cannot find the answer in the provided knowledge base you must respond with "I don't know".
"""

mcp_kb_tool = MCPTool(
    server_label="knowledge-base",
    server_url=mcp_endpoint,
    require_approval="never",
    allowed_tools=["knowledge_base_retrieve"],
    project_connection_id=project_connection_name
)

agent = project_client.agents.create_version(
    agent_name=agent_name,
    definition=PromptAgentDefinition(
        model=agent_model,
        instructions=instructions,
        tools=[mcp_kb_tool]
    )
)

print(f"AI agent '{agent_name}' created or updated successfully")

(Необязательно) Подключение к удаленному источнику знаний SharePoint

Это важно

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

Для авторизации по пользователю используйте Azure OpenAI Responses API.

При необходимости, если база знаний включает удаленный источник знаний SharePoint, необходимо также включить заголовок x-ms-query-source-authorization в подключение к средству MCP. Дополнительные сведения см. в разделе "Принудительное применение разрешений во время запроса".

from azure.search.documents.indexes.models import RemoteSharePointKnowledgeSource, KnowledgeSourceReference
from azure.search.documents.indexes import SearchIndexClient
from azure.identity import get_bearer_token_provider

remote_sp_ks = RemoteSharePointKnowledgeSource(
    name="remote-sharepoint",
    description="SharePoint knowledge source"
)

index_client = SearchIndexClient(endpoint=endpoint, credential=credential)
index_client.create_or_update_knowledge_source(knowledge_source=remote_sp_ks)
print(f"Knowledge source '{remote_sp_ks.name}' created or updated successfully.")

knowledge_base.knowledge_sources = [
    KnowledgeSourceReference(name=remote_sp_ks.name), KnowledgeSourceReference(name=knowledge_source_name)
]

index_client.create_or_update_knowledge_base(knowledge_base=knowledge_base)
print(f"Knowledge base '{base_name}' updated with new knowledge source successfully")

mcp_kb_tool = MCPTool(
    server_label="knowledge-base",
    server_url=mcp_endpoint,
    require_approval="never",
    allowed_tools=["knowledge_base_retrieve"],
    project_connection_id=project_connection_name,
    headers={
        "x-ms-query-source-authorization": get_bearer_token_provider(credential, "https://search.azure.com/.default")()
    }
)

agent = project_client.agents.create_version(
    agent_name=agent_name,
    definition=PromptAgentDefinition(
        model=agent_model,
        instructions=instructions,
        tools=[mcp_kb_tool]
    )
)

print(f"AI agent '{agent_name}' created or updated successfully")

Чат с агентом

Клиентское приложение использует API-интерфейсы Conversations и Responses из Azure OpenAI для взаимодействия с агентом.

Следующий код создает беседу и передает пользовательские сообщения агенту, напоминая типичный интерфейс чата. Агент определяет, когда вызывать базу знаний с помощью средства MCP и возвращает ответ естественного языка со ссылками. Параметр tool_choice="required" гарантирует, что агент всегда использует средство базы знаний при обработке запросов.

# Get the OpenAI client for responses and conversations
openai_client = project_client.get_openai_client()

conversation = openai_client.conversations.create()

# Send initial request that will trigger the MCP tool
response = openai_client.responses.create(
    conversation=conversation.id,
    tool_choice="required",
    input="""
        Why do suburban belts display larger December brightening than urban cores even though absolute light levels are higher downtown?
        Why is the Phoenix nighttime street grid is so sharply visible from space, whereas large stretches of the interstate between midwestern cities remain comparatively dim?
    """,
    extra_body={"agent": {"name": agent.name, "type": "agent_reference"}},
)

print(f"Response: {response.output_text}")

Ответ должен быть похож на следующий:

Response: Here are evidence-based explanations to your questions:

---

**1. Why do suburban belts display larger December brightening than urban cores, even though absolute light levels are higher downtown?**

- Suburban belts show a *larger percentage increase* in night brightness during December compared to urban cores, largely because suburban residential areas feature more single-family homes and larger yards, which are typically decorated with holiday lights. These areas start from a lower baseline (less bright overall at night compared to dense urban centers), so the relative change (brightening) is much more noticeable.

- In contrast, the downtown core is already very bright at night due to dense commercial lighting and streetlights. While it also sees a December increase (often 20–30% brighter), the *absolute* change is less striking because it begins at a much higher base of illumination.

- This pattern is observed across U.S. cities, with the phenomenon driven by widespread cultural practices and the suburban landscape’s suitability for holiday lighting displays. The effect is visible in satellite data and was quantified at 20–50% brighter in December, especially in suburbs and city outskirts.

---

**2. Why is the Phoenix nighttime street grid so sharply visible from space, whereas large stretches of the interstate between midwestern cities remain comparatively dim?**

- Phoenix’s sharply visible nighttime street grid from space is a result of its urban layout: the city (like many western U.S. cities) was developed using a regular grid system, with extensive and uniform street lighting and strong urban sprawl. The grid pattern, and the dense network of intersecting surface streets, is brightly illuminated, particularly at intersections, commercial areas, and major thoroughfares.

- The interstate highways between midwestern cities, though significant in length and crucial to national infrastructure, traverse sparsely populated rural areas. These stretches typically have very little artificial lighting (due to low traffic volumes at night and cost considerations), making them much less visible in nighttime satellite imagery. Only nodes (cities and towns) along the route show as bright "pearls" in the darkness, while the "strings" (highways) connecting them remain faint or invisible.

- In summary:
  - Urban areas like Phoenix stand out with strong, connected patterns of light due to dense development and extensive lighting.
  - Rural interstates are sparsely lit, and only their endpoints—cities and large towns—generate notable light visible from space.

---

**References**:
- [Holiday Lights increase most dramatically in suburbs, not downtowns: earth_at_night_508_page_176_verbalized, page 160](4:5)
- [Lighting paths and urban grids are visible from space, while rural highways remain dim: earth_at_night_508_page_124_verbalized, page 108](4:3)
- [Phoenix’s grid and surrounding urban structure: earth_at_night_508_page_104_verbalized, page 88](4:1)

Проверка ответа

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

response.to_dict()

Очистите ресурсы

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

На портале Azure выберите All resources или Resource groups на панели слева, чтобы найти ресурсы и управлять ими. Вы можете удалить ресурсы по отдельности или удалить группу ресурсов, чтобы удалить все ресурсы одновременно.

Для удаления отдельных объектов можно также запустить следующий код:

# Delete the agent
project_client.agents.delete_version(agent.name, agent.version)
print(f"AI agent '{agent.name}' version '{agent.version}' deleted successfully")

# Delete the knowledge base
index_client.delete_knowledge_base(base_name)
print(f"Knowledge base '{base_name}' deleted successfully")

# Delete the knowledge source
index_client.delete_knowledge_source(knowledge_source=knowledge_source_name)
print(f"Knowledge source '{knowledge_source_name}' deleted successfully.")

# Delete the search index
index_client.delete_index(index)
print(f"Index '{index_name}' deleted successfully")

Улучшение качества данных

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

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

  • Требуется семантическая конфигурация, но вы определяете, какие поля являются приоритетными и используются для ранжирования.

  • Для обычного текстового содержимого можно использовать анализаторы для управления маркеризацией во время индексирования.

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

Управление количеством вложенных запросов

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

Для не минимальных усилий рассуждения LLM определяет количество вложенных запросов на основе следующих факторов:

  • Запрос пользователя
  • Журнал чата
  • Ограничения входных данных семантического рангателя

Управление контекстом, отправленным агенту

API ответов управляет тем, что отправляется агенту и базе знаний. Чтобы оптимизировать производительность и релевантность, настройте инструкции агента, чтобы суммировать или отфильтровать журнал чата перед отправкой в средство MCP.

Управление затратами и ограничением операций

Сведения о плане запроса смотрите по выходным токенам в массиве активности ответов базы знаний.

Повышение производительности

Чтобы оптимизировать производительность и уменьшить задержку, рассмотрите следующие стратегии.

  • Суммирование цепочек сообщений.

  • Используйте gpt-4.1-mini или меньшую, более быструю модель.

  • Установите maxOutputSize на действие извлечения, чтобы управлять размером ответа, или maxRuntimeInSeconds для времязависимой обработки.

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