Creare un'origine informazioni BLOB da Archiviazione BLOB di Azure e ADLS Gen2

Nota

Questa funzionalità di recupero agente è generalmente disponibile nella versione dell'API REST 2026-04-01 tramite accesso programmatico. Il portale di Azure e il portale Foundry di Microsoft continueranno a fornire l'accesso in anteprima a tutte le funzionalità di recupero agentico. Per indicazioni sulla migrazione, vedere Eseguire la migrazione del codice di recupero agenti alla versione più recente.

Usare un’origine blob di conoscenza per indicizzare ed eseguire query sul contenuto blob di Azure in una pipeline di recupero agentico. Le origini delle informazioni vengono create in modo indipendente, a cui viene fatto riferimento in una knowledge base e usate come dati di base quando un agente o un chatbot chiama un'azione di recupero in fase di query.

Quando si crea un'origine BLOB del knowledge source, si specifica un'origine dati esterna, i modelli e le proprietà per generare automaticamente i seguenti oggetti di Azure AI Search:

  • Sorgente dati che rappresenta un contenitore BLOB.
  • Insieme di competenze che suddivide e, facoltativamente, vettorizza il contenuto multimodale.
  • Indice che archivia il contenuto arricchito e soddisfa i criteri per il recupero agentico.
  • Indicizzatore che usa gli oggetti precedenti per guidare la pipeline di indicizzazione e arricchimento.

Nota

Se l'accesso utente viene specificato a livello di documento (BLOB) in Archiviazione di Azure, un'origine delle informazioni può inoltrare i metadati delle autorizzazioni al contenuto indicizzato in Azure AI Search. Per altre informazioni, vedere Metadati delle autorizzazioni di ADLS Gen2 o scopi RBAC dei BLOB.

Supporto per l'utilizzo

Portal di Azure portale Microsoft Foundry .NET SDK Python SDK Java SDK JavaScript SDK REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Prerequisiti

  • Pacchetto Azure.Search.Documents obbligatorio:

    • Per le funzionalità di anteprima del 2025-11-01, il pacchetto di anteprima più recente: dotnet add package Azure.Search.Documents --prerelease

    • Per le funzionalità 2026-04-01, il pacchetto stabile più recente: dotnet add package Azure.Search.Documents

  • Pacchetto azure-search-documents obbligatorio:

    • Per le funzionalità di anteprima del 2025-11-01, il pacchetto di anteprima più recente: pip install azure-search-documents --pre

    • Per le funzionalità 2026-04-01, il pacchetto stabile più recente: pip install azure-search-documents

Verificare la presenza di fonti di conoscenza esistenti

Un'origine delle conoscenze è un oggetto riutilizzabile di primo livello. Conoscere le origini conoscenze esistenti è utile per riutilizzare o denominare nuovi oggetti.

Eseguire il codice seguente per elencare le origini delle informazioni in base al nome e al tipo.

// 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
api-key: {{api-key}}

Reference:Knowledge Sources - List

Puoi anche restituire una singola fonte di conoscenza per nome per esaminarne la definizione 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}}
api-key: {{api-key}}

Reference:Fonti di Conoscenza - Ottieni

Il codice JSON seguente è una risposta di esempio per un'origine delle informazioni BLOB.

{
  "name": "my-blob-ks",
  "kind": "azureBlob",
  "description": "A sample blob knowledge source.",
  "encryptionKey": null,
  "azureBlobParameters": {
    "connectionString": "<REDACTED>",
    "containerName": "blobcontainer",
    "folderPath": null,
    "isADLSGen2": false,
    "ingestionParameters": {
      "disableImageVerbalization": false,
      "ingestionPermissionOptions": [],
      "contentExtractionMode": "standard",
      "identity": null,
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "text-embedding-3-large",
          "apiKey": "<REDACTED>",
          "modelName": "text-embedding-3-large",
          "authIdentity": null
        }
      },
      "chatCompletionModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "gpt-5-mini",
          "apiKey": "<REDACTED>",
          "modelName": "gpt-5-mini",
          "authIdentity": null
        }
      },
      "ingestionSchedule": null,
      "assetStore": null,
      "aiServices": {
        "uri": "<REDACTED>",
        "apiKey": "<REDACTED>"
      }
    },
    "createdResources": {
      "datasource": "my-blob-ks-datasource",
      "indexer": "my-blob-ks-indexer",
      "skillset": "my-blob-ks-skillset",
      "index": "my-blob-ks-index"
    }
  }
}

Nota

Le informazioni riservate vengono redatte. Le risorse generate vengono visualizzate alla fine della risposta.

Creare una fonte di conoscenza

Esegui il codice seguente per creare un'origine di conoscenza BLOB.

// Create a blob knowledge source
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;
using Azure;

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

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
{
    DisableImageVerbalization = false,
    ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: chatCompletionParams),
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    },
    IngestionPermissionOptions = new List<KnowledgeSourceIngestionPermissionOption>
    {
        KnowledgeSourceIngestionPermissionOption.UserIds,
        KnowledgeSourceIngestionPermissionOption.GroupIds
    }
};

var blobParams = new AzureBlobKnowledgeSourceParameters(
    connectionString: connectionString,
    containerName: containerName
)
{
    IsAdlsGen2 = false,
    IngestionParameters = ingestionParams
};

var knowledgeSource = new AzureBlobKnowledgeSource(
    name: "my-blob-ks",
    azureBlobParameters: blobParams
)
{
    Description = "This knowledge source pulls from a blob storage container."
};

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

Reference:SearchIndexClient, AzureBlobKnowledgeSource

# Create a blob knowledge source
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import AzureBlobKnowledgeSource, AzureBlobKnowledgeSourceParameters, KnowledgeBaseAzureOpenAIModel, AzureOpenAIVectorizerParameters, KnowledgeSourceAzureOpenAIVectorizer, KnowledgeSourceContentExtractionMode, KnowledgeSourceIngestionParameters

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

knowledge_source = AzureBlobKnowledgeSource(
    name = "my-blob-ks",
    description = "This knowledge source pulls from a blob storage container.",
    encryption_key = None,
    azure_blob_parameters = AzureBlobKnowledgeSourceParameters(
        connection_string = "blob_connection_string",
        container_name = "blob_container_name",
        folder_path = None,
        is_adls_gen2 = False,
        ingestion_parameters = KnowledgeSourceIngestionParameters(
            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",
                    api_key = "aoai_api_key"
                )
            ),
            embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
                azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
                    resource_url = "aoai_endpoint",
                    deployment_name = "aoai_embedding_deployment",
                    model_name = "aoai_embedding_model",
                    api_key = "aoai_api_key"
                )
            ),
            content_extraction_mode = KnowledgeSourceContentExtractionMode.MINIMAL,
            ingestion_schedule = None,
            ingestion_permission_options = ["user_ids", "group_ids"]
        )
    )
)

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

Reference:SearchIndexClient

### Create a blob knowledge source
PUT {{search-url}}/knowledgesources/my-blob-ks?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json

{
  "name": "my-blob-ks",
  "kind": "azureBlob",
  "description": "This knowledge source pulls from a blob storage container.",
  "encryptionKey": null,
  "azureBlobParameters": {
    "connectionString": "<YOUR AZURE STORAGE CONNECTION STRING>",
    "containerName": "<YOUR BLOB CONTAINER NAME>",
    "folderPath": null,
    "isADLSGen2": false,
    "ingestionParameters": {
        "identity": null,
        "disableImageVerbalization": null,
        "chatCompletionModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-gpt-deployment}}",
                "modelName": "{{aoai-gpt-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "embeddingModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-embedding-deployment}}",
                "modelName": "{{aoai-embedding-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "contentExtractionMode": "minimal",
        "ingestionSchedule": null,
        "ingestionPermissionOptions": ["userIds", "groupIds"]
    }
  }
}

Riferimento:Fonti di conoscenza - Crea o Aggiorna

Nota

L'imposizione delle autorizzazioni a livello di documento tramite ingestionPermissionOptions richiede la versione dell'API 2025-11-01-preview. 2026-04-01 non supporta questa funzionalità.

Proprietà specifiche dell'origine

Per entrambe le versioni API 2025-11-01-preview e 2026-04-01, è possibile passare le proprietà seguenti per creare una fonte di conoscenza BLOB.

Nome Descrizione Digitare Modificabile Obbligatorio
Name Nome dell'origine di conoscenza, che deve essere univoco all'interno della raccolta delle origini di conoscenza e seguire le linee guida per la denominazione per gli oggetti in Azure AI Search. Stringa No
Description Descrizione dell'origine delle informazioni. Stringa No
EncryptionKey Chiave gestita dal cliente per crittografare le informazioni riservate sia nell'origine delle informazioni che negli oggetti generati. Oggetto No
AzureBlobParameters Parametri specifici per le origini delle informazioni BLOB: ConnectionString, ContainerName, FolderPathe IsADLSGen2. Oggetto No
ConnectionString Un stringa di connessione basato su chiave o, se si usa un'identità gestita, l'ID della risorsa. Stringa No
ContainerName Nome del contenitore di archiviazione BLOB. Stringa No
FolderPath Cartella all'interno del contenitore. Stringa No No
IsADLSGen2 Il valore predefinito è False. Impostare su True se si usa un account di archiviazione di ADLS Gen2. Booleano No No
Nome Descrizione Digitare Modificabile Obbligatorio
name Nome dell'origine di conoscenza, che deve essere univoco all'interno della raccolta delle origini di conoscenza e seguire le linee guida di denominazione per gli oggetti in Azure AI Search. Stringa No
description Descrizione dell'origine delle informazioni. Stringa No
encryption_key Chiave gestita dal cliente per crittografare le informazioni riservate sia nell'origine delle informazioni che negli oggetti generati. Oggetto No
azure_blob_parameters Parametri specifici per le origini delle informazioni BLOB: connection_string, container_name, folder_pathe is_adls_gen2. Oggetto No
connection_string Un stringa di connessione basato su chiave o, se si usa un'identità gestita, l'ID della risorsa. Stringa No
container_name Nome del contenitore di archiviazione BLOB. Stringa No
folder_path Cartella all'interno del contenitore. Stringa No No
is_adls_gen2 Il valore predefinito è False. Impostare su True se si usa un account di archiviazione di ADLS Gen2. Booleano No No
Nome Descrizione Digitare Modificabile Obbligatorio
name Nome dell'origine di conoscenza, che deve essere univoco all'interno della raccolta delle origini di conoscenza e seguire le linee guida di denominazione per gli oggetti in Azure AI Search. Stringa No
kind Il tipo di origine delle conoscenze, che in questo caso è azureBlob . Stringa No
description Descrizione dell'origine delle informazioni. Stringa No
encryptionKey Chiave gestita dal cliente per crittografare le informazioni riservate sia nell'origine delle informazioni che negli oggetti generati. Oggetto No
azureBlobParameters Parametri specifici per le origini delle informazioni BLOB: connectionString, containerName, folderPathe isADLSGen2. Oggetto No
connectionString Un stringa di connessione basato su chiave o, se si usa un'identità gestita, l'ID della risorsa. Stringa No
containerName Nome del contenitore di archiviazione BLOB. Stringa No
folderPath Cartella all'interno del contenitore. Stringa No No
isADLSGen2 Il valore predefinito è false. Impostare su true se si usa un account di archiviazione di ADLS Gen2. Booleano No No

Proprietà dei parametri di inserimento

Solo per le fonti di conoscenza indicizzate, è possibile passare le seguenti proprietà ingestionParameters per controllare il modo in cui il contenuto viene acquisito ed elaborato.

Nome Descrizione Digitare Modificabile Obbligatorio
Identity Identità gestita da usare nell'indicizzatore generato. Oggetto No
DisableImageVerbalization Abilita o disabilita l'uso della verbalizzazione delle immagini. Il valore predefinito è False, che abilita la verbalizzazione delle immagini. Impostare True su disabilitare la verbalizzazione delle immagini. Booleano No No
ChatCompletionModel Modello di completamento della chat che verbalizza le immagini o estrae il contenuto. I modelli supportati sono gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-mini, gpt-4.1-nano, gpt-5, , gpt-5-minie gpt-5-nano. La competenza Prompt GenAI è inclusa nel set di competenze generato. L'impostazione di questo parametro richiede anche che DisableImageVerbalization sia impostato su False. Oggetto Solo ApiKey e DeploymentName sono modificabili No
EmbeddingModel Modello di incorporamento di testo che vettorizza il contenuto di testo e immagine durante l'indicizzazione e in fase di query. I modelli supportati sono text-embedding-ada-002, text-embedding-3-smalle text-embedding-3-large. La funzionalità di embedding di Azure OpenAI è inclusa nel set di funzionalità generato e il vettorizzatore Azure OpenAI è incluso nell'indice generato. Oggetto Solo ApiKey e DeploymentName sono modificabili No
ContentExtractionMode Controlla la modalità di estrazione del contenuto dai file. Il valore predefinito è minimal, che usa l'estrazione di contenuto standard per testo e immagini. Impostare su standard per il cracking e la suddivisione avanzata dei documenti utilizzando la funzionalità Azure Content Understanding, che è inclusa nel set di competenze generato. Solo il parametro AiServices può essere specificato per standard. Stringa No No
AiServices Una risorsa di Microsoft Foundry per accedere a Azure Content Understanding nei Foundry Tools. L'impostazione di questo parametro richiede che ContentExtractionMode sia impostato su standard. Oggetto Solo ApiKey modificabile No
IngestionSchedule Aggiunge informazioni di pianificazione all'indicizzatore generato. È anche possibile aggiungere una pianificazione in un secondo momento per automatizzare l'aggiornamento dei dati. Oggetto No
IngestionPermissionOptions Autorizzazioni a livello di documento per l'inserimento insieme al contenuto. Specificare UserIds, GroupIds o RbacScope per archiviare i metadati delle autorizzazioni nell'indice. Per indicazioni specifiche per l'origine, vedere Inserire le autorizzazioni di controllo degli accessi in base al ruolo dall'archiviazione BLOB e inserire ACL da ADLS Gen2. Per applicare queste autorizzazioni in fase di query, vedere Applicare le autorizzazioni in fase di query. Array No No
Nome Descrizione Digitare Modificabile Obbligatorio
identity Identità gestita da usare nell'indicizzatore generato. Oggetto No
disable_image_verbalization Abilita o disabilita l'uso della verbalizzazione delle immagini. Il valore predefinito è False, che abilita la verbalizzazione delle immagini. Impostare True su disabilitare la verbalizzazione delle immagini. Booleano No No
chat_completion_model Modello di completamento della chat che verbalizza le immagini o estrae il contenuto. I modelli supportati sono gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-mini, gpt-4.1-nano, gpt-5, , gpt-5-minie gpt-5-nano. La competenza Prompt GenAI è inclusa nel set di competenze generato. L'impostazione di questo parametro richiede anche che disable_image_verbalization sia impostato su False. Oggetto Solo api_key e deployment_name sono modificabili No
embedding_model Modello di incorporamento di testo che vettorizza il contenuto di testo e immagine durante l'indicizzazione e in fase di query. I modelli supportati sono text-embedding-ada-002, text-embedding-3-smalle text-embedding-3-large. La funzionalità di embedding di Azure OpenAI è inclusa nel set di funzionalità generato e il vettorizzatore Azure OpenAI è incluso nell'indice generato. Oggetto Solo api_key e deployment_name sono modificabili No
content_extraction_mode Controlla la modalità di estrazione del contenuto dai file. Il valore predefinito è minimal, che usa l'estrazione di contenuto standard per testo e immagini. Impostare su standard per il cracking e la suddivisione avanzata dei documenti utilizzando la funzionalità Azure Content Understanding, che è inclusa nel set di competenze generato. Solo il parametro ai_services può essere specificato per standard. Stringa No No
ai_services Una risorsa di Microsoft Foundry per accedere a Azure Content Understanding nei Foundry Tools. L'impostazione di questo parametro richiede che content_extraction_mode sia impostato su standard. Oggetto Solo api_key modificabile No
ingestion_schedule Aggiunge informazioni di pianificazione all'indicizzatore generato. È anche possibile aggiungere una pianificazione in un secondo momento per automatizzare l'aggiornamento dei dati. Oggetto No
ingestion_permission_options Autorizzazioni a livello di documento per l'inserimento insieme al contenuto. Specificare user_ids, group_ids o rbac_scope per archiviare i metadati delle autorizzazioni nell'indice. Per indicazioni specifiche per l'origine, vedere Inserire le autorizzazioni di controllo degli accessi in base al ruolo dall'archiviazione BLOB e inserire ACL da ADLS Gen2. Per applicare queste autorizzazioni in fase di query, vedere Applicare le autorizzazioni in fase di query. Array No No
Nome Descrizione Digitare Modificabile Obbligatorio
identity Identità gestita da usare nell'indicizzatore generato. Oggetto No
disableImageVerbalization Abilita o disabilita l'uso della verbalizzazione delle immagini. Il valore predefinito è false, che abilita la verbalizzazione delle immagini. Impostare true su disabilitare la verbalizzazione delle immagini. Booleano No No
chatCompletionModel Modello di completamento della chat che verbalizza le immagini o estrae il contenuto. I modelli supportati sono gpt-4o, gpt-4o-mini, gpt-4.1gpt-4.1-mini, gpt-4.1-nano, gpt-5, , gpt-5-minie gpt-5-nano. La competenza Prompt GenAI è inclusa nel set di competenze generato. L'impostazione di questo parametro richiede anche che disableImageVerbalization sia impostato su false. Oggetto Solo apiKey e deploymentId sono modificabili No
embeddingModel Modello di incorporamento di testo che vettorizza il contenuto di testo e immagine durante l'indicizzazione e in fase di query. I modelli supportati sono text-embedding-ada-002, text-embedding-3-smalle text-embedding-3-large. La funzionalità di embedding di Azure OpenAI è inclusa nel set di funzionalità generato e il vettorizzatore Azure OpenAI è incluso nell'indice generato. Oggetto Solo apiKey e deploymentId sono modificabili No
contentExtractionMode Controlla la modalità di estrazione del contenuto dai file. Il valore predefinito è minimal, che usa l'estrazione di contenuto standard per testo e immagini. Impostare su standard per il cracking e la suddivisione avanzata dei documenti utilizzando la funzionalità Azure Content Understanding, che è inclusa nel set di competenze generato. Solo il parametro aiServices può essere specificato per standard. Stringa No No
aiServices Una risorsa di Microsoft Foundry per accedere a Azure Content Understanding nei Foundry Tools. L'impostazione di questo parametro richiede che contentExtractionMode sia impostato su standard. Oggetto Solo apiKey modificabile No
ingestionSchedule Aggiunge informazioni di pianificazione all'indicizzatore generato. È anche possibile aggiungere una pianificazione in un secondo momento per automatizzare l'aggiornamento dei dati. Oggetto No
ingestionPermissionOptions Autorizzazioni a livello di documento per l'inserimento insieme al contenuto. Specificare userIds, groupIds o rbacScope per archiviare i metadati delle autorizzazioni nell'indice. Per indicazioni specifiche per l'origine, vedere Inserire le autorizzazioni di controllo degli accessi in base al ruolo dall'archiviazione BLOB e inserire ACL da ADLS Gen2. Per applicare queste autorizzazioni in fase di query, vedere Applicare le autorizzazioni in fase di query. Array No No

Controllare lo stato di inserimento

Eseguire il codice seguente per monitorare lo stato e l'integrità dell'inserimento, inclusi il tipo di origine delle informazioni e gli errori dettagliati di indicizzazione per le origini delle informazioni che generano una pipeline dell'indicizzatore e popolano un indice di ricerca.

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}}
api-key: {{api-key}}
Content-Type: application/json 

Riferimento:Fonti di Conoscenza - Ottieni Stato

Una risposta per una richiesta che include parametri di inserimento e inserisce attivamente contenuto potrebbe essere simile all'esempio seguente.

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

Nota

La proprietà kind e l'array currentSynchronizationState.errors[] con i dettagli degli errori a livello di documento sono disponibili a partire dalla versione API 2026-04-01. Per le versioni precedenti dell'API, questi campi non vengono restituiti. Il lastSynchronizationState.status campo è anche nuovo nel 2026-04-01.

Esaminare gli oggetti creati

Quando si crea una knowledge source BLOB, il servizio di ricerca crea anche un indicizzatore, un indice, un insieme di competenze e un'origine dati. Non è consigliabile modificare questi oggetti, perché l'introduzione di un errore o un'incompatibilità può interrompere la pipeline.

Dopo aver creato un'origine conoscenze, la risposta elenca gli oggetti creati. Questi oggetti vengono creati in base a un modello fisso e i relativi nomi sono basati sul nome dell'origine della conoscenza. Non è possibile modificare i nomi degli oggetti.

È consigliabile usare il portale di Azure per convalidare la creazione dell'output. Il flusso di lavoro è:

  1. Controllare l'indicizzatore per i messaggi di esito positivo o negativo. Gli errori di connessione o quota vengono visualizzati qui.
  2. Controllare l'indice per il contenuto ricercabile. Usare Esplora Ricerche per eseguire le query.
  3. Controllare il set di competenze per informazioni su come il contenuto viene suddiviso in blocchi e facoltativamente vettorializzato.
  4. Controllare l'origine dati per informazioni dettagliate sulla connessione. L'esempio usa le chiavi API per semplicità, ma è possibile usare Microsoft Entra ID per l'autenticazione e il controllo degli accessi in base al ruolo per l'autorizzazione.

Assegnare a una base di conoscenza

Se si è soddisfatti della fonte di conoscenza, continuare con il passaggio successivo: specificare la base di conoscenza in una base di conoscenza.

Dopo aver configurato la Knowledge Base, usare l'azione di recupero per eseguire query sull'origine della knowledge base.

Suggerimento

Per applicare le autorizzazioni a livello di documento, impostare ingestionPermissionOptions creando questa fonte di conoscenza, e quindi includere il token di accesso dell'utente nella richiesta di recupero. Per altre informazioni, vedere Applicare le autorizzazioni in fase di query.

Eliminare una fonte di conoscenza

Prima di poter eliminare una fonte di conoscenza, è necessario eliminare qualsiasi base di conoscenza che vi faccia riferimento o aggiornare la definizione della base di conoscenza per rimuovere il riferimento. Per le fonti di conoscenza che generano una pipeline dell'indice e dell'indicizzatore, vengono eliminati anche tutti gli oggetti generati. Tuttavia, se è stato usato un indice esistente per creare un'origine conoscenze, l'indice non viene eliminato.

Se si tenta di eliminare una fonte di conoscenza attualmente in uso, l'azione fallisce e restituisce un elenco delle basi di conoscenza interessate.

Per eliminare una fonte di conoscenza:

  1. Ottenere un elenco di tutte le knowledge base nel servizio di ricerca.

    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

    Una risposta di esempio potrebbe essere simile alla seguente:

     Knowledge Bases:
       - earth-knowledge-base
       - hotels-sample-knowledge-base
       - my-demo-knowledge-base
    
  2. Ottenere una singola definizione della Knowledge Base per verificare la presenza di riferimenti all'origine della knowledge base.

    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

    Una risposta di esempio potrebbe essere simile alla seguente:

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. Eliminare la Knowledge Base o, se si dispone di più origini informazioni, aggiornare la Knowledge Base per rimuovere l'origine. Questo esempio mostra l'eliminazione.

    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. Eliminare l'origine delle informazioni.

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

    Reference:SearchIndexClient

  1. Ottenere un elenco di tutte le knowledge base nel servizio di ricerca.

    # 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

    Una risposta di esempio potrebbe essere simile alla seguente:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Ottenere una singola definizione della Knowledge Base per verificare la presenza di riferimenti all'origine della knowledge base.

    # 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

    Una risposta di esempio potrebbe essere simile alla seguente:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Eliminare la Knowledge Base o, se si dispone di più origini informazioni, aggiornare la Knowledge Base per rimuovere l'origine. Questo esempio mostra l'eliminazione.

    # 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. Eliminare l'origine delle informazioni.

    # 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. Ottenere un elenco di tutte le knowledge base nel servizio di ricerca.

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

    Reference:Knowledge Bases - List

    Una risposta di esempio potrebbe essere simile alla seguente:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Ottenere una singola definizione della Knowledge Base per verificare la presenza di riferimenti all'origine della knowledge base.

    ### Get a knowledge base definition
    GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    api-key: {{api-key}}
    

    Reference:Knowledge Bases - Get

    Una risposta di esempio potrebbe essere simile alla seguente:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Eliminare la Knowledge Base o, se si dispone di più origini informazioni, aggiornare la Knowledge Base per rimuovere l'origine. Questo esempio mostra l'eliminazione.

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

    Reference:Basi di conoscenza - Elimina

  4. Eliminare l'origine delle informazioni.

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

    Riferimento:Fonti di Conoscenza - Elimina