次の方法で共有


リモート SharePoint ナレッジ ソースを作成する

現在、この機能はパブリック プレビュー段階にあります。 このプレビュー版はサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳細については、「Microsoft Azure プレビューの使用条件を参照してください。

リモート SharePoint ナレッジ ソースでは、Copilot 取得 API を使用して、Microsoft 365 の SharePoint からテキスト コンテンツに対して直接クエリを送信します。 検索インデックスや接続文字列は必要ありません。 テキスト コンテンツのみがクエリされ、使用量はMicrosoft 365とCopilot ライセンスを通じて課金されます。

サイトを制限したり、検索を制限したりするには、 フィルター式 を URL、日付範囲、ファイルの種類、およびその他のメタデータによってスコープに設定します。 呼び出し元の ID は、Azure テナントと Microsoft 365 テナントの両方で認識される必要があります。これは、取得エンジンがユーザーに代わって SharePoint にクエリを実行するためです。

他のナレッジ ソースと同様に、knowledge ベースでリモートSharePointナレッジ ソースを指定し、エージェントまたはチャットボットがクエリ時に retrieve アクション を呼び出すときに、その結果をグラウンド データとして使用します。

利用サポート

Azure portal Microsoft Foundry ポータル .NET SDK Python SDK Java SDK JavaScript SDK REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

[前提条件]

制限事項

Copilot 取得 API の次の制限は、リモート SharePointナレッジ ソースに適用されます。

  • Copilot コネクタやOneDrive コンテンツはサポートされません。 コンテンツはSharePointサイトからのみ取得されます。

  • 1 時間あたりユーザーあたり 200 要求の制限。

  • クエリ文字の制限は 1,500 文字です。

  • ハイブリッド クエリは、.doc、.docx、.pptx、.pdf、.aspx、.one というファイル拡張子でのみサポートされます。

  • マルチモーダル取得 (表、画像、グラフを含む非テキスト コンテンツ) はサポートされていません。

  • クエリからの結果は最大 25 個です。

  • 結果は、CopilotリトリーバルAPIによって順序がなく返されます。

  • 無効なキーワード クエリ言語 (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}");
}

名前で 1 つのナレッジ ソースを取得し、その 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))

名前で 1 つのナレッジ ソースを取得し、その 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))

ナレッジ ソースは、最上位の再利用可能なオブジェクトです。 既存のナレッジ ソースについて知ることは、新しいオブジェクトを再利用または名前付けする場合に役立ちます。

ナレッジ ソース - 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}}

名前で 1 つのナレッジ ソースを取得し、その 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 Sources - Create or Update (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 AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 いいえ イエス
Description ナレッジ ソースの説明。 イエス いいえ
EncryptionKey ナレッジ ソース内の機密情報を暗号化するための カスタマー マネージド キー Object イエス いいえ
RemoteSharePointParameters リモート SharePoint ナレッジ ソースに固有のパラメーター: FilterExpressionResourceMetadata、および ContainerTypeId Object いいえ いいえ
FilterExpression SharePoint KQL で記述された式。コンテンツへのサイトとパスを指定するために使用されます。 イエス いいえ
ResourceMetadata 標準メタデータ フィールド (作成者、ファイル名、作成日、コンテンツ タイプ、ファイルの種類) の配列。 Array イエス いいえ
ContainerTypeId SharePoint Embedded 接続のコンテナー ID。 指定しない場合は、SharePoint Online が使用されます。 イエス いいえ
名前 Description タイプ 編集可能 必須
name ナレッジ ソースの名前。ナレッジ ソース コレクション内で一意である必要があり、Azure AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 いいえ イエス
description ナレッジ ソースの説明。 イエス いいえ
encryption_key ナレッジ ソース内の機密情報を暗号化するための カスタマー マネージド キー Object イエス いいえ
remote_share_point_parameters リモート SharePoint ナレッジ ソースに固有のパラメーター: filter_expressionresource_metadata、および container_type_id Object いいえ いいえ
filter_expression SharePoint KQL で記述された式。コンテンツへのサイトとパスを指定するために使用されます。 イエス いいえ
resource_metadata 標準メタデータ フィールド (作成者、ファイル名、作成日、コンテンツ タイプ、ファイルの種類) の配列。 Array イエス いいえ
container_type_id SharePoint Embedded 接続のコンテナー ID。 指定しない場合は、SharePoint Online が使用されます。 イエス いいえ
名前 Description タイプ 編集可能 必須
name ナレッジ ソースの名前。ナレッジ ソース コレクション内で一意である必要があり、Azure AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 いいえ イエス
kind ナレッジ ソースの種類 (この場合は remoteSharePoint)。 いいえ イエス
description ナレッジ ソースの説明。 イエス いいえ
encryptionKey ナレッジ ソース内の機密情報を暗号化するための カスタマー マネージド キー Object イエス いいえ
remoteSharePointParameters リモート SharePoint ナレッジ ソースに固有のパラメーター: filterExpressionresourceMetadata、および containerTypeId Object いいえ いいえ
filterExpression SharePoint KQL で記述された式。コンテンツへのサイトとパスを指定するために使用されます。 イエス いいえ
resourceMetadata 標準メタデータ フィールド (作成者、ファイル名、作成日、コンテンツ タイプ、ファイルの種類) の配列。 Array イエス いいえ
containerTypeId SharePoint Embedded 接続のコンテナー ID。 指定しない場合は、SharePoint Online が使用されます。 イエス いいえ

フィルター式の例

filterExpression では、すべてのSharePointプロパティがサポートされているわけではありません。 サポートされているプロパティの一覧については、「API リファレンス」を参照してください。 クエリ可能なプロパティについては、「 クエリ可能」を参照してください。

KQL フィルターの詳細については、構文リファレンスを参照してください。

Example フィルター式
ID で特定のサイトにフィルタリングする "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\""
ID を使って複数のサイトをフィルターする "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 フィルターを適用する

取得要求のFilterExpressionAddOnKnowledgeSourceParamsを渡して、クエリ時に KQL フィルターを適用できます。 取得要求に FilterExpressionAddOn を指定し、ナレッジ ソース定義に FilterExpression を指定すると、フィルターは AND になります。

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_onknowledge_source_paramsを渡して、クエリ時に KQL フィルターを適用できます。 取得要求に filter_expression_add_on を指定し、ナレッジ ソース定義に filter_expression を指定すると、フィルターは AND になります。

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

取得要求のfilterExpressionAddOnknowledgeSourceParamsを渡して、クエリ時に KQL フィルターを適用できます。 取得要求に filterExpressionAddOn を指定し、ナレッジ ソース定義に filterExpression を指定すると、フィルターは AND になります。

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 のキーノートドキュメントはどこにあるか」では、コンテンツ自体がその場所を開示していないため、結果が返されない場合があります。 メタデータの FilterExpression は、ファイルの場所または日付固有のクエリに適したアプローチです。

コンテンツ自体について質問するクエリは、ファイルが配置されている場所や最後に更新された日時に関する質問よりも効果的です。 たとえば、「Ignite 2024 のキーノートドキュメントはどこにあるか」では、コンテンツ自体がその場所を開示していないため、結果が返されない場合があります。 メタデータの filter_expression は、ファイルの場所または日付固有のクエリに適したアプローチです。

コンテンツ自体について質問するクエリは、ファイルが配置されている場所や最後に更新された日時に関する質問よりも効果的です。 たとえば、「Ignite 2024 のキーノートドキュメントはどこにあるか」では、コンテンツ自体がその場所を開示していないため、結果が返されない場合があります。 メタデータの filterExpression は、ファイルの場所または日付固有のクエリに適したアプローチです。

より効果的な質問は、「Ignite 2024のキーノートドキュメントとは」です。 応答には、合成された回答、クエリ アクティビティとトークンの数、および URL とその他のメタデータが含まれます。

SharePoint固有の応答フィールド

リモート SharePointの結果には、resourceMetadatawebUrlsearchSensitivityLabelInfo など、他のナレッジ ソースの種類には表示されないフィールドが含まれます。

{
    "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アクセス許可を適用できます。 このフィルター処理を有効にするには、取得要求にエンド ユーザーのアクセス トークンを含めます。 取得エンジンはトークンを Copilot 取得 API に渡します。この API は、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}}