Créer une source de connaissances indexée SharePoint (préversion)

Note

Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.

Important

Les fonctionnalités, capacités ou propriétés marquées (préversion) ne sont pas couvertes par un accord de niveau de service, ne sont pas recommandées pour les workloads de production et peuvent être modifiées ou faire l’objet de restrictions avant leur mise à disposition générale. Les Recherche Azure AI termes de la préversion s'appliquent à toutes les fonctionnalités d'aperçu, qu'il s'agisse d'une fonctionnalité autonome ou d'une partie d'une fonctionnalité généralement disponible.

Une source de connaissances SharePoint indexée (version préliminaire) ingère le contenu SharePoint dans un pipeline de recherche agentique dans Recherche Azure AI. Les sources de connaissances sont créées indépendamment, référencées dans une base de connaissances et utilisées comme données de base lorsque la base de connaissances est interrogée lors de l’exécution.

Lorsque vous créez une source de connaissances SharePoint indexée, vous spécifiez une SharePoint chaîne de connexion, des modèles et des propriétés pour générer automatiquement les objets Recherche Azure AI suivants :

  • Une source de données qui pointe vers des sites SharePoint et utilise la chaîne de connexion inchangée. La source de données générée suit les règles de l'indexeur SharePointTenantId.
  • Compétences qui segmentent et vectorisent éventuellement le contenu multimodal.
  • Index qui stocke du contenu enrichi et répond aux critères de récupération agentique.
  • Indexeur qui utilise les objets précédents pour piloter l’indexation et le pipeline d’enrichissement.

L’indexeur généré est conforme aux SharePoint dans Microsoft 365 indexeur, dont les prérequis, les formats de documents pris en charge et les limitations s’appliquent également aux sources de connaissances indexées SharePoint. Pour plus d’informations, consultez la documentation de l’indexeur SharePoint et les limites de l’indexeur. Si l’ensemble de compétences généré appelle un service externe, les limites d’entrée et de service de cette compétence s’appliquent également.

Support d'utilisation

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

Conditions préalables

  • Un service Recherche Azure AI dans n’importe quelle région qui fournit une recherche agentique.

  • Achèvement des prérequis de l’indexeur SharePoint.

  • Fin des étapes de configuration de l’indexeur SharePoint suivantes :

  • Si contentExtractionMode est standard, utilisez une ressource Microsoft Foundry dans une région prise en charge par Content Understanding dans les outils Foundry et le point de terminaison https://<resource-name>.services.ai.azure.com. Déployez un modèle d’embedding et déployez un modèle de chat multimodal si vous activez la description d’image.

  • Autorisation de créer des sources de connaissances. Configurez l’authentification sans clé avec les rôles Contributeur du service de recherche et Contributeur de données d’index de recherche affectés à votre compte d’utilisateur (recommandé) ou utilisez une clé API d’administration.

  • Si la source de connaissances spécifie un modèle Azure OpenAI pour les embeddings ou la description d’images, le service de recherche doit disposer d’une identité managée avec les autorisations Cognitive Services User sur la ressource Microsoft Foundry.

  • Si vous définissez networkAccessMode sur private, remplissez les conditions suivantes :

    • Utilisez un service de recherche S2, S3, L1 ou L2.

    • Conservez la chaîne de connexion SharePoint, l’application Microsoft Entra et les autorisations SharePoint décrites dans les prérequis précédents. SharePoint Online n'est pas une cible de liaison privée partagée prise en charge. Par conséquent, le mode privé ne rend pas cette connexion source privée.

    • Pour chaque point de terminaison de modèle protégé, activez une identité managée sur le service de recherche, accordez-lui le rôle d’utilisateur Cognitive Services sur la ressource et créez et approuvez une liaison privée partagée. Utilisez l’ID de groupe openai_account pour les points de terminaison Azure OpenAI et foundry_account pour les points de terminaison de ressource Foundry.

  • Le dernier paquet Azure.Search.Documents (préversion) : dotnet add package Azure.Search.Documents --prerelease

  • Pour l’authentification sans clé, le Azure.Identity package : dotnet add package Azure.Identity

  • Le dernier paquet azure-search-documents (préversion) : pip install --pre azure-search-documents

  • Pour l’authentification sans clé, le azure-identity package : pip install azure-identity

Rechercher les sources de connaissances existantes

Une source de connaissances est 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}");
}

Reference :SearchIndexClient

# List knowledge sources by name and type
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient

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

for ks in index_client.list_knowledge_sources():
    print(f"  - {ks.name} ({ks.kind})")

Reference :SearchIndexClient

### List knowledge sources by name and type
GET {{search-url}}/knowledgesources?api-version={{api-version}}&$select=name,kind
Authorization: Bearer {{token}}

Référence :Sources de connaissances - Liste

Vous pouvez également retourner une source de connaissances unique 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));

Reference :SearchIndexClient

# Get a knowledge source definition
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
import json

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

ks = index_client.get_knowledge_source("knowledge_source_name")
print(json.dumps(ks.as_dict(), indent = 2))

Reference :SearchIndexClient

### Get a knowledge source definition
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
Authorization: Bearer {{token}}

Référence :Sources de connaissances - Obtenir

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

{
  "name": "my-indexed-sharepoint-ks",
  "kind": "indexedSharePoint",
  "description": "A sample indexed SharePoint knowledge source",
  "encryptionKey": null,
  "indexedSharePointParameters": {
    "connectionString": "<redacted>",
    "containerName": "defaultSiteLibrary",
    "query": null,
    "ingestionParameters": {
      "disableImageVerbalization": false,
      "ingestionPermissionOptions": [],
      "contentExtractionMode": "minimal",
      "identity": null,
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<redacted>",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large",
          "authIdentity": null
        }
      },
      "chatCompletionModel": null,
      "ingestionSchedule": null,
      "assetStore": null,
      "aiServices": null
    },
    "createdResources": {
      "datasource": "my-indexed-sharepoint-ks-datasource",
      "indexer": "my-indexed-sharepoint-ks-indexer",
      "skillset": "my-indexed-sharepoint-ks-skillset",
      "index": "my-indexed-sharepoint-ks-index"
    }
  },
  "indexedOneLakeParameters": null
}

Créer une source de connaissances

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

// Create an IndexedSharePoint knowledge source
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure.Identity;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

var chatCompletionParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiGptDeployment,
    ModelName = aoaiGptModel
};

var embeddingParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiEmbeddingDeployment,
    ModelName = aoaiEmbeddingModel
};

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    NetworkAccessMode = KnowledgeSourceNetworkAccessMode.Public,
    DisableImageVerbalization = false,
    ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: chatCompletionParams),
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    }
};

var sharePointParams = new IndexedSharePointKnowledgeSourceParameters(
    connectionString: sharePointConnectionString,
    containerName: "defaultSiteLibrary")
{
    IngestionParameters = ingestionParams
};

var knowledgeSource = new IndexedSharePointKnowledgeSource(
    name: "my-indexed-sharepoint-ks",
    indexedSharePointParameters: sharePointParams)
{
    Description = "A sample indexed SharePoint knowledge source."
};

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

Reference :SearchIndexClient, IndexedSharePointKnowledgeSource

# Create an indexed SharePoint knowledge source
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import IndexedSharePointKnowledgeSource, IndexedSharePointKnowledgeSourceParameters, KnowledgeBaseAzureOpenAIModel, AzureOpenAIVectorizerParameters, KnowledgeSourceContentExtractionMode
from azure.search.documents.knowledgebases.models import KnowledgeSourceIngestionParameters, KnowledgeSourceNetworkAccessMode, KnowledgeSourceAzureOpenAIVectorizer

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

knowledge_source = IndexedSharePointKnowledgeSource(
    name = "my-indexed-sharepoint-ks",
    description = "A sample indexed SharePoint knowledge source.",
    encryption_key = None,
    indexed_share_point_parameters = IndexedSharePointKnowledgeSourceParameters(
        connection_string = "connection_string",
        container_name = "defaultSiteLibrary",
        query = None,
        ingestion_parameters = KnowledgeSourceIngestionParameters(
            network_access_mode = KnowledgeSourceNetworkAccessMode.PUBLIC,
            identity = None,
            disable_image_verbalization = False,
            chat_completion_model = KnowledgeBaseAzureOpenAIModel(
                azure_open_ai_parameters = AzureOpenAIVectorizerParameters(
                    resource_url = "<aoai-endpoint>",
                    deployment_name = "<aoai-gpt-deployment>",
                    model_name = "<aoai-gpt-model>",
                )
            ),
            embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
                azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
                    resource_url = "<aoai-endpoint>",
                    deployment_name = "<aoai-embedding-deployment>",
                    model_name = "<aoai-embedding-model>",
                )
            ),
            content_extraction_mode = KnowledgeSourceContentExtractionMode.MINIMAL,
            ingestion_schedule = None,
            ingestion_permission_options = None
        )
    )
)

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

Reference :SearchIndexClient

### Create an indexed SharePoint knowledge source
PUT {{search-endpoint}}/knowledgesources/my-indexed-sharepoint-ks?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: application/json

{
    "name": "my-indexed-sharepoint-ks",
    "kind": "indexedSharePoint",
    "description": "A sample indexed SharePoint knowledge source.",
    "encryptionKey": null,
    "indexedSharePointParameters": {
        "connectionString": "{{sharepoint-federated-connection-string}}",
        "containerName": "defaultSiteLibrary",
        "query": null,
        "ingestionParameters": {
            "networkAccessMode": "public",
            "identity": null,
            "embeddingModel": {
                "kind": "azureOpenAI",
                "azureOpenAIParameters": {
                    "deploymentId": "text-embedding-3-large",
                    "modelName": "text-embedding-3-large",
                    "resourceUri": "{{aoai-endpoint}}"
                }
            },
            "chatCompletionModel": null,
            "disableImageVerbalization": false,
            "ingestionSchedule": null,
            "ingestionPermissionOptions": [],
            "contentExtractionMode": "minimal"
        }
    }
}

Référence :Sources de connaissances - Créer ou mettre à jour

Protéger les dépendances Azure pendant l’ingestion

À compter de la version 2026-08-01-preview de l’API, networkAccessMode contrôle l’environnement réseau dans lequel s’exécute l’indexeur généré pour une source de connaissances SharePoint indexée. Ce paramètre affecte uniquement l’ingestion et ne modifie pas la base de connaissances pour récupérer les demandes ou les réponses.

networkAccessMode est défini par défaut sur public, ce qui préserve le comportement existant du réseau public. Lorsque networkAccessMode est private, l’indexeur généré s’exécute dans l’environnement d’exécution privé. Il utilise des liens privés partagés approuvés pour accéder aux dépendances Azure prises en charge, comme les modèles Azure OpenAI et les ressources Microsoft Foundry.

Important

Pour les sources de connaissances indexées SharePoint, le mode privé s’applique uniquement aux dépendances prises en charge Azure. SharePoint Online n'est pas une cible de liaison privée partagée prise en charge. Par conséquent, la connexion source SharePoint reste publique.

Pour configurer et vérifier l’accès privé aux dépendances de Azure prises en charge :

  1. Remplissez les conditions préalables au réseau privé.

  2. Définissez networkAccessMode sur private dans la demande de création de la source de connaissances. Vous ne pouvez définir cette propriété que lors de la création. Pour la modifier ultérieurement, supprimez et recréez la source de connaissances.

    La création peut échouer si le niveau de service ou le runtime ne prend pas en charge l’exécution privée ou si une liaison privée partagée requise n’existe pas.

  3. Vérifiez que l’indexeur executionEnvironment généré est private.

  4. Vérifiez que chaque liaison privée partagée requise est approuvée et cible la dépendance correcte. La création réussie ne confirme pas l’approbation ou le ciblage du lien.

  5. Interrogez régulièrement l’état de la source de connaissances jusqu’à ce que lastSynchronizationState.endTime ait une valeur. Confirmez que itemsUpdatesFailed est 0, puis vérifiez le contenu source spécifique au connecteur. La synchronisation échoue si une dépendance n’est pas accessible.

Utiliser des analyseurs automatiques par langage

À compter de la version de l’API2026-08-01-preview, les analyseurs automatiques par langage sont disponibles pour les objets blob, OneLake indexés et les sources de connaissances SharePoint indexées. Lorsqu'elle est activée, Recherche Azure AI détecte la langue de chaque document source et applique automatiquement un analyseur de langage Microsoft correspondant. Vous ne spécifiez pas d’analyseur dans la définition de la source de connaissances ou dans une requête.

Pour activer les analyseurs automatiques par langage, définissez et configurez contentExtractionModeminimalingestionParameters.aiServices dans la définition de la source de connaissances.

Pour l’authentification sans clé, omettez aiServices.apiKey et affectez le rôle d’utilisateur Cognitive Services sur votre ressource Microsoft Foundry à l’identité managée de votre service de recherche. Pour l’authentification basée sur des clés, définissez aiServices.apiKey sur une clé valide pour votre ressource Foundry.

Les langues suivantes sont prises en charge :

  • Anglais
  • Japonais
  • Français
  • espagnol
  • Allemand
  • Néerlandais
  • Italian
  • Portugais brésilien
  • Portugais européen
  • Chinois simplifié
  • Chinois traditionnel
  • Coréen

Pour le contenu multilingue, Recherche Azure AI sélectionne un analyseur en fonction de la langue détectée prédominante. Il utilise l’analyseur standard lorsque la langue n’est pas prise en charge ou n’est pas connue avec certitude.

Lorsque vous activez des analyseurs automatiques par langue, Recherche Azure AI ajoute des champs de contenu spécifiques à la langue pour chaque langue prise en charge au schéma d’index généré, que vos données contiennent ou non des documents dans ces langues. Pendant l’ingestion, les documents sont routés vers le champ propre à la langue appropriée en fonction de leur langue détectée.

Les champs de langue inutilisés ne contiennent pas de contenu indexé et ont un impact minimal sur le stockage, mais ils restent dans le schéma d’index et comptent vers la limite de champ d’index. Tenez compte des champs supplémentaires lorsque vous planifiez la conception de votre index, le nombre de champs et les exigences de stockage. Pour plus d’informations, consultez Les limitesd’index et Estimer et gérer la capacité d’un service de recherche.

La détection de langue est facturable après l’allocation gratuite d’enrichissement par IA. Pour plus d’informations, consultez Enrichissements gratuits.

Vérifier l’état d’ingestion

Exécutez le code suivant pour surveiller la progression et l’intégrité de l’ingestion, notamment le type de source de connaissances et les erreurs d’indexation détaillées pour les sources de connaissances qui génèrent un pipeline d’indexeur et remplissent un index de recherche.

using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

// Get knowledge source ingestion status
var statusResponse = await indexClient.GetKnowledgeSourceStatusAsync(knowledgeSourceName);
var status = statusResponse.Value;

// Serialize to JSON for display
var json = JsonSerializer.Serialize(status, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);

Reference :SearchIndexClient

# Check knowledge source ingestion status
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
import json

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

status = index_client.get_knowledge_source_status("knowledge_source_name")
print(json.dumps(status.as_dict(), indent=2))

Reference :SearchIndexClient

### Check knowledge source ingestion status
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}/status?api-version={{api-version}}
Authorization: Bearer {{token}}
Content-Type: application/json 

Référence :Sources de connaissances - Consulter l’état

Une réponse pour une demande qui inclut des paramètres d’ingestion et qui ingère activement du contenu peut ressembler à l’exemple suivant.

{
  "kind": "azureBlob",
  "synchronizationStatus": "active",
  "synchronizationInterval": "1d",
  "currentSynchronizationState": {
    "startTime": "2026-04-10T19:30:00Z",
    "itemUpdatesProcessed": 1100,
    "itemsUpdatesFailed": 100,
    "itemsSkipped": 1100,
    "errors": [
      {
        "key": "Item id 1",
        "docURL": "https://contoso.blob.core.windows.net/contracts/2024/Q4/doc-00023.csv",
        "statusCode": 400,
        "componentName": "DocumentExtraction.AzureBlob.MyDataSource",
        "errorMessage": "Could not read the value of column 'foo' at index '0'.",
        "details": "The file could not be parsed.",
        "documentationLink": "https://go.microsoft.com/fwlink/?linkid=2049388"
      }
    ]
  },
  "lastSynchronizationState": {
    "status": "partialSuccess",
    "startTime": "2026-04-09T19:30:00Z",
    "endTime": "2026-04-09T19:40:01Z",
    "itemUpdatesProcessed": 1100,
    "itemsUpdatesFailed": 100,
    "itemsSkipped": 1100,
    "errors": null
  },
  "statistics": {
    "totalSynchronizations": 25,
    "averageSynchronizationDuration": "00:15:20",
    "averageItemsProcessedPerSynchronization": 500
  }
}

Note

La kind propriété et currentSynchronizationState.errors[] le tableau avec les détails d’erreur au niveau du document sont disponibles à partir de la version de l’API 2026-04-01. Pour les versions antérieures de l’API, ces champs ne sont pas retournés. Le lastSynchronizationState.status champ est également nouveau en 2026-04-01.

Passer en revue les objets générés

Lorsque vous créez cette source de connaissances, Recherche Azure AI génère automatiquement une source de données, un ensemble de compétences, un indexeur et un index. La réponse de création répertorie chaque objet sous createdResources.

Ces objets sont générés en fonction d’un modèle fixe, et leurs noms sont basés sur le nom de la source de connaissances. Vous ne pouvez pas modifier les noms d’objets. Évitez de modifier ces objets directement, car les modifications peuvent introduire des erreurs ou des incompatibilités qui interrompent le pipeline d’indexeur.

Vous pouvez utiliser le portail Azure pour valider la création d’objets. Le flux de travail est le suivant :

  1. Vérifiez les messages de réussite ou d’échec de l'indexeur. Les erreurs de connexion ou de quota s’affichent ici.

  2. Vérifiez la source de données pour vérifier la connexion à votre magasin de données. La connexion utilise une chaîne de connexion ou une identité managée, selon la façon dont vous avez configuré la source de connaissances.

  3. Vérifiez l’ensemble de compétences pour voir comment votre contenu est segmenté et éventuellement vectorisé.

  4. Vérifiez l’index pour voir comment votre contenu est indexé et exposé pour la récupération, y compris les champs pouvant faire l’objet d’une recherche et filtrables et quels champs stockent des vecteurs pour la recherche de similarité. Utilisez l’Explorateur de recherche pour exécuter des requêtes sur l’index généré.

Attribuer à une base de connaissances

Si vous êtes satisfait de la source de connaissances, ajoutez-la à une base de connaissances.

Pour toute base de connaissances qui spécifie une source de connaissances SharePoint indexée, veillez à définir includeReferenceSourceData sur true. Cette étape est nécessaire pour extraire l’URL du document source dans la citation.

Interroger une base de connaissances

Après avoir configuré la base de connaissances, appelez l’action de récupération ou le point de terminaison MCP pour interroger la source de connaissances. Choisissez la configuration qui correspond à votre scénario.

Imposer des permissions au niveau du document

Pour appliquer des autorisations au niveau du document, définissez ingestionPermissionOptions lorsque vous créez cette source de connaissances, puis incluez le jeton d’accès de l’utilisateur dans la demande de récupération. Pour plus d’informations, consultez Appliquer les autorisations au moment de la requête (préversion).

Pour obtenir des résultats manquants, inattendus ou ayant échoué à partir d’une requête d’autorisation SharePoint indexée, consultez Résoudre les problèmes de filtrage des autorisations SharePoint.

Afficher les images intégrées au document

Pour afficher des images intégrées aux documents (telles que des diagrammes ou des documents numérisés) dans les réponses générées par la synthèse de réponses, configurez assetStore sur cette source de connaissances, puis activez la diffusion d’images sur la base de connaissances. La diffusion d’images n’est pas prise en charge lorsque ingestionPermissionOptions est configuré. Pour plus d’informations, consultez Afficher les images intégrées au document dans la récupération agentique (préversion).

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

    Reference :SearchIndexClient

    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.

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

    Reference :SearchIndexClient

    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, si vous avez plusieurs sources de connaissances, mettez à jour la base de connaissances pour supprimer la source. 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.");
    

    Reference :SearchIndexClient

  4. Supprimez la source de connaissances.

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

    Reference :SearchIndexClient

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

    # Get knowledge bases
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    
    print("Knowledge Bases:")
    for kb in index_client.list_knowledge_bases():
        print(f"  - {kb.name}")
    

    Reference :SearchIndexClient

    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
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    kb = index_client.get_knowledge_base("knowledge_base_name")
    print(kb)
    

    Reference :SearchIndexClient

    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, si vous avez plusieurs sources de connaissances, mettez à jour la base de connaissances pour supprimer la source. 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.")
    

    Reference :SearchIndexClient

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

    Reference :SearchIndexClient

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

    ### Get knowledge bases
    GET {{search-url}}/knowledgebases?api-version={{api-version}}&$select=name
    Authorization: Bearer {{token}}
    

    Référence :Bases de connaissances - Liste

    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-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Référence :Bases de connaissances - Obtenir

    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, si vous avez plusieurs sources de connaissances, mettez à jour la base de connaissances pour supprimer la source. Cet exemple montre la suppression.

    ### Delete a knowledge base
    DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Référence :Bases de connaissances - Supprimer

  4. Supprimez la source de connaissances.

    ### Delete a knowledge source
    DELETE {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Référence :Sources de connaissances - Supprimer

Erreurs connues

La source de données et l’indexeur générés SharePoint utilisent le même comportement de validation et d’authentification de locataire Microsoft Entra que les indexeurs SharePoint configurés directement. Pour les échecs liés au locataire, passez en revue l’état et l’historique d’exécution de l’indexeur généré, puis suivez la procédure de correction Invalid AAD tenant.