Créer une source de connaissances indexée Azure SQL (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

Ces fonctionnalités font partie de l’API REST 2026-08-01-preview. La préversion 2026-08-01 vous est concédée sous licence dans le cadre de votre abonnement Azure et est soumise aux conditions applicables aux « préversions » dans les Microsoft Conditions d’utilisation du produit, l’addenda sur la protection des données des produits et des services Microsoft (« DPA ») et les conditions d’utilisation supplémentaires pour les préversions Microsoft Azure.

La préversion 2026-08-01 prend en charge les connexions à d’autres services Microsoft et à des services tiers. L’utilisation de ces services est soumise à leurs conditions respectives et peut entraîner le traitement ou le stockage des données en dehors de la limite de conformité Azure, ainsi que des données entrant dans la limite de conformité Azure.

Il est de votre responsabilité de gérer si vos données circulent en dehors des limites géographiques et de conformité de votre organisation, ainsi que des implications connexes, et que les autorisations, les limites et les approbations appropriées sont provisionnés.

Vous êtes responsable de l’examen et du test des applications que vous créez dans le contexte de vos cas d’usage spécifiques et de prendre toutes les décisions et personnalisations appropriées. Cela inclut l’implémentation de vos propres atténuations d’IA responsables, telles que les métaprompts, les filtres de contenu ou d’autres systèmes de sécurité, et la garantie que vos applications répondent aux normes de qualité, de fiabilité, de sécurité et de fiabilité appropriées. Pour plus d’informations, consultez la note de transparence Recherche Azure AI.

Une source de connaissances Azure SQL indexée (version préliminaire) ingère des lignes d’Azure SQL Database ou d’Azure SQL Managed Instance dans un pipeline de récupération piloté par agent 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.

Contrairement aux sources de connaissances basées sur des fichiers, telles que Stockage Blob Azure et OneLake, chaque ligne SQL est traitée comme un document logique. Vous dirigez le schéma d’index via des mappages de colonnes explicites plutôt que d’utiliser un schéma de document fixe.

Lorsque vous créez une source de connaissances Azure SQL indexée, vous spécifiez une source de données SQL, des mappages de colonnes facultatifs et des modèles facultatifs pour générer automatiquement les objets Recherche Azure AI suivants :

  • Source de données qui représente la table ou la vue SQL.
  • Index dont les champs sont dérivés de vos mappages de colonnes.
  • Ensemble de compétences qui génère des incorporations. Le service crée un ensemble de compétences uniquement lorsque vous spécifiez embeddingColumns.
  • Indexeur qui utilise les objets précédents pour piloter le pipeline d’ingestion.

L’indexeur généré est conforme à l’indexeur Azure SQL, dont les prérequis, les stratégies de détection des modifications et les limitations s’appliquent également aux sources de connaissances indexées Azure SQL. Pour plus d’informations, consultez la documentation de l’indexeur Azure SQL.

Assistance à l'utilisation

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

Prerequisites

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

  • Achèvement des prérequis de l’indexeur Azure SQL, notamment :

    • Un Azure SQL Database ou Azure SQL Managed Instance avec une table ou une vue à ingérer.

    • Clé primaire à valeur unique sur la table source ou la vue.

    • Pour les vues, une colonne adaptée à la détection des changements de marque à haut niveau. Nous vous recommandons vivement d’utiliser une rowversion colonne.

  • 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 vous spécifiez embeddingColumns, le service de recherche doit disposer d’une identité managée avec les autorisations Cognitive Services User sur la ressource Microsoft Foundry qui héberge le modèle d’intégration.

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

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

    • Créez et approuvez une liaison privée partagée vers le serveur SQL avec l’ID de sqlServer groupe. Pour SQL Managed Instance, utilisez l’ID de groupe managedInstance.

    • Utilisez l’authentification SQL ou l’authentification d’identité managée. Pour l’identité managée, accordez à l’identité les rôles requis Azure et de base de données, puis utilisez un chaîne de connexion avec Database=<database-name> et l’ID de ressource du serveur SQL ou SQL Managed Instance. Définissez ingestionParameters.identity uniquement pour une identité attribuée par l’utilisateur. Si vous l’omettez, l’indexeur utilise l’identité affectée par le système du service de recherche.

    • Créez et approuvez une liaison privée partagée pour chaque point de terminaison de modèle protégé. 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

Limitations et considérations

  • Une source de connaissances peut ingérer des données depuis une seule table ou une seule vue.
  • La table ou la vue source doit avoir une clé primaire à valeur unique. Les clés composites ne sont pas prises en charge.
  • La clé primaire est découverte automatiquement et ne peut pas être remplacée.
  • contentExtractionMode prend uniquement "minimal"en charge .
  • L’extraction et la description d’images ne sont pas prises en charge.
  • La synchronisation en temps réel n’est pas prise en charge. L’indexeur généré est basé sur la planification.
  • La récupération SQL en temps réel n’est pas prise en charge. La source de connaissances est indexée, et non distante.

Préparer l’indexeur généré

Une source de connaissances Azure SQL indexée crée automatiquement un indexeur pour piloter l’ingestion. Passez en revue les détails suivants avant de créer la source de connaissances.

Détection des changements

L’indexeur généré utilise la détection des modifications de l’indexeur standard Azure SQL :

Authentification

L’indexeur généré prend en charge deux options d’authentification :

  • Authentification SQL : Fournissez un nom d’utilisateur et un mot de passe dans le chaîne de connexion.

  • Authentification par identité managée : Utilisez une identité managée attribuée par le système ou attribuée par l’utilisateur disposant des rôles Azure RBAC et des rôles au niveau de la base de données sur la ressource SQL.

Pour connaître les formats de chaîne de connexion, les exigences de rôle et les étapes de configuration, consultez les conditions préalables de l’indexeur Azure SQL et Se connecter via une identité managée.

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 Azure SQL indexée.

{
  "name": "indexedsqlks",
  "kind": "indexedSql",
  "description": "Sample indexed Azure SQL knowledge source.",
  "encryptionKey": null,
  "indexedSqlParameters": {
    "connectionString": "<sql-connection-string>",
    "tableOrView": "dbo.tbl_hotels",
    "contentColumns": [
      { "name": "hotelName", "sourceField": "HotelName", "searchFieldType": "Edm.String" },
      { "name": "description", "sourceField": "Description", "searchFieldType": "Edm.String" }
    ],
    "embeddingColumns": [
      { "name": "descriptionVector", "sourceField": "Description" }
    ],
    "ingestionParameters": {
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<aoai-endpoint>",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large"
        }
      },
      "createdResources": {
        "datasource": "indexedsqlks-datasource",
        "indexer": "indexedsqlks-indexer",
        "skillset": "indexedsqlks-skillset",
        "index": "indexedsqlks-index"
      }
    }
  }
}

Créer une source de connaissances

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

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;

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

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

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    NetworkAccessMode = KnowledgeSourceNetworkAccessMode.Public,
    ContentExtractionMode = "minimal",
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    }
};

var sqlParams = new IndexedSqlKnowledgeSourceParameters(
    connectionString: sqlConnectionString,
    tableOrView: "dbo.tbl_hotels")
{
    ContentColumns =
    {
        new ContentColumnMapping("hotelName", "HotelName", "Edm.String"),
        new ContentColumnMapping("description", "Description", "Edm.String")
    },
    EmbeddingColumns =
    {
        new EmbeddingColumnMapping("descriptionVector", "Description")
    },
    IngestionParameters = ingestionParams
};

var knowledgeSource = new IndexedSqlKnowledgeSource(
    name: "indexedsqlks",
    indexedSqlParameters: sqlParams)
{
    Description = "Indexed Azure SQL knowledge source."
};

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

Reference :SearchIndexClient, IndexedSqlKnowledgeSource

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    ContentColumnMapping,
    EmbeddingColumnMapping,
    IndexedSqlKnowledgeSource,
    IndexedSqlKnowledgeSourceParameters,
)
from azure.search.documents.knowledgebases.models import (
    KnowledgeSourceAzureOpenAIVectorizer,
    KnowledgeSourceIngestionParameters,
    KnowledgeSourceNetworkAccessMode,
)

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

embedding_params = AzureOpenAIVectorizerParameters(
    resource_url="<aoai-endpoint>",
    deployment_name="<aoai-embedding-deployment>",
    model_name="<aoai-embedding-model>",
)

ingestion_params = KnowledgeSourceIngestionParameters(
    network_access_mode=KnowledgeSourceNetworkAccessMode.PUBLIC,
    content_extraction_mode="minimal",
    embedding_model=KnowledgeSourceAzureOpenAIVectorizer(
        azure_open_ai_parameters=embedding_params
    ),
)

knowledge_source = IndexedSqlKnowledgeSource(
    name="indexedsqlks",
    description="Indexed Azure SQL knowledge source.",
    indexed_sql_parameters=IndexedSqlKnowledgeSourceParameters(
        connection_string="Server=tcp:{server}.database.windows.net,1433;Database={db};...;",
        table_or_view="dbo.tbl_hotels",
        content_columns=[
            ContentColumnMapping(
                name="hotelName",
                source_field="HotelName",
                search_field_type="Edm.String",
            ),
            ContentColumnMapping(
                name="description",
                source_field="Description",
                search_field_type="Edm.String",
            ),
        ],
        embedding_columns=[
            EmbeddingColumnMapping(
                name="descriptionVector",
                source_field="Description",
            )
        ],
        ingestion_parameters=ingestion_params,
    ),
)

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

Reference :SearchIndexClient

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

{
  "name": "indexedsqlks",
  "kind": "indexedSql",
  "description": "Indexed Azure SQL knowledge source.",
  "indexedSqlParameters": {
    "connectionString": "Server=tcp:{server}.database.windows.net,1433;Database={db};...;",
    "tableOrView": "dbo.tbl_hotels",
    "contentColumns": [
      { "name": "hotelName", "sourceField": "HotelName", "searchFieldType": "Edm.String" },
      { "name": "description", "sourceField": "Description", "searchFieldType": "Edm.String" }
    ],
    "embeddingColumns": [
      { "name": "descriptionVector", "sourceField": "Description" }
    ],
    "ingestionParameters": {
      "networkAccessMode": "public",
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-embedding-deployment}}",
          "modelName": "{{aoai-embedding-model}}"
        }
      }
    }
  }
}

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

Utilisez indexedSqlParameters pour identifier la table ou la vue SQL à importer et pour définir les correspondances de colonnes qui deviennent des champs dans l’index généré. Pour les vues, spécifiez la colonne de point d’eau élevée utilisée pour la détection des modifications.

Mappage de colonnes

Permet contentColumns de mapper des colonnes de texte SQL dans des champs pouvant faire l’objet d’une recherche dans l’index Recherche Azure AI généré. Chaque mappage de colonne de contenu indique le champ d’index cible, la colonne SQL source et le type de champ dans Recherche Azure AI. Pour contentColumns, utilisez Edm.String.

Mappage d’incorporation

Permet embeddingColumns de mapper des colonnes de texte SQL dans des champs vectoriels générés. Spécifiez un modèle d’incorporation dans ingestionParameters lorsque vous utilisez des colonnes d’incorporation.

Pour les sources de connaissances Azure SQL indexées, contentExtractionMode doit être "minimal" car l’ingestion SQL s’effectue ligne par ligne et n’extrait pas de contenu des documents binaires. L’extraction d’images et la verbalisation des images ne sont pas prises en charge, donc chatCompletionModel, assetStore, aiServices et les paramètres liés aux images n’ont aucun effet.

Règles de définition des valeurs par défaut et de validation

Les valeurs par défaut suivantes s’appliquent lorsque vous créez une source de connaissances Azure SQL indexée.

  • Si vous omettez contentColumns, le service mappe automatiquement les colonnes SQL qui peuvent être représentées en toute sécurité sous forme de texte en Edm.String tant que champs dans l’index généré, à l’aide d’un mappage 1:1 où name est sourceFieldégal .

  • Si vous omettez embeddingColumns, le service ne crée pas de champs vectoriels et ne configure pas de compétence d’incorporation.

  • embeddingColumns est indépendant de contentColumns. Pour que les vecteurs correspondent à du texte récupérable, incluez la même colonne SQL dans les deux tableaux.

  • La clé primaire de la table source ou de la vue est découverte automatiquement. Les remplacements explicites ne sont pas pris en charge et la source doit avoir une clé primaire à valeur unique.

Restreindre l’ingestion à un réseau privé

À partir de la version d’API 2026-08-01-preview, networkAccessMode contrôle l’environnement réseau dans lequel s’exécute l’indexeur généré pour une source de connaissances Azure SQL 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 à la connexion source Azure SQL Database ou SQL Managed Instance et aux dépendances Azure prises en charge, telles que les modèles OpenAI Azure et les ressources Foundry Microsoft.

Pour configurer et vérifier l’accès au réseau privé :

  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.

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.

Interroger une base de connaissances

Une fois la base de connaissances configurée, appelez l’action de récupération ou le point de terminaison MCP pour interroger la source de connaissances.

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