Skapa en fjärransluten SharePoint kunskapskälla

Anmärkning

Den här funktionen är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Supplemental Terms of Use for Microsoft Azure Previews.

En remote SharePoint-kunskapskälla använder Copilot Retrieval API för att hämta textinnehåll direkt från SharePoint i Microsoft 365. Inget sökindex eller reťazec pripojenia krävs. Endast textinnehåll efterfrågas och användningen debiteras via Microsoft 365 och en Copilot licens.

Om du vill begränsa webbplatser eller begränsa sökningen anger du ett filteruttryck till omfång efter URL:er, datumintervall, filtyper och andra metadata. Uppringarens identitet måste identifieras av både Azure-klientorganisationen och Microsoft 365-klientorganisationen eftersom hämtningsmotorn frågar SharePoint på användarens vägnar.

Precis som andra kunskapskällor anger du en fjärransluten SharePoint kunskapskälla i en knowledge base och använder resultatet som grunddata när en agent eller chattrobot anropar en retrieve-åtgärd vid frågetillfället.

Användningsstöd

Azure Portal Microsoft Foundry-portalen .NET SDK Python SDK Java SDK JavaScript SDK REST-API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Förutsättningar

Begränsningar

Följande begränsningar i Copilot Retrieval API gäller för fjärranslutna SharePoint kunskapskällor.

  • Det finns inget stöd för Copilot anslutningsappar eller OneDrive innehåll. Innehållet hämtas endast från SharePoint webbplatser.

  • Gräns på 200 begäranden per användare och timme.

  • Frågeteckengräns på 1 500 tecken.

  • Hybridfrågor stöds endast för följande filnamnstillägg: .doc, .docx, .pptx, .pdf, .aspx och .one.

  • Multimodal hämtning (icke-textinnehåll, inklusive tabeller, bilder och diagram) stöds inte.

  • Maximalt 25 resultat från en fråga.

  • Resultaten returneras av Copilot-hämtnings-API:et i osorterad ordning.

  • Ogiltiga KQL-filteruttryck (Keyword Query Language) ignoreras och frågan fortsätter att köras utan filtret.

Sök efter befintliga kunskapskällor

En kunskapskälla är ett återanvändbart objekt på toppnivå. Att känna till befintliga kunskapskällor är användbart för återanvändning eller namngivning av nya objekt.

Kör följande kod för att lista kunskapskällor efter namn och typ.

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

Du kan också returnera en enda kunskapskälla efter namn för att granska dess JSON-definition.

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

En kunskapskälla är ett återanvändbart objekt på toppnivå. Att känna till befintliga kunskapskällor är användbart för återanvändning eller namngivning av nya objekt.

Kör följande kod för att lista kunskapskällor efter namn och typ.

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

Du kan också returnera en enda kunskapskälla efter namn för att granska dess JSON-definition.

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

En kunskapskälla är ett återanvändbart objekt på toppnivå. Att känna till befintliga kunskapskällor är användbart för återanvändning eller namngivning av nya objekt.

Använd Kunskapskällor – Hämta (REST API) för att lista kunskapskällor efter namn och typ.

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

Du kan också returnera en enda kunskapskälla efter namn för att granska dess JSON-definition.

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

Följande JSON är ett exempelsvar för en fjärransluten SharePoint kunskapskälla.

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

Skapa en kunskapskälla

Kör följande kod för att skapa en fjärransluten SharePoint kunskapskälla.

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

Kör följande kod för att skapa en fjärransluten SharePoint kunskapskälla.

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

Använd Knowledge Sources – Skapa eller uppdatera (REST API) för att skapa en fjärransluten SharePoint kunskapskälla.

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

Källspecifika egenskaper

Du kan skicka följande egenskaper för att skapa en fjärransluten SharePoint kunskapskälla.

Namn Description Typ Redigerbart Krävs
Name Namnet på kunskapskällan, som måste vara unikt i kunskapskällornas samling och följa naming guidelines för objekt i Azure AI-sökning. String Nej Yes
Description En beskrivning av kunskapskällan. String Yes Nej
EncryptionKey En kundhanterad nyckel för att kryptera känslig information i kunskapskällan. Object Yes Nej
RemoteSharePointParameters Parametrar som är specifika för fjärranslutna SharePoint kunskapskällor: FilterExpression, ResourceMetadata och ContainerTypeId. Object Nej Nej
FilterExpression Ett uttryck skrivet i SharePoint KQL, som används för att ange webbplatser och sökvägar till innehåll. String Yes Nej
ResourceMetadata En matris med standardmetadatafält: författare, filnamn, skapandedatum, innehållstyp och filtyp. Array Yes Nej
ContainerTypeId Container-ID för SharePoint Embedded-anslutningen. När det är ospecificerat används SharePoint Online. String Yes Nej
Namn Description Typ Redigerbart Krävs
name Namnet på kunskapskällan, som måste vara unikt i kunskapskällornas samling och följa naming guidelines för objekt i Azure AI-sökning. String Nej Yes
description En beskrivning av kunskapskällan. String Yes Nej
encryption_key En kundhanterad nyckel för att kryptera känslig information i kunskapskällan. Object Yes Nej
remote_share_point_parameters Parametrar som är specifika för fjärranslutna SharePoint kunskapskällor: filter_expression, resource_metadata och container_type_id. Object Nej Nej
filter_expression Ett uttryck skrivet i SharePoint KQL, som används för att ange webbplatser och sökvägar till innehåll. String Yes Nej
resource_metadata En matris med standardmetadatafält: författare, filnamn, skapandedatum, innehållstyp och filtyp. Array Yes Nej
container_type_id Container-ID för SharePoint Embedded-anslutningen. När det är ospecificerat används SharePoint Online. String Yes Nej
Namn Description Typ Redigerbart Krävs
name Namnet på kunskapskällan, som måste vara unikt i kunskapskällornas samling och följa naming guidelines för objekt i Azure AI-sökning. String Nej Yes
kind Den typ av kunskapskälla, vilket är remoteSharePoint i det här fallet. String Nej Yes
description En beskrivning av kunskapskällan. String Yes Nej
encryptionKey En kundhanterad nyckel för att kryptera känslig information i kunskapskällan. Object Yes Nej
remoteSharePointParameters Parametrar som är specifika för fjärranslutna SharePoint kunskapskällor: filterExpression, resourceMetadata och containerTypeId. Object Nej Nej
filterExpression Ett uttryck skrivet i SharePoint KQL, som används för att ange webbplatser och sökvägar till innehåll. String Yes Nej
resourceMetadata En matris med standardmetadatafält: författare, filnamn, skapandedatum, innehållstyp och filtyp. Array Yes Nej
containerTypeId Container-ID för SharePoint Embedded-anslutningen. När det är ospecificerat används SharePoint Online. String Yes Nej

Filteruttrycksexempel

Alla SharePoint egenskaper stöds inte i filterExpression. En lista över egenskaper som stöds finns i API-referensen. Frågebara egenskaper finns i Frågebara.

Läs mer om KQL-filter i syntaxreferensen.

Example Filteruttryck
Filtrera till en enskild plats efter ID "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\""
Filtrera till flera platser efter ID "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\" OR SiteID:\"11bb11bb-cc22-dd33-ee44-55ff55ff55ff\""
Filtrera efter filer under en specifik sökväg "filterExpression": "Path:\"https://my-demo.sharepoint.com/sites/mysite/Shared Documents/en/mydocs\""
Filtrera efter ett visst datumintervall "filterExpression": "LastModifiedTime >= 2024-07-22 AND LastModifiedTime <= 2025-01-08"
Filtrera efter filer av en viss filtyp "filterExpression": "FileExtension:\"docx\" OR FileExtension:\"pdf\" OR FileExtension:\"pptx\""
Filtrera efter filer med en specifik informationsskyddsetikett "filterExpression": "InformationProtectionLabelId:\"f0ddcc93-d3c0-4993-b5cc-76b0a283e252\""

Tilldelas till en kunskapsbas

Om du är nöjd med kunskapskällan fortsätter du till nästa steg: ange kunskapskällan i en kunskapsbas.

Fråga en kunskapsbas

När kunskapsbasen har konfigurerats använder du åtgärden retrieve för att fråga SharePoint innehåll. Fjärr-SharePoint har källspecifika beteenden för fråge-tidsfiltrering, frågeformulering, svarsfält och behörigheter.

Tillämpa ett KQL-filter vid frågetillfället

Du kan skicka en FilterExpressionAddOn i KnowledgeSourceParams i hämtningsbegäran för att tillämpa ett KQL-filter vid frågetillfället. Om du anger FilterExpressionAddOn i hämtningsbegäran och en FilterExpression i kunskapskällans definition kombineras filtren med ett OCH.

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

Du kan skicka en filter_expression_add_on i knowledge_source_params i hämtningsbegäran för att tillämpa ett KQL-filter vid frågetillfället. Om du anger filter_expression_add_on i hämtningsbegäran och en filter_expression i kunskapskällans definition kombineras filtren med ett OCH.

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

Du kan skicka en filterExpressionAddOn i knowledgeSourceParams i hämtningsbegäran för att tillämpa ett KQL-filter vid frågetillfället. Om du anger filterExpressionAddOn i hämtningsbegäran och en filterExpression i kunskapskällans definition kombineras filtren med ett OCH.

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

Skriva effektiva frågor

Frågor som frågar om själva innehållet är effektivare än frågor om var en fil finns eller när den senast uppdaterades. Till exempel kanske "Where is the keynote doc for Ignite 2024" inte returnerar några resultat eftersom själva innehållet inte avslöjar dess plats. En FilterExpression på metadata är en bättre metod för filplats eller datumspecifika frågor.

Frågor som frågar om själva innehållet är effektivare än frågor om var en fil finns eller när den senast uppdaterades. Till exempel kanske "Where is the keynote doc for Ignite 2024" inte returnerar några resultat eftersom själva innehållet inte avslöjar dess plats. En filter_expression på metadata är en bättre metod för filplats eller datumspecifika frågor.

Frågor som frågar om själva innehållet är effektivare än frågor om var en fil finns eller när den senast uppdaterades. Till exempel kanske "Where is the keynote doc for Ignite 2024" inte returnerar några resultat eftersom själva innehållet inte avslöjar dess plats. En filterExpression på metadata är en bättre metod för filplats eller datumspecifika frågor.

En mer effektiv fråga är "Vad är det huvudsakliga dokumentet för Ignite 2024". Svaret innehåller det syntetiserade svaret, frågeaktiviteten och antalet token, plus URL:en och andra metadata.

SharePoint-specifika svarsfält

Fjärrresultat för SharePoint innehåller fält som inte visas för andra typer av kunskapskällor, till exempel resourceMetadata, webUrl och 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
    }
}

Framtvinga behörigheter vid frågetillfället

Fjärranslutna SharePoint kunskapskällor kan framtvinga SharePoint behörigheter vid frågetillfället. Om du vill aktivera den här filtreringen tar du med slutanvändarens åtkomsttoken i hämtningsbegäran. Hämtningsmotorn skickar token till API:et Copilot Retrieval, som frågar SharePoint och returnerar endast innehåll som användaren har åtkomst till. SharePoint behörigheter och Microsoft Purview känslighetsetiketter respekteras.

Eftersom fjärr-SharePoint inte använder ett sökindex krävs ingen konfiguration av inmatningstidsbehörigheter. Åtkomsttoken är det enda kravet.

Anvisningar om hur du skickar token finns i Framtvinga behörigheter vid frågetillfället.

Ta bort en kunskapskälla

Innan du kan ta bort en kunskapskälla måste du ta bort alla kunskapsbaser som refererar till den eller uppdatera kunskapsbasdefinitionen för att ta bort referensen. För kunskapskällor som genererar en index- och indexeringspipeline tas även alla genererade objekt bort. Men om du använde ett befintligt index för att skapa en kunskapskälla tas inte ditt index bort.

Om du försöker ta bort en kunskapskälla som används misslyckas åtgärden och returnerar en lista över berörda kunskapsbaser.

Så här tar du bort en kunskapskälla:

  1. Hämta en lista över alla kunskapsbaser i söktjänsten.

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

    Ett exempelsvar kan se ut så här:

     Knowledge Bases:
       - earth-knowledge-base
       - hotels-sample-knowledge-base
       - my-demo-knowledge-base
    
  2. Hämta en individuell kunskapsbasdefinition för att söka efter referenser till kunskapskällor.

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

    Ett exempelsvar kan se ut så här:

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. Ta antingen bort kunskapsbasen eller uppdatera kunskapsbasen för att ta bort kunskapskällan om du har flera källor. Det här exemplet visar borttagning.

    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. Ta bort kunskapskällan.

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

Innan du kan ta bort en kunskapskälla måste du ta bort alla kunskapsbaser som refererar till den eller uppdatera kunskapsbasdefinitionen för att ta bort referensen. För kunskapskällor som genererar en index- och indexeringspipeline tas även alla genererade objekt bort. Men om du använde ett befintligt index för att skapa en kunskapskälla tas inte ditt index bort.

Om du försöker ta bort en kunskapskälla som används misslyckas åtgärden och returnerar en lista över berörda kunskapsbaser.

Så här tar du bort en kunskapskälla:

  1. Hämta en lista över alla kunskapsbaser i söktjänsten.

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

    Ett exempelsvar kan se ut så här:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Hämta en individuell kunskapsbasdefinition för att söka efter referenser till kunskapskällor.

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

    Ett exempelsvar kan se ut så här:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Ta antingen bort kunskapsbasen eller uppdatera kunskapsbasen för att ta bort kunskapskällan om du har flera källor. Det här exemplet visar borttagning.

    # 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. Ta bort kunskapskällan.

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

Innan du kan ta bort en kunskapskälla måste du ta bort alla kunskapsbaser som refererar till den eller uppdatera kunskapsbasdefinitionen för att ta bort referensen. För kunskapskällor som genererar en index- och indexeringspipeline tas även alla genererade objekt bort. Men om du använde ett befintligt index för att skapa en kunskapskälla tas inte ditt index bort.

Om du försöker ta bort en kunskapskälla som används misslyckas åtgärden och returnerar en lista över berörda kunskapsbaser.

Så här tar du bort en kunskapskälla:

  1. Hämta en lista över alla kunskapsbaser i söktjänsten.

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

    Ett exempelsvar kan se ut så här:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Hämta en individuell kunskapsbasdefinition för att söka efter referenser till kunskapskällor.

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

    Ett exempelsvar kan se ut så här:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Ta antingen bort kunskapsbasen eller uppdatera kunskapsbasen genom att ta bort kunskapskällan om du har flera källor. Det här exemplet visar borttagning.

    ### Delete a knowledge base
    DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
    api-key: {{api-key}}
    
  4. Ta bort kunskapskällan.

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