Руководство по созданию цельного решения для извлечения данных с помощью Поиск с использованием ИИ Azure

Примечание

Некоторые функции агентского извлечения вообще доступны в версии REST API от 2026-04-01. Однако в этой статье используется предварительная версия 2025-11-01-preview, чтобы продемонстрировать полный набор функций, включая функции, оставшиеся в предварительной версии. Предварительные версии функций предоставляются без соглашения об уровне обслуживания и не рекомендуется для рабочих нагрузок. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.

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

В этом руководстве вы:

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

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

Совет

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

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

Важно

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

Понимание решения

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

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

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

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

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

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

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

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

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

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

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

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

Важно

Недавно были переименованы роли RBAC в Foundry. Foundry User, Foundry Owner, Foundry Account Owner и Foundry Project Manager ранее назывались пользователь Azure AI, владелец Azure AI, владелец учетной записи Azure AI и руководитель проекта Azure AI. Пока новое название внедряется, в некоторых местах вы всё ещё можете видеть прежние названия. Идентификаторы ролей и основные разрешения не меняются из-за переименования.

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

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

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

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

  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 и Microsoft Foundry.

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

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

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

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

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

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

Следующий код загружает переменные среды из файла .env и устанавливает подключения к Поиск с использованием ИИ Azure и Microsoft 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 из электронной книги NASA "Земля ночью". В соответствии с Поиск с использованием ИИ 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 для создания клиентского подключения к проекту Microsoft Foundry. Ваш проект пока может не содержать агентов, но если вы уже завершили этот учебник, агент указан здесь.

from azure.ai.projects import AIProjectClient

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

list(project_client.agents.list())

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

Следующий код создает подключение проекта в Microsoft 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. Заголовки, заданные в определениях агента, применяются ко всем вызовам и не могут отличаться от пользователя или запроса.

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

При необходимости, если база знаний включает удаленный источник знаний 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 для обработки, ограниченной по времени.

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