Créer une source de connaissances SharePoint distante

Note

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions Supplémentaires d’utilisation pour les Préversions Microsoft Azure.

Une source de connaissances SharePoint à distance utilise l’API Copilot de récupération pour interroger du contenu textuel directement à partir de SharePoint dans Microsoft 365. Aucun index de recherche ou chaîne de connexion n’est nécessaire. Seul le contenu textuel est interrogé et l’utilisation est facturée via Microsoft 365 et une licence Copilot.

Pour limiter les sites ou limiter la recherche, définissez une expression de filtre sur l’étendue par URL, plages de dates, types de fichiers et autres métadonnées. L'identité de l'appelant doit être reconnue par le locataire Azure et le locataire Microsoft 365, car le moteur de récupération interroge SharePoint pour le compte de l'utilisateur.

Comme n’importe quelle autre source de connaissances, vous spécifiez une source de connaissances SharePoint distante dans une base de connaissances knowledge et utilisez les résultats comme des données de base lorsqu’un agent ou un chatbot appelle une action retrieve action au moment de la requête.

Assistance à l'utilisation

portail Azure Portail Foundry de Microsoft Kit de développement logiciel (SDK) .NET sdk Python SDK Java SDK JavaScript REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Prerequisites

  • Le dernier package de prévisualisation Azure.Search.Documents : dotnet add package Azure.Search.Documents --prerelease

Limites

Les limitations suivantes de l’API de récupération Copilot s’appliquent aux sources de connaissances à distance SharePoint.

  • Il n'existe aucune prise en charge des connecteurs Copilot ou du contenu OneDrive. Le contenu est récupéré à partir de sites SharePoint uniquement.

  • Limite de 200 requêtes par utilisateur par heure.

  • Limite des caractères de requête de 1 500 caractères.

  • Les requêtes hybrides sont uniquement prises en charge pour les extensions de fichier suivantes : .doc, .docx, .pptx, .pdf, .aspx et .one.

  • La récupération modale (contenu nontextuel, y compris les tables, les images et les graphiques) n’est pas prise en charge.

  • Maximum de 25 résultats d’une requête.

  • Les résultats sont retournés par l'API de récupération Copilot sans ordre particulier.

  • Les expressions de filtre KQL (Keyword Query Language) non valides sont ignorées et la requête continue à s’exécuter sans le filtre.

Rechercher des sources de connaissances existantes

Une source de connaissances constitue un objet réutilisable de niveau supérieur. Connaître les sources de connaissances existantes est utile pour réutiliser ou nommer de nouveaux objets.

Exécutez le code suivant pour répertorier les sources de connaissances par nom et par type.

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

Vous pouvez également renvoyer une seule source de connaissances par nom pour passer en revue sa définition 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));

Une source de connaissances constitue un objet réutilisable de niveau supérieur. Connaître les sources de connaissances existantes est utile pour réutiliser ou nommer de nouveaux objets.

Exécutez le code suivant pour répertorier les sources de connaissances par nom et par type.

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

Vous pouvez également renvoyer une seule source de connaissances par nom pour passer en revue sa définition 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))

Une source de connaissances constitue un objet réutilisable de niveau supérieur. Connaître les sources de connaissances existantes est utile pour réutiliser ou nommer de nouveaux objets.

Utilisez les sources de connaissances - Obtenir (API REST) pour répertorier les sources de connaissances par nom et par type.

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

Vous pouvez également renvoyer une seule source de connaissances par nom pour passer en revue sa définition JSON.

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

Le code JSON suivant est un exemple de réponse pour une source de connaissances SharePoint distante.

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

Créer une source de connaissances

Exécutez le code suivant pour créer une source de connaissances SharePoint distante.

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

Exécutez le code suivant pour créer une source de connaissances SharePoint distante.

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

Utilisez Sourcesknowledge - Créer ou mettre à jour (API REST) pour créer une source de connaissances SharePoint distante.

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

Propriétés spécifiques à la source

Vous pouvez transmettre les propriétés suivantes pour créer une source de connaissances SharePoint distante.

Nom Descriptif Type Modifiable Obligatoire
Name Nom de la source de connaissances, qui doit être unique dans la collection de sources de connaissances et suivre les instructions de nommage pour les objets dans Recherche Azure AI. Chaîne Non Oui
Description Description de la source de connaissances. Chaîne Oui Non
EncryptionKey Clé gérée par le client pour chiffrer les informations sensibles dans la source de connaissances. Objet Oui Non
RemoteSharePointParameters Paramètres spécifiques aux sources de connaissances SharePoint distantes : FilterExpression, ResourceMetadata et ContainerTypeId. Objet Non Non
FilterExpression Expression écrite dans la SharePoint KQL, utilisée pour spécifier des sites et des chemins d’accès au contenu. Chaîne Oui Non
ResourceMetadata Tableau de champs de métadonnées standard : auteur, nom de fichier, date de création, type de contenu et type de fichier. Array Oui Non
ContainerTypeId ID de conteneur pour la connexion incorporée SharePoint. Lorsqu’il n’est pas spécifié, SharePoint Online est utilisé. Chaîne Oui Non
Nom Descriptif Type Modifiable Obligatoire
name Nom de la source de connaissances, qui doit être unique dans la collection de sources de connaissances et suivre les instructions de nommage pour les objets dans Recherche Azure AI. Chaîne Non Oui
description Description de la source de connaissances. Chaîne Oui Non
encryption_key Clé gérée par le client pour chiffrer les informations sensibles dans la source de connaissances. Objet Oui Non
remote_share_point_parameters Paramètres spécifiques aux sources de connaissances SharePoint distantes : filter_expression, resource_metadata et container_type_id. Objet Non Non
filter_expression Expression écrite dans la SharePoint KQL, utilisée pour spécifier des sites et des chemins d’accès au contenu. Chaîne Oui Non
resource_metadata Tableau de champs de métadonnées standard : auteur, nom de fichier, date de création, type de contenu et type de fichier. Array Oui Non
container_type_id ID de conteneur pour la connexion incorporée SharePoint. Lorsqu’il n’est pas spécifié, SharePoint Online est utilisé. Chaîne Oui Non
Nom Descriptif Type Modifiable Obligatoire
name Nom de la source de connaissances, qui doit être unique dans la collection de sources de connaissances et suivre les instructions de nommage pour les objets dans Recherche Azure AI. Chaîne Non Oui
kind Type de source de connaissances, qui est remoteSharePoint dans ce cas. Chaîne Non Oui
description Description de la source de connaissances. Chaîne Oui Non
encryptionKey Clé gérée par le client pour chiffrer les informations sensibles dans la source de connaissances. Objet Oui Non
remoteSharePointParameters Paramètres spécifiques aux sources de connaissances SharePoint distantes : filterExpression, resourceMetadata et containerTypeId. Objet Non Non
filterExpression Expression écrite dans la SharePoint KQL, utilisée pour spécifier des sites et des chemins d’accès au contenu. Chaîne Oui Non
resourceMetadata Tableau de champs de métadonnées standard : auteur, nom de fichier, date de création, type de contenu et type de fichier. Array Oui Non
containerTypeId ID de conteneur pour la connexion incorporée SharePoint. Lorsqu’il n’est pas spécifié, SharePoint Online est utilisé. Chaîne Oui Non

Exemples d’expressions de filtre

Toutes les propriétés SharePoint ne sont pas prises en charge dans la filterExpression. Pour obtenir la liste des propriétés prises en charge, consultez les informations de référence sur l’API. Pour les propriétés interrogeables, consultez Queryable.

En savoir plus sur les filtres KQL dans la référence de syntaxe.

Example Expression de filtre
Filtrer sur un site unique par ID "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\""
Filtrer sur plusieurs sites par ID "filterExpression": "SiteID:\"00aa00aa-bb11-cc22-dd33-44ee44ee44ee\" OR SiteID:\"11bb11bb-cc22-dd33-ee44-55ff55ff55ff\""
Filtrer les fichiers selon un chemin d'accès spécifique "filterExpression": "Path:\"https://my-demo.sharepoint.com/sites/mysite/Shared Documents/en/mydocs\""
Filtrer sur une plage de dates spécifique "filterExpression": "LastModifiedTime >= 2024-07-22 AND LastModifiedTime <= 2025-01-08"
Filtrer sur des fichiers d’un type de fichier spécifique "filterExpression": "FileExtension:\"docx\" OR FileExtension:\"pdf\" OR FileExtension:\"pptx\""
Filtrer les fichiers portant une étiquette de protection des informations spécifique "filterExpression": "InformationProtectionLabelId:\"f0ddcc93-d3c0-4993-b5cc-76b0a283e252\""

Attribuer à une base de connaissances

Si vous êtes satisfait de la source de connaissances, passez à l’étape suivante : spécifiez la source de connaissances dans une base de connaissances.

Interroger une base de connaissances

Une fois la base de connaissances configurée, utilisez l’action retrieve pour interroger le contenu SharePoint. Les SharePoint distants ont des comportements spécifiques à la source pour le filtrage au moment de la requête, la formulation de requête, les champs de réponse et l’application des autorisations.

Appliquer un filtre KQL au moment de la requête

Vous pouvez passer FilterExpressionAddOn dans KnowledgeSourceParams lors de la requête de récupération afin d’appliquer un filtre KQL au moment de l’exécution de la requête. Si vous spécifiez FilterExpressionAddOn sur la demande de récupération et une FilterExpression sur la définition de la source de connaissances, les filtres sont ensemble.

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

Vous pouvez passer filter_expression_add_on dans knowledge_source_params lors de la requête de récupération afin d’appliquer un filtre KQL au moment de l’exécution de la requête. Si vous spécifiez filter_expression_add_on sur la demande de récupération et une filter_expression sur la définition de la source de connaissances, les filtres sont ensemble.

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

Vous pouvez passer filterExpressionAddOn dans knowledgeSourceParams lors de la requête de récupération afin d’appliquer un filtre KQL au moment de l’exécution de la requête. Si vous spécifiez filterExpressionAddOn sur la demande de récupération et une filterExpression sur la définition de la source de connaissances, les filtres sont ensemble.

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

Écrire des requêtes effectives

Les requêtes qui posent des questions sur le contenu lui-même sont plus efficaces que les questions sur l’emplacement d’un fichier ou lors de la dernière mise à jour. Par exemple, « Où se trouve le document de la conférence principale pour Ignite 2024 » peut ne retourner aucun résultat, car le contenu ne précise pas lui-même son emplacement. Une FilterExpression sur les métadonnées est une meilleure approche pour l’emplacement du fichier ou les requêtes spécifiques à la date.

Les requêtes qui posent des questions sur le contenu lui-même sont plus efficaces que les questions sur l’emplacement d’un fichier ou lors de la dernière mise à jour. Par exemple, « Où se trouve le document de la conférence principale pour Ignite 2024 » peut ne retourner aucun résultat, car le contenu ne précise pas lui-même son emplacement. Une filter_expression sur les métadonnées est une meilleure approche pour l’emplacement du fichier ou les requêtes spécifiques à la date.

Les requêtes qui posent des questions sur le contenu lui-même sont plus efficaces que les questions sur l’emplacement d’un fichier ou lors de la dernière mise à jour. Par exemple, « Où se trouve le document de la conférence principale pour Ignite 2024 » peut ne retourner aucun résultat, car le contenu ne précise pas lui-même son emplacement. Une filterExpression sur les métadonnées est une meilleure approche pour l’emplacement du fichier ou les requêtes spécifiques à la date.

Une question plus efficace est « Quel est le document clé pour Ignite 2024 ? ». La réponse inclut la réponse synthétisée, l’activité de requête et le nombre de jetons, ainsi que l’URL et d’autres métadonnées.

champs de réponse spécifiques à SharePoint

Les résultats SharePoint distants incluent des champs qui n'apparaissent pas pour d'autres types de sources de connaissances, tels que resourceMetadata, webUrl et 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
    }
}

Appliquer des autorisations au moment de la requête

Les sources de connaissances SharePoint distantes peuvent appliquer des autorisations SharePoint au moment de la requête. Pour activer ce filtrage, incluez le jeton d’accès de l’utilisateur final dans la demande de récupération. Le moteur de récupération transmet le jeton à l’API Copilot Récupération, qui interroge SharePoint et retourne uniquement le contenu auquel l’utilisateur a accès. Les autorisations SharePoint et les libellés de sensibilité Microsoft Purview sont respectés.

Étant donné que les SharePoint distantes n'utilisent pas d'index de recherche, aucune configuration des autorisations d'ingestion n'est nécessaire. Le jeton d’accès est la seule exigence.

Pour obtenir des instructions sur le passage du jeton, consultez Appliquer les autorisations au moment de la requête.

Supprimer une source de connaissances

Avant de pouvoir supprimer une source de connaissances, vous devez supprimer toute base de connaissances qui la référence ou mettre à jour la définition de la base de connaissances pour supprimer la référence. Pour les sources de connaissances qui génèrent un pipeline d’index et d’indexeur, tous les objets générés sont également supprimés . Toutefois, si vous avez utilisé un index existant pour créer une source de connaissances, votre index n’est pas supprimé.

Si vous essayez de supprimer une source de connaissances en cours d’utilisation, l’action échoue et retourne une liste de bases de connaissances affectées.

Pour supprimer une source de connaissances :

  1. Obtenez la liste de toutes les bases de connaissances sur votre service de recherche.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     Knowledge Bases:
       - earth-knowledge-base
       - hotels-sample-knowledge-base
       - my-demo-knowledge-base
    
  2. Obtenez une définition de base de connaissances individuelle pour rechercher des références à la source de connaissances.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. Supprimez la base de connaissances ou mettez à jour la base de connaissances pour supprimer la source de connaissances si vous avez plusieurs sources. Cet exemple montre la suppression.

    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. Supprimer la source de connaissances.

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

Avant de pouvoir supprimer une source de connaissances, vous devez supprimer toute base de connaissances qui la référence ou mettre à jour la définition de la base de connaissances pour supprimer la référence. Pour les sources de connaissances qui génèrent un pipeline d’index et d’indexeur, tous les objets générés sont également supprimés . Toutefois, si vous avez utilisé un index existant pour créer une source de connaissances, votre index n’est pas supprimé.

Si vous essayez de supprimer une source de connaissances en cours d’utilisation, l’action échoue et retourne une liste de bases de connaissances affectées.

Pour supprimer une source de connaissances :

  1. Obtenez la liste de toutes les bases de connaissances sur votre service de recherche.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Obtenez une définition de base de connaissances individuelle pour rechercher des références à la source de connaissances.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Supprimez la base de connaissances ou mettez à jour la base de connaissances pour supprimer la source de connaissances si vous avez plusieurs sources. Cet exemple montre la suppression.

    # 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. Supprimer la source de connaissances.

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

Avant de pouvoir supprimer une source de connaissances, vous devez supprimer toute base de connaissances qui la référence ou mettre à jour la définition de la base de connaissances pour supprimer la référence. Pour les sources de connaissances qui génèrent un pipeline d’index et d’indexeur, tous les objets générés sont également supprimés . Toutefois, si vous avez utilisé un index existant pour créer une source de connaissances, votre index n’est pas supprimé.

Si vous essayez de supprimer une source de connaissances en cours d’utilisation, l’action échoue et retourne une liste de bases de connaissances affectées.

Pour supprimer une source de connaissances :

  1. Obtenez la liste de toutes les bases de connaissances sur votre service de recherche.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Obtenez une définition de base de connaissances individuelle pour rechercher des références à la source de connaissances.

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

    Un exemple de réponse peut ressembler à ce qui suit :

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Supprimez la base de connaissances ou mettez à jour la base de connaissances en supprimant la source de connaissances si vous avez plusieurs sources. Cet exemple montre la suppression.

    ### Delete a knowledge base
    DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
    api-key: {{api-key}}
    
  4. Supprimer la source de connaissances.

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