Создайте источник информации из BLOB-объектов в Хранилище BLOB-объектов Azure и ADLS второго поколения.

Замечание

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

Используйте источник знаний для blob для индексирования и запроса содержимого BLOB-объектов Azure в агентском конвейере извлечения. Источники знаний создаются независимо, ссылаются на базу знаний и используются в качестве исходных данных, когда агент или чат-бот вызывает действие извлечения во время запроса.

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

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

Замечание

Если доступ пользователя указан на уровне документа (объекта) в служба хранилища Azure, источник знаний может передавать метаданные разрешения в индексированное содержимое в Поиск с использованием ИИ Azure. Для получения более подробной информации см. метаданные разрешений ADLS Gen2 или Blob RBAC scopes.

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

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

Предпосылки

Проверка существующих источников знаний

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

Выполните следующий код, чтобы перечислить источники знаний по имени и типу.

// List knowledge sources by name and type
using Azure.Search.Documents.Indexes;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
var knowledgeSources = indexClient.GetKnowledgeSourcesAsync();

Console.WriteLine("Knowledge Sources:");

await foreach (var ks in knowledgeSources)
{
    Console.WriteLine($"  Name: {ks.Name}, Type: {ks.GetType().Name}");
}

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

using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

// Specify the knowledge source name to retrieve
string ksNameToGet = "earth-knowledge-source";

// Get its definition
var knowledgeSourceResponse = await indexClient.GetKnowledgeSourceAsync(ksNameToGet);
var ks = knowledgeSourceResponse.Value;

// Serialize to JSON for display
var jsonOptions = new JsonSerializerOptions 
{ 
    WriteIndented = true,
    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.Never
};
Console.WriteLine(JsonSerializer.Serialize(ks, ks.GetType(), jsonOptions));

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

Выполните следующий код, чтобы перечислить источники знаний по имени и типу.

# List knowledge sources by name and type
import requests
import json

endpoint = "{search_url}/knowledgesources"
params = {"api-version": "2025-11-01-preview", "$select": "name, kind"}
headers = {"api-key": "{api_key}"}

response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))

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

# Get a knowledge source definition
import requests
import json

endpoint = "{search_url}/knowledgesources/{knowledge_source_name}"
params = {"api-version": "2025-11-01-preview"}
headers = {"api-key": "{api_key}"}

response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))

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

Используйте Knowledge Sources - Get (REST API) для перечисления источников знаний по имени и типу.

### List knowledge sources by name and type
GET {{search-url}}/knowledgesources?api-version=2025-11-01-preview&$select=name,kind
api-key: {{api-key}}

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

### Get a knowledge source definition
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version=2025-11-01-preview
api-key: {{api-key}}

Приведенный JSON является примером ответа для источника знаний о BLOB-объектах.

{
  "name": "my-blob-ks",
  "kind": "azureBlob",
  "description": "A sample blob knowledge source.",
  "encryptionKey": null,
  "azureBlobParameters": {
    "connectionString": "<REDACTED>",
    "containerName": "blobcontainer",
    "folderPath": null,
    "isADLSGen2": false,
    "ingestionParameters": {
      "disableImageVerbalization": false,
      "ingestionPermissionOptions": [],
      "contentExtractionMode": "standard",
      "identity": null,
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "text-embedding-3-large",
          "apiKey": "<REDACTED>",
          "modelName": "text-embedding-3-large",
          "authIdentity": null
        }
      },
      "chatCompletionModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "gpt-5-mini",
          "apiKey": "<REDACTED>",
          "modelName": "gpt-5-mini",
          "authIdentity": null
        }
      },
      "ingestionSchedule": null,
      "assetStore": null,
      "aiServices": {
        "uri": "<REDACTED>",
        "apiKey": "<REDACTED>"
      }
    },
    "createdResources": {
      "datasource": "my-blob-ks-datasource",
      "indexer": "my-blob-ks-indexer",
      "skillset": "my-blob-ks-skillset",
      "index": "my-blob-ks-index"
    }
  }
}

Замечание

Конфиденциальная информация редактируется. Созданные ресурсы отображаются в конце ответа.

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

Выполните следующий код, чтобы создать источник данных BLOB.

// Create a blob knowledge source
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

var chatCompletionParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiGptDeployment,
    ModelName = aoaiGptModel
};

var embeddingParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiEmbeddingDeployment,
    ModelName = aoaiEmbeddingModel
};

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    DisableImageVerbalization = false,
    ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: chatCompletionParams),
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    }
};

var blobParams = new AzureBlobKnowledgeSourceParameters(
    connectionString: connectionString,
    containerName: containerName
)
{
    IsAdlsGen2 = false,
    IngestionParameters = ingestionParams
};

var knowledgeSource = new AzureBlobKnowledgeSource(
    name: "my-blob-ks",
    azureBlobParameters: blobParams
)
{
    Description = "This knowledge source pulls from a blob storage container."
};

await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Knowledge source '{knowledgeSource.Name}' created or updated successfully.");

Выполните следующий код, чтобы создать источник знаний BLOB.

# Create a blob knowledge source
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import AzureBlobKnowledgeSource, AzureBlobKnowledgeSourceParameters, KnowledgeBaseAzureOpenAIModel, AzureOpenAIVectorizerParameters, KnowledgeSourceAzureOpenAIVectorizer, KnowledgeSourceContentExtractionMode, KnowledgeSourceIngestionParameters

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

knowledge_source = AzureBlobKnowledgeSource(
    name = "my-blob-ks",
    description = "This knowledge source pulls from a blob storage container.",
    encryption_key = None,
    azure_blob_parameters = AzureBlobKnowledgeSourceParameters(
        connection_string = "blob_connection_string",
        container_name = "blob_container_name",
        folder_path = None,
        is_adls_gen2 = False,
        ingestion_parameters = KnowledgeSourceIngestionParameters(
            identity = None,
            disable_image_verbalization = False,
            chat_completion_model = KnowledgeBaseAzureOpenAIModel(
                azure_open_ai_parameters = AzureOpenAIVectorizerParameters(
                    resource_url = "aoai_endpoint",
                    deployment_name = "aoai_gpt_deployment",
                    model_name = "aoai_gpt_model",
                    api_key = "aoai_api_key"
                )
            ),
            embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
                azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
                    resource_url = "aoai_endpoint",
                    deployment_name = "aoai_embedding_deployment",
                    model_name = "aoai_embedding_model",
                    api_key = "aoai_api_key"
                )
            ),
            content_extraction_mode = KnowledgeSourceContentExtractionMode.MINIMAL,
            ingestion_schedule = None,
            ingestion_permission_options = None
        )
    )
)

index_client.create_or_update_knowledge_source(knowledge_source)
print(f"Knowledge source '{knowledge_source.name}' created or updated successfully.")

Используйте источники знаний — создание или обновление (REST API) для создания источника знаний BLOB.

PUT {{search-url}}/knowledgesources/my-blob-ks?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json

{
  "name": "my-blob-ks",
  "kind": "azureBlob",
  "description": "This knowledge source pulls from a blob storage container.",
  "encryptionKey": null,
  "azureBlobParameters": {
    "connectionString": "<YOUR AZURE STORAGE CONNECTION STRING>",
    "containerName": "<YOUR BLOB CONTAINER NAME>",
    "folderPath": null,
    "isADLSGen2": false,
    "ingestionParameters": {
        "identity": null,
        "disableImageVerbalization": null,
        "chatCompletionModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-gpt-deployment}}",
                "modelName": "{{aoai-gpt-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "embeddingModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-embedding-deployment}}",
                "modelName": "{{aoai-embedding-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "contentExtractionMode": "minimal",
        "ingestionSchedule": null,
        "ingestionPermissionOptions": []
    }
  }
}

Свойства, относящиеся к источнику

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

Имя Description Тип Возможно изменение Обязательно
Name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
Description Описание источника знаний. String Да нет
EncryptionKey Управляемый клиентом ключ для шифрования конфиденциальной информации как в источнике знаний, так и в созданных объектах. Object Да нет
AzureBlobParameters Параметры, относящиеся к источникам знаний BLOB: ConnectionString, ContainerName, FolderPath, и IsAdlsGen2. Object нет
ConnectionString Строка подключения на основе ключа или, если вы используете управляемое удостоверение, идентификатор ресурса. String нет Да
ContainerName Имя контейнера хранилища BLOB-объектов. String нет Да
FolderPath Папка в контейнере. String нет нет
IsAdlsGen2 Значение по умолчанию — False. Установите значение True , если вы используете учетную запись хранения ADLS 2-го поколения. Boolean нет нет
Имя Description Тип Возможно изменение Обязательно
name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
description Описание источника знаний. String Да нет
encryption_key Управляемый клиентом ключ для шифрования конфиденциальной информации как в источнике знаний, так и в созданных объектах. Object Да нет
azure_blob_parameters Параметры, относящиеся к источникам знаний BLOB: connection_string, container_name, folder_path, и is_adls_gen2. Object нет
connection_string Строка подключения на основе ключа или, если вы используете управляемое удостоверение, идентификатор ресурса. String нет Да
container_name Имя контейнера хранилища BLOB-объектов. String нет Да
folder_path Папка в контейнере. String нет нет
is_adls_gen2 Значение по умолчанию — False. Установите значение True , если вы используете учетную запись хранения ADLS 2-го поколения. Boolean нет нет
Имя Description Тип Возможно изменение Обязательно
name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
kind Тип источника знаний, в данном случае azureBlob. String нет Да
description Описание источника знаний. String Да нет
encryptionKey Управляемый клиентом ключ для шифрования конфиденциальной информации как в источнике знаний, так и в созданных объектах. Object Да нет
azureBlobParameters Параметры, относящиеся к источникам знаний BLOB: connectionString, containerName, folderPath, и isADLSGen2. Object нет
connectionString Строка подключения на основе ключа или, если вы используете управляемое удостоверение, идентификатор ресурса. String нет Да
containerName Имя контейнера хранилища BLOB-объектов. String нет Да
folderPath Папка в контейнере. String нет нет
isADLSGen2 Значение по умолчанию — false. Установите значение true , если вы используете учетную запись хранения ADLS 2-го поколения. Boolean нет нет

Свойства параметров приема

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

Имя Description Тип Возможно изменение Обязательно
Identity Управляемая идентичность для использования в созданном индексаторе. Object Да нет
DisableImageVerbalization Включает или отключает использование вербализации изображений. Значение по умолчанию — False, что включает вербализацию изображения. Установите для True, чтобы отключить словесное описание изображения. Boolean нет нет
ChatCompletionModel Модель завершения чата, которая переводит изображения в текст или извлекает содержимое. Поддерживаемые модели: gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5, gpt-5-miniи .gpt-5-nano Навык запроса GenAI будет включен в созданный набор навыков. Для установки этого параметра также требуется, чтобы DisableImageVerbalization было установлено на False. Object Только ApiKey и DeploymentName редактируются нет
EmbeddingModel Модель внедрения текста, которая векторизирует содержимое текста и изображения во время индексирования и во время запроса. Поддерживаемые модели: text-embedding-ada-002, text-embedding-3-smallи text-embedding-3-large. Навык Azure OpenAI Embedding будет включен в созданный набор навыков, а векторизатор Azure OpenAI будет включен в созданный индекс. Object Только ApiKey и DeploymentName редактируются нет
ContentExtractionMode Управляет извлечением содержимого из файлов. По умолчанию используется minimal стандартное извлечение содержимого для текста и изображений. Установите значение standard для расширенной обработки и фрагментирования документов с помощью навыка Azure для распознавания содержимого, который будет включен в созданный набор навыков. Только для standard могут быть заданы параметры AiServices и AssetStore. String нет нет
AiServices Ресурс Microsoft Foundry для доступа к функциям понимания контента Azure в Foundry Tools. Для установки этого параметра требуется, чтобы ContentExtractionMode было установлено на standard. Object Только ApiKey можно редактировать Да
AssetStore Контейнер BLOB для хранения извлеченных образов. Для установки этого параметра требуется, чтобы ContentExtractionMode было установлено на standard. Object нет нет
IngestionSchedule Добавляет сведения о планировании в созданный индексатор. Вы также можете добавить расписание позже для автоматизации обновления данных. Object Да нет
IngestionPermissionOptions Разрешения уровня документа для интеграции с содержимым. Укажите UserIds, GroupIds или RbacScope, чтобы сохранить метаданные разрешений в индексе. Инструкции для конкретного источника см. в разделе назначение разрешений RBAC из BLOB-хранилища и назначение списков управления доступом из ADLS Gen2. Сведения о применении этих разрешений во время запроса см. в разделе "Принудительное применение разрешений во время запроса". Массив нет нет

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

Имя Description Тип Возможно изменение Обязательно
identity Управляемая идентичность для использования в созданном индексаторе. Object Да нет
disable_image_verbalization Включает или отключает использование вербализации изображений. Значение по умолчанию — False, что включает вербализацию изображения. Установите для True, чтобы отключить словесное описание изображения. Boolean нет нет
chat_completion_model Модель завершения чата, которая переводит изображения в текст или извлекает содержимое. Поддерживаемые модели: gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5, gpt-5-miniи .gpt-5-nano Навык запроса GenAI будет включен в созданный набор навыков. Для установки этого параметра также требуется, чтобы disable_image_verbalization было установлено на False. Object Только api_key и deployment_name редактируются нет
embedding_model Модель внедрения текста, которая векторизирует содержимое текста и изображения во время индексирования и во время запроса. Поддерживаемые модели: text-embedding-ada-002, text-embedding-3-smallи text-embedding-3-large. Навык Azure OpenAI Embedding будет включен в созданный набор навыков, а векторизатор Azure OpenAI будет включен в созданный индекс. Object Только api_key и deployment_name редактируются нет
content_extraction_mode Управляет извлечением содержимого из файлов. По умолчанию используется minimal стандартное извлечение содержимого для текста и изображений. Установите значение standard для расширенной обработки и фрагментирования документов с помощью навыка Azure для распознавания содержимого, который будет включен в созданный набор навыков. Только для standard могут быть заданы параметры ai_services и asset_store. String нет нет
ai_services Ресурс Microsoft Foundry для доступа к функциям понимания контента Azure в Foundry Tools. Для установки этого параметра требуется, чтобы content_extraction_mode было установлено на standard. Object Только api_key можно редактировать Да
asset_store Контейнер BLOB для хранения извлеченных образов. Для установки этого параметра требуется, чтобы content_extraction_mode было установлено на standard. Object нет нет
ingestion_schedule Добавляет сведения о планировании в созданный индексатор. Вы также можете добавить расписание позже для автоматизации обновления данных. Object Да нет
ingestion_permission_options Разрешения уровня документа для интеграции с содержимым. Укажите user_ids, group_ids или rbac_scope, чтобы сохранить метаданные разрешений в индексе. Инструкции для конкретного источника см. в разделе назначение разрешений RBAC из BLOB-хранилища и назначение списков управления доступом из ADLS Gen2. Сведения о применении этих разрешений во время запроса см. в разделе "Принудительное применение разрешений во время запроса". Массив нет нет

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

Имя Description Тип Возможно изменение Обязательно
identity Управляемая идентичность для использования в созданном индексаторе. Object Да нет
disableImageVerbalization Включает или отключает использование вербализации изображений. Значение по умолчанию — false, что включает вербализацию изображения. Установите для true, чтобы отключить словесное описание изображения. Boolean нет нет
chatCompletionModel Модель завершения чата, которая переводит изображения в текст или извлекает содержимое. Поддерживаемые модели: gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5, gpt-5-miniи .gpt-5-nano Навык запроса GenAI будет включен в созданный набор навыков. Для установки этого параметра также требуется, чтобы disableImageVerbalization было установлено на false. Object Только apiKey и deploymentId редактируются нет
embeddingModel Модель внедрения текста, которая векторизирует содержимое текста и изображения во время индексирования и во время запроса. Поддерживаемые модели: text-embedding-ada-002, text-embedding-3-smallи text-embedding-3-large. Навык Azure OpenAI Embedding будет включен в созданный набор навыков, а векторизатор Azure OpenAI будет включен в созданный индекс. Object Только apiKey и deploymentId редактируются нет
contentExtractionMode Управляет извлечением содержимого из файлов. По умолчанию используется minimal стандартное извлечение содержимого для текста и изображений. Установите значение standard для расширенной обработки и фрагментирования документов с помощью навыка Azure для распознавания содержимого, который будет включен в созданный набор навыков. Только для standard могут быть заданы параметры aiServices и assetStore. String нет нет
aiServices Ресурс Microsoft Foundry для доступа к функциям понимания контента Azure в Foundry Tools. Для установки этого параметра требуется, чтобы contentExtractionMode было установлено на standard. Object Только apiKey можно редактировать Да
assetStore Контейнер BLOB для хранения извлеченных образов. Для установки этого параметра требуется, чтобы contentExtractionMode было установлено на standard. Object нет нет
ingestionSchedule Добавляет сведения о планировании в созданный индексатор. Вы также можете добавить расписание позже для автоматизации обновления данных. Object Да нет
ingestionPermissionOptions Разрешения уровня документа для интеграции с содержимым. Укажите userIds, groupIds или rbacScope, чтобы сохранить метаданные разрешений в индексе. Инструкции для конкретного источника см. в разделе назначение разрешений RBAC из BLOB-хранилища и назначение списков управления доступом из ADLS Gen2. Сведения о применении этих разрешений во время запроса см. в разделе "Принудительное применение разрешений во время запроса". Массив нет нет

Проверка состояния приема

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

// Get knowledge source ingestion status
using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

// Get the knowledge source status
var statusResponse = await indexClient.GetKnowledgeSourceStatusAsync(knowledgeSourceName);
var status = statusResponse.Value;

// Serialize to JSON for display
var json = JsonSerializer.Serialize(status, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);

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

{ 
  "synchronizationStatus": "active", // creating, active, deleting 
  "synchronizationInterval" : "1d", // null if no schedule 
  "currentSynchronizationState" : { // spans multiple indexer "runs" 
    "startTime": "2025-10-27T19:30:00Z", 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "lastSynchronizationState" : {  // null on first sync 
    "startTime": "2025-10-27T19:30:00Z", 
    "endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "statistics": {  // null on first sync 
    "totalSynchronization": 25, 
    "averageSynchronizationDuration": "00:15:20", 
    "averageItemsProcessedPerSynchronization" : 500 
  } 
} 

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

# Check knowledge source ingestion status
import requests
import json

endpoint = "{search_url}/knowledgesources/{knowledge_source_name}/status"
params = {"api-version": "2025-11-01-preview"}
headers = {"api-key": "{api_key}"}

response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))

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

{ 
  "synchronizationStatus": "active", // creating, active, deleting 
  "synchronizationInterval" : "1d", // null if no schedule 
  "currentSynchronizationState" : { // spans multiple indexer "runs" 
    "startTime": "2025-10-27T19:30:00Z", 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "lastSynchronizationState" : {  // null on first sync 
    "startTime": "2025-10-27T19:30:00Z", 
    "endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "statistics": {  // null on first sync 
    "totalSynchronization": 25, 
    "averageSynchronizationDuration": "00:15:20", 
    "averageItemsProcessedPerSynchronization" : 500 
  } 
} 

Используйте Источники знаний — состояние (REST API) для отслеживания хода поступления данных и работоспособности, включая статус индексатора для источников знаний, которые формируют инфраструктуру индексирования и наполняют поисковый индекс.

### Check knowledge source ingestion status
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}/status?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json 

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

{ 
  "synchronizationStatus": "active", // creating, active, deleting 
  "synchronizationInterval" : "1d", // null if no schedule 
  "currentSynchronizationState" : { // spans multiple indexer "runs" 
    "startTime": "2025-10-27T19:30:00Z", 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "lastSynchronizationState" : {  // null on first sync 
    "startTime": "2025-10-27T19:30:00Z", 
    "endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve 
    "itemUpdatesProcessed": 1100, 
    "itemsUpdatesFailed": 100, 
    "itemsSkipped": 1100, 
  }, 
  "statistics": {  // null on first sync 
    "totalSynchronization": 25, 
    "averageSynchronizationDuration": "00:15:20", 
    "averageItemsProcessedPerSynchronization" : 500 
  } 
} 

Просмотр созданных объектов

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

После создания источника знаний ответ выводит список созданных объектов. Эти объекты создаются в соответствии с фиксированным шаблоном, а их имена основаны на имени источника знаний. Нельзя изменить имена объектов.

Мы рекомендуем использовать портал Azure для проверки создания выходных данных. Рабочий процесс:

  1. Проверьте индексатор для сообщений об успешном выполнении или сбое. Ошибки подключения или квоты отображаются здесь.
  2. Проверьте индекс содержимого, доступного для поиска. Используйте обозреватель поиска для выполнения запросов.
  3. Проверьте функционал, чтобы узнать, как содержимое разбивается на части и опционально преобразовано в векторы.
  4. Проверьте источник данных для получения сведений о подключении. В нашем примере используются ключи API для простоты, но для авторизации можно использовать Microsoft Entra ID для проверки подлинности и управления доступом на основе ролей.

Назначение базе знаний

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

После настройки базы знаний используйте действие извлечения для запроса источника знаний.

Подсказка

Чтобы применить разрешения на уровне документа, задайте IngestionPermissionOptions при создании этого источника знаний и добавьте маркер доступа пользователя в запрос на получение. Дополнительные сведения см. в разделе "Принудительное применение разрешений во время запроса".

Подсказка

Чтобы применить разрешения на уровне документа, задайте ingestion_permission_options при создании этого источника знаний и добавьте маркер доступа пользователя в запрос на получение. Дополнительные сведения см. в разделе "Принудительное применение разрешений во время запроса".

Подсказка

Чтобы применить разрешения на уровне документа, задайте ingestionPermissionOptions при создании этого источника знаний и добавьте маркер доступа пользователя в запрос на получение. Дополнительные сведения см. в разделе "Принудительное применение разрешений во время запроса".

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

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

Если вы пытаетесь удалить используемый источник знаний, действие завершается ошибкой и возвращает список затронутых баз знаний.

Удаление источника знаний:

  1. Получите список всех баз знаний в службе поиска.

    using Azure.Search.Documents.Indexes;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    var knowledgeBases = indexClient.GetKnowledgeBasesAsync();
    
    Console.WriteLine("Knowledge Bases:");
    
    await foreach (var kb in knowledgeBases)
    {
        Console.WriteLine($"  - {kb.Name}");
    }
    

    Пример ответа может выглядеть следующим образом:

     Knowledge Bases:
       - earth-knowledge-base
       - hotels-sample-knowledge-base
       - my-demo-knowledge-base
    
  2. Получите отдельное определение базы знаний для проверки ссылок на источники знаний.

    using Azure.Search.Documents.Indexes;
    using System.Text.Json;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    
    // Specify the knowledge base name to retrieve
    string kbNameToGet = "earth-knowledge-base";
    
    // Get a specific knowledge base definition
    var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet);
    var kb = knowledgeBaseResponse.Value;
    
    // Serialize to JSON for display
    string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true });
    Console.WriteLine(json);
    

    Пример ответа может выглядеть следующим образом:

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. Удалите базу знаний или обновите базу знаний, чтобы удалить источник знаний при наличии нескольких источников. В этом примере показано удаление.

    using Azure.Search.Documents.Indexes;
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    
    await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName);
    System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");
    
  4. Удалите источник знаний.

    await indexClient.DeleteKnowledgeSourceAsync(knowledgeSourceName);
    System.Console.WriteLine($"Knowledge source '{knowledgeSourceName}' deleted successfully.");
    

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

Если вы пытаетесь удалить используемый источник знаний, действие завершается ошибкой и возвращает список затронутых баз знаний.

Удаление источника знаний:

  1. Получите список всех баз знаний в службе поиска.

    # Get knowledge bases
    import requests
    import json
    
    endpoint = "{search_url}/knowledgebases"
    params = {"api-version": "2025-11-01-preview", "$select": "name"}
    headers = {"api-key": "{api_key}"}
    
    response = requests.get(endpoint, params = params, headers = headers)
    print(json.dumps(response.json(), indent = 2))
    

    Пример ответа может выглядеть следующим образом:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Получите отдельное определение базы знаний для проверки ссылок на источники знаний.

    # Get a knowledge base definition
    import requests
    import json
    
    endpoint = "{search_url}/knowledgebases/{knowledge_base_name}"
    params = {"api-version": "2025-11-01-preview"}
    headers = {"api-key": "{api_key}"}
    
    response = requests.get(endpoint, params = params, headers = headers)
    print(json.dumps(response.json(), indent = 2))
    

    Пример ответа может выглядеть следующим образом:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Удалите базу знаний или обновите базу знаний, чтобы удалить источник знаний при наличии нескольких источников. В этом примере показано удаление.

    # Delete a knowledge base
    from azure.core.credentials import AzureKeyCredential 
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    index_client.delete_knowledge_base("knowledge_base_name")
    print(f"Knowledge base deleted successfully.")
    
  4. Удалите источник знаний.

    # Delete a knowledge source
    from azure.core.credentials import AzureKeyCredential 
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    index_client.delete_knowledge_source("knowledge_source_name")
    print(f"Knowledge source deleted successfully.")
    

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

Если вы пытаетесь удалить используемый источник знаний, действие завершается ошибкой и возвращает список затронутых баз знаний.

Удаление источника знаний:

  1. Получите список всех баз знаний в службе поиска.

    ### Get knowledge bases
    GET {{search-endpoint}}/knowledgebases?api-version=2025-11-01-preview&$select=name
    api-key: {{api-key}}
    

    Пример ответа может выглядеть следующим образом:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Получите отдельное определение базы знаний для проверки ссылок на источники знаний.

    ### Get a knowledge base definition
    GET {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
    api-key: {{api-key}}
    

    Пример ответа может выглядеть следующим образом:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Удалите базу знаний или обновите базу знаний, удалив источник знаний, если у вас несколько источников. В этом примере показано удаление.

    ### Delete a knowledge base
    DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
    api-key: {{api-key}}
    
  4. Удалите источник знаний.

    ### Delete a knowledge source
    DELETE {{search-endpoint}}/knowledgesources/{{knowledge-source-name}}?api-version=2025-11-01-preview
    api-key: {{api-key}}