Создание удаленного источника знаний SharePoint

Замечание

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

Источник знаний remote SharePoint использует Copilot Retrieval API для запроса текстового содержимого непосредственно из SharePoint в Microsoft 365. Индекс поиска и строка подключения не требуются. Запрашивается только текстовое содержимое, а плата за использование взимается через Microsoft 365 и лицензию Copilot.

Чтобы ограничить сайты или ограничить поиск, задайте для выражения фильтра область по URL-адресам, диапазонам дат, типам файлов и другим метаданным. Удостоверение личности звонящего должно быть распознано как арендаторами Azure, так и Microsoft 365, так как механизм получения данных запрашивает SharePoint от имени пользователя.

Как и любой другой источник знаний, вы указываете удаленный источник знаний SharePoint в базе knowledge и используете результаты в качестве заземления данных, когда агент или чат-бот вызывает действие retrieve во время запроса.

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

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

Предпосылки

  • Последний предварительный пакетAzure.Search.Documents: dotnet add package Azure.Search.Documents --prerelease
  • Последний предварительный пакетazure-search-documents: pip install --pre azure-search-documents

Ограничения

Следующие ограничения в API извлечения Copilot применяются к удаленным источникам знаний SharePoint.

  • Нет поддержки соединителей Copilot или содержимого OneDrive. Содержимое извлекается только из SharePoint сайтов.

  • Ограничение в 200 запросов на пользователя в час.

  • Ограничение символов запроса в 1500 символов.

  • Гибридные запросы поддерживаются только для следующих расширений файлов: .doc, .docx, .pptx, .pdf, .aspx и .one.

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

  • Не более 25 результатов из запроса.

  • Результаты возвращаются API извлечения Copilot в неупорядоченном виде.

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

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

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

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

// 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 является примером ответа для удаленного SharePoint источника знаний.

{
  "name": "my-sharepoint-ks",
  "kind": "remoteSharePoint",
  "description": "A sample remote SharePoint knowledge source",
  "encryptionKey": null,
  "remoteSharePointParameters": {
    "filterExpression": "filetype:docx",
    "containerTypeId": null,
    "resourceMetadata": [
      "Author",
      "Title"
    ]
  }
}

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

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

// Create a remote SharePoint 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), credential);

var knowledgeSource = new RemoteSharePointKnowledgeSource(name: "my-remote-sharepoint-ks")
{
    Description = "This knowledge source queries .docx files in a trusted Microsoft 365 tenant.",
    RemoteSharePointParameters = new RemoteSharePointKnowledgeSourceParameters()
    {
        FilterExpression = "filetype:docx",
        ResourceMetadata = { "Author", "Title" }
    }
};

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

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

# Create a remote SharePoint knowledge source
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import RemoteSharePointKnowledgeSource, RemoteSharePointKnowledgeSourceParameters

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

knowledge_source = RemoteSharePointKnowledgeSource(
    name = "my-remote-sharepoint-ks",
    description= "This knowledge source queries .docx files in a trusted Microsoft 365 tenant.",
    encryption_key = None,
    remote_share_point_parameters = RemoteSharePointKnowledgeSourceParameters(
        filter_expression = "filetype:docx",
        resource_metadata = ["Author", "Title"],
        container_type_id = None
    )
)

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

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

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

{
    "name": "my-remote-sharepoint-ks",
    "kind": "remoteSharePoint",
    "description": "This knowledge source queries .docx files in a trusted Microsoft 365 tenant.",
    "encryptionKey": null,
    "remoteSharePointParameters": {
        "filterExpression": "filetype:docx",
        "resourceMetadata": [ "Author", "Title" ],
        "containerTypeId": null
    }
}

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

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

Имя Description Тип Возможно изменение Обязательно
Name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
Description Описание источника знаний. String Да нет
EncryptionKey Управляемый клиентом ключ для шифрования конфиденциальной информации в источнике знаний. Object Да нет
RemoteSharePointParameters Параметры, относящиеся к удаленным источникам знаний SharePoint: FilterExpression, ResourceMetadata и ContainerTypeId. Object нет нет
FilterExpression Выражение, написанное в SharePoint KQL, которое используется для указания сайтов и путей к содержимому. String Да нет
ResourceMetadata Массив стандартных полей метаданных: автор, имя файла, дата создания, тип контента и тип файла. Массив Да нет
ContainerTypeId Идентификатор контейнера для подключения SharePoint Embedded. Если не указано, используется SharePoint Online. String Да нет
Имя Description Тип Возможно изменение Обязательно
name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
description Описание источника знаний. String Да нет
encryption_key Управляемый клиентом ключ для шифрования конфиденциальной информации в источнике знаний. Object Да нет
remote_share_point_parameters Параметры, относящиеся к удаленным источникам знаний SharePoint: filter_expression, resource_metadata и container_type_id. Object нет нет
filter_expression Выражение, написанное в SharePoint KQL, которое используется для указания сайтов и путей к содержимому. String Да нет
resource_metadata Массив стандартных полей метаданных: автор, имя файла, дата создания, тип контента и тип файла. Массив Да нет
container_type_id Идентификатор контейнера для подключения SharePoint Embedded. Если не указано, используется SharePoint Online. String Да нет
Имя Description Тип Возможно изменение Обязательно
name Имя источника знаний, которое должно быть уникальным в коллекции источников знаний и соответствовать рекомендациям по именованию для объектов в Поиск с использованием ИИ Azure. String нет Да
kind Тип источника знаний, в данном случае remoteSharePoint. String нет Да
description Описание источника знаний. String Да нет
encryptionKey Управляемый клиентом ключ для шифрования конфиденциальной информации в источнике знаний. Object Да нет
remoteSharePointParameters Параметры, относящиеся к удаленным источникам знаний SharePoint: filterExpression, resourceMetadata и containerTypeId. Object нет нет
filterExpression Выражение, написанное в SharePoint KQL, которое используется для указания сайтов и путей к содержимому. String Да нет
resourceMetadata Массив стандартных полей метаданных: автор, имя файла, дата создания, тип контента и тип файла. Массив Да нет
containerTypeId Идентификатор контейнера для подключения SharePoint Embedded. Если не указано, используется SharePoint Online. String Да нет

Примеры выражений фильтра

Не все свойства SharePoint поддерживаются в filterExpression. Список поддерживаемых свойств см. в справочнике по API. Сведения о свойствах, доступных для запроса, см. в разделе "Запросы".

Дополнительные сведения о фильтрах KQL см. в справочнике по синтаксису.

Example Выражение фильтра
Фильтрация по одному сайту по идентификатору "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\""
Фильтрация по нескольким сайтам по идентификатору "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\" OR SiteID:\"11bb11bb-cc22-dd33-ee44-55ff55ff55ff\""
Фильтрация по файлам по определенному пути "filterExpression": "Path:\"https://my-demo.sharepoint.com/sites/mysite/Shared Documents/en/mydocs\""
Фильтрация по определенному диапазону дат "filterExpression": "LastModifiedTime >= 2024-07-22 AND LastModifiedTime <= 2025-01-08"
Фильтрация по файлам определенного типа файла "filterExpression": "FileExtension:\"docx\" OR FileExtension:\"pdf\" OR FileExtension:\"pptx\""
Фильтрация по файлам определенной метки защиты информации "filterExpression": "InformationProtectionLabelId:\"f0ddcc93-d3c0-4993-b5cc-76b0a283e252\""

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

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

Запрос к базе знаний

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

Применение фильтра KQL во время запроса

Вы можете передать FilterExpressionAddOn в KnowledgeSourceParams при запросе на получение, чтобы применить фильтр KQL во время выполнения запроса. Если вы указываете FilterExpressionAddOn на запрос на получение, а FilterExpression на определение источника знаний, фильтры объединяются с помощью оператора И.

var retrievalRequest = new KnowledgeBaseRetrievalRequest();
retrievalRequest.Messages.Add(
    new KnowledgeBaseMessage(
        content: new[] {
            new KnowledgeBaseMessageTextContent("contoso product planning")
        }
    ) { Role = "user" }
);
retrievalRequest.KnowledgeSourceParams.Add(
    new RemoteSharePointKnowledgeSourceParams("my-remote-sharepoint-ks")
    {
        FilterExpressionAddOn = "filetype:docx"
    }
);

var result = await kbClient.RetrieveAsync(
    retrievalRequest, xMsQuerySourceAuthorization: token
);

Вы можете передать filter_expression_add_on в knowledge_source_params при запросе на получение, чтобы применить фильтр KQL во время выполнения запроса. Если вы указываете filter_expression_add_on на запрос на получение, а filter_expression на определение источника знаний, фильтры объединяются с помощью оператора И.

from azure.search.documents.knowledgebases.models import (
    KnowledgeBaseMessage,
    KnowledgeBaseMessageTextContent,
    KnowledgeBaseRetrievalRequest,
    RemoteSharePointKnowledgeSourceParams,
)

request = KnowledgeBaseRetrievalRequest(
    messages=[
        KnowledgeBaseMessage(
            role="user",
            content=[
                KnowledgeBaseMessageTextContent(
                    text="contoso product planning"
                )
            ],
        )
    ],
    knowledge_source_params=[
        RemoteSharePointKnowledgeSourceParams(
            knowledge_source_name="my-remote-sharepoint-ks",
            filter_expression_add_on="filetype:docx",
        )
    ],
)

result = kb_client.retrieve(
    retrieval_request=request,
    x_ms_query_source_authorization=token,
)

Вы можете передать filterExpressionAddOn в knowledgeSourceParams при запросе на получение, чтобы применить фильтр KQL во время выполнения запроса. Если вы указываете filterExpressionAddOn на запрос на получение, а filterExpression на определение источника знаний, фильтры объединяются с помощью оператора И.

POST {{search-url}}/knowledgebases/{{knowledge-base-name}}/retrieve?api-version=2025-11-01-preview
Authorization: Bearer {{accessToken}}
Content-Type: application/json
x-ms-query-source-authorization: {{user-access-token}}

{
    "messages": [
        {
            "role": "user",
            "content": [
                { "type": "text", "text": "contoso product planning" }
            ]
        }
    ],
    "knowledgeSourceParams": [
        {
            "knowledgeSourceName": "my-remote-sharepoint-ks",
            "kind": "remoteSharePoint",
            "filterExpressionAddOn": "filetype:docx"
        }
    ]
}

Написание эффективных запросов

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

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

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

Более эффективный вопрос: "Что такое ключевой документ для Ignite 2024". Ответ включает синтезированный ответ, активность запросов и количество маркеров, а также URL-адрес и другие метаданные.

специфические для SharePoint поля ответа

Результаты удаленного SharePoint включают поля, которые не отображаются для других типов источников знаний, например resourceMetadata, webUrl и searchSensitivityLabelInfo.

{
    "resourceMetadata": {
        "Author": "Nuwan Amarathunga;Nurul Izzati",
        "Title": "Ignite 2024 Keynote Address"
    },
    "rerankerScore": 2.489522,
    "webUrl": "https://contoso-my.sharepoint.com/keynotes/Documents/Keynote-Ignite-2024.docx",
    "searchSensitivityLabelInfo": {
        "displayName": "Confidential\\Contoso Extended",
        "sensitivityLabelId": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
        "tooltip": "Data is classified and protected.",
        "priority": 5,
        "color": "#FF8C00",
        "isEncrypted": true
    }
}

Принудительное применение разрешений во время запроса

Удаленные источники знаний SharePoint могут применять разрешения SharePoint во время запроса. Чтобы включить эту фильтрацию, добавьте маркер доступа конечного пользователя в запрос на получение. Поисковый движок передает токен в API Copilot для извлечения, который делает запрос к SharePoint и возвращает только контент, к которому у пользователя есть доступ. Разрешения SharePoint и этикетки конфиденциальности Microsoft Purview соблюдаются.

Так как удаленный SharePoint не использует индекс поиска, настройка разрешений на этапе приема данных не требуется. Маркер доступа является единственным требованием.

Инструкции по передаче маркера см. в разделе "Принудительное применение разрешений во время запроса".

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

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

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

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

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