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


Создание источника знаний из Azure Blob Storage и ADLS 2-го поколения

Замечание

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

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

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

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

Замечание

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

Предпосылки

Замечание

Хотя вы можете использовать портал Azure для создания источников знаний на основе BLOB-объектов, в портале используется предварительная версия 2025-08-01-preview, которая применяет предыдущую терминологию "агент знаний" и не поддерживает все функции версии 2025-11-01-preview. Сведения о критических изменениях см. в статье "Миграция кода извлечения агента".

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

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

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

// 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));

Приведенный 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, можно передать следующие свойства.

Имя Description Тип Возможно изменение Обязательно
name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и следуйте рекомендациям по именованию объектов в службе "Поиск ИИ Azure". String нет Да
Description Описание источника знаний. String Да нет
encryptionKey Управляемый клиентом ключ для шифрования конфиденциальной информации как в источнике знаний, так и в созданных объектах. Object Да нет
chatCompletionParams Параметры, относящиеся к моделям завершения диалога, используемым для планирования запросов и синтеза необязательных ответов, когда усилия по извлечению информации низкие или средние. Object нет
embeddingParams Параметры, относящиеся к внедрению моделей, используемых, если требуется векторизировать блоки содержимого. Object нет
azureBlobParameters Параметры, относящиеся к источникам знаний BLOB: connectionString, containerName, folderPath, и isAdlsGen2. Object нет
connectionString Строка подключения, основанная на ключе, или, если вы используете управляемое удостоверение, идентификатор ресурса. String нет Да
containerName Имя контейнера хранилища BLOB-объектов. String нет Да
folderPath Папка в контейнере. String нет нет
isAdlsGen2 Значение по умолчанию — False. Установите значение True , если вы используете учетную запись хранения ADLS 2-го поколения. Boolean нет нет

свойства ingestionParameters

Только для индексированных источников знаний можно передать следующие 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 будет включен в созданный набор навыков. Для установки этого параметра также требуется, чтобы disable_image_verbalization было установлено на False. Object Только api_key и deployment_name редактируются нет
EmbeddingModel Модель внедрения текста, которая векторизирует содержимое текста и изображения во время индексирования и во время запроса. Поддерживаемые модели: text-embedding-ada-002, text-embedding-3-smallи text-embedding-3-large. Навык встраивания Azure OpenAI будет включен в созданный набор навыков, а векторизатор Azure OpenAI будет включен в созданный индекс. Object Только api_key и deployment_name редактируются нет
ContentExtractionMode Управляет извлечением содержимого из файлов. По умолчанию используется minimal стандартное извлечение содержимого для текста и изображений. standard Установите значение для расширенного взлома и фрагментирования документов с помощью навыка "Понимание содержимого Azure", который будет включен в созданный набор навыков. Только для standard могут быть заданы параметры AiServices и AssetStore. String нет нет
AiServices Ресурс Microsoft Foundry для доступа к возможности обработки контента Azure в Foundry Tools. Для установки этого параметра требуется, чтобы ContentExtractionMode было установлено на standard. Object Только api_key можно редактировать Да
IngestionSchedule Добавляет сведения о планировании в созданный индексатор. Вы также можете добавить расписание позже для автоматизации обновления данных. Object Да нет
IngestionPermissionOptions Разрешения уровня документа для приема из выбранных источников знаний, например, ADLS Gen2 или индексированных SharePoint. При указании user_ids, group_ids или rbac_scope в созданном индексаторе ADLS поколения 2 или индексаторе SharePoint будут включены разрешения на импорт. Массив нет нет

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

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

// 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 
  } 
} 

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

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

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

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

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

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

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

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

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

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

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

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

  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.");
    

Замечание

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

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

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

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

Замечание

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

Предпосылки

Замечание

Хотя вы можете использовать портал Azure для создания источников знаний на основе BLOB-объектов, в портале используется предварительная версия 2025-08-01-preview, которая применяет предыдущую терминологию "агент знаний" и не поддерживает все функции версии 2025-11-01-preview. Сведения о критических изменениях см. в статье "Миграция кода извлечения агента".

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

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

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

# 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))

Приведенный 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
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(
                    # TRIMMED FOR BREVITY
                )
            ),
            embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
                azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
                    # TRIMMED FOR BREVITY
                )
            ),
            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.")

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

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

Имя 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 нет нет

свойства ingestionParameters

Только для индексированных источников знаний можно передать следующие 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 будет включен в созданный набор навыков, а векторизатор 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 Разрешения уровня документа для приема из выбранных источников знаний, например, ADLS Gen2 или индексированных SharePoint. При указании user_ids, group_ids или rbac_scope в созданном индексаторе ADLS поколения 2 или индексаторе SharePoint будут включены разрешения на импорт. Массив нет нет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечание

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

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

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

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

Замечание

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

Предпосылки

Замечание

Хотя вы можете использовать портал Azure для создания источников знаний на основе BLOB-объектов, в портале используется предварительная версия 2025-08-01-preview, которая применяет предыдущую терминологию "агент знаний" и не поддерживает все функции версии 2025-11-01-preview. Сведения о критических изменениях см. в статье "Миграция кода извлечения агента".

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

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

Используйте 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"
    }
  }
}

Замечание

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

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

Используйте источники знаний — создание или обновление (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": { TRIMMED FOR BREVITY },
        "embeddingModel": { TRIMMED FOR BREVITY },
        "contentExtractionMode": "minimal",
        "ingestionSchedule": null,
        "ingestionPermissionOptions": []
    }
  }
}

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

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

Имя 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

Только для индексированных источников знаний можно передать следующие 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 будет включен в созданный набор навыков, а векторизатор 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 Разрешения уровня документа для приема из выбранных источников знаний, например, ADLS Gen2 или индексированных SharePoint. При указании userIds, groupIds или rbacScope в созданном индексаторе ADLS поколения 2 или индексаторе SharePoint будут включены разрешения на импорт. Массив нет нет

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

Используйте Источники знаний — состояние (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 для проверки подлинности и управления доступом на основе ролей для авторизации.

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

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

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

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

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

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

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

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