Creare una base di conoscenza in Azure AI Search

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.

In Azure AI Search, una base knowledge è un oggetto di primo livello che orchestra agentic retrieval. Definisce le origini delle informazioni su cui eseguire query e il comportamento predefinito per le operazioni di recupero. In fase di query, il metodo retrieve è destinato alla Knowledge Base per eseguire la pipeline di recupero configurata.

È possibile creare una knowledge base in un carico di lavoro Foundry IQ nel portale di Microsoft Foundry (nuovo). È necessaria anche una Knowledge Base in tutte le soluzioni agentiche create usando le API di Azure AI Search.

Una Knowledge Base specifica:

  • Una o più origini di informazioni che puntano al contenuto ricercabile.
  • LLM facoltativo per la pianificazione delle query, la sintesi delle risposte o il riepilogo del contenuto Web. Le attività supportate variano in base alla versione dell'API e al tipo di origine delle informazioni.
  • Proprietà personalizzate che controllano il routing, la selezione dell'origine e la crittografia degli oggetti.

Supporto per l'utilizzo

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

Prerequisiti

  • Azure AI Search in qualsiasi regione che fornisce il recupero agentic. Se si usa un'identità gestita per l'accesso basato sui ruoli ai modelli distribuiti, il servizio di ricerca deve essere nel piano tariffario Basic o superiore.

  • Una o più fonti di conoscenza. Se si prevede di usare la versione dell'API 2026-04-01 per creare la knowledge base, le origini delle informazioni devono essere disponibili a livello generale. In caso contrario, è possibile usare i tipi di origine di anteprima della base di conoscenza.

  • (Condizionale) Azure OpenAI con una distribuzione LLM supportata. Per entrambe le versioni API 2025-11-01-preview e 2026-04-01, l'uso dell'LLM è necessario se la vostra base di conoscenza include una fonte di conoscenza web. Solo per l'anteprima 2025-11-01, l'LLM è facoltativo per tutti gli altri tipi di origine delle informazioni. 2026-04-01 non supporta un LLM per fonti di conoscenza non web.

  • Autorizzazione per creare e usare oggetti in Azure AI Search. È consigliabile usare l'accesso in base al ruolo. Il collaboratore del servizio di ricerca può creare e gestire una knowledge base. Il lettore di dati dell'indice di ricerca può eseguire query. In alternativa, è possibile usare le chiavi API se un'assegnazione di ruolo non è fattibile. Per altre informazioni, vedere Connettersi a un servizio di ricerca.

  • 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 1 novembre 2025, l'ultimo pacchetto di anteprima: pip install azure-search-documents --pre

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

Modelli supportati

Usare uno dei seguenti LLMs da Azure OpenAI nei modelli Foundry. Per le istruzioni di distribuzione, vedere Distribuire i modelli di Microsoft Foundry nel portale Foundry.

  • gpt-4o
  • gpt-4o-mini
  • gpt-4.1
  • gpt-4.1-mini
  • gpt-4.1-nano
  • gpt-5
  • gpt-5-mini
  • gpt-5-nano
  • gpt-5.1
  • gpt-5.2
  • gpt-5.4
  • gpt-5.4-mini
  • gpt-5.4-nano

Configurare l'accesso

Azure AI Search deve accedere all'LLM da Azure OpenAI nei modelli Foundry. È consigliabile Microsoft Entra ID per l'autenticazione e l'accesso basato sui ruoli per l'autorizzazione. Per assegnare i ruoli, è necessario essere proprietario o amministratore accesso utenti. Se non è possibile usare i ruoli, usare invece l'autenticazione basata su chiave.

  1. Configurare Azure AI Search per l'uso di un'identità gestita.

  2. Nel tuo fornitore di modelli, assegna Utente dei Servizi cognitivi all'identità gestita del tuo servizio di ricerca. Se si esegue il test in locale, assegnare lo stesso ruolo all'account utente.

  3. Per i test locali, seguire la procedura descritta in Avvio rapido: Connettersi senza chiavi per accedere a una sottoscrizione e a un tenant specifici. Usare DefaultAzureCredential anziché AzureKeyCredential in ogni richiesta, che dovrebbe essere simile all'esempio seguente:

    // Authenticate using roles
    using Azure.Search.Documents.Indexes;
    using Azure.Identity;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
    
  1. Configurare Azure AI Search per l'uso di un'identità gestita.

  2. Nel provider di servizi, assegnare Utente di Servizi Cognitivi all'identità gestita del servizio di ricerca. Se si esegue il test in locale, assegnare lo stesso ruolo all'account utente.

  3. Per i test locali, seguire la procedura descritta in Avvio rapido: Connettersi senza chiavi per accedere a una sottoscrizione e a un tenant specifici. Usare DefaultAzureCredential anziché AzureKeyCredential in ogni richiesta, che dovrebbe essere simile all'esempio seguente:

    # Authenticate using roles
    from azure.identity import DefaultAzureCredential
    index_client = SearchIndexClient(endpoint = "search_url", credential = DefaultAzureCredential())
    
  1. Configurare Azure AI Search per l'uso di un'identità gestita.

  2. Nel provider del tuo modello, assegnare Utente Servizi Cognitivi all'identità gestita del servizio di ricerca. Se si esegue il test in locale, assegnare lo stesso ruolo all'account utente.

  3. Per i test locali, seguire la procedura descritta in Avvio rapido: Connettersi senza chiavi per ottenere un token di accesso personale per una sottoscrizione e un tenant specifici. Specificare il token di accesso in ogni richiesta, che dovrebbe essere simile all'esempio seguente:

    # List indexes using roles
    GET https://{{search-url}}/indexes?api-version=2026-04-01
    Content-Type: application/json
    Authorization: Bearer {{access-token}}
    

Importante

I frammenti di codice in questo articolo usano le chiavi API. Se si usa l'autenticazione basata su ruoli, aggiornare ogni richiesta di conseguenza. In una richiesta che specifica entrambi gli approcci, la chiave API ha la precedenza.

Verificare la presenza di knowledge base esistenti

Una knowledge base è un oggetto riutilizzabile di primo livello. Conoscere le knowledge base esistenti è utile per riutilizzare o denominare nuovi oggetti.

Eseguire il codice seguente per elencare le knowledge base esistenti in base al nome. L'elenco include tutte le knowledge base nel servizio di ricerca, indipendentemente dalla versione dell'API usata per crearle.

// List knowledge bases by name
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

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

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

for kb in index_client.list_knowledge_bases():
    print(f"  - {kb.name}")

Reference:SearchIndexClient

# List knowledge bases
GET {{search-url}}/knowledgebases?api-version={{api-version}}&$select=name
Content-Type: application/json
api-key: {{search-api-key}}

Reference:Knowledge Bases - List

È anche possibile restituire una singola Knowledge Base in base al 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 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

# Get a knowledge base 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"))

kb = index_client.get_knowledge_base("knowledge_base_name")
print(json.dumps(kb.as_dict(), indent = 2))

Reference:SearchIndexClient

# Get knowledge base
GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Content-Type: application/json
api-key: {{search-api-key}}

Reference:Knowledge Bases - Get

Il codice JSON seguente è una risposta di esempio per una knowledge base.

{
  "name": "my-kb",
  "description": "A sample knowledge base.",
  "retrievalInstructions": null,
  "answerInstructions": null,
  "outputMode": null,
  "knowledgeSources": [
    {
      "name": "my-blob-ks"
    }
  ],
  "models": [],
  "encryptionKey": null,
  "retrievalReasoningEffort": {
    "kind": "low"
  }
}

Nota

Lo schema di risposta riflette la versione dell'API usata per creare la Knowledge Base. Una knowledge base creata con la versione dell'API 2026-04-01 disponibile a livello generale restituisce una definizione più stretta rispetto alla versione 2025-11-01-preview. Per altre informazioni sulle proprietà supportate da ogni versione, vedere la sezione successiva.

Creare una base di conoscenza

Una base di conoscenza connette una o più origini di informazioni (contenuti ricercabili) a un LLM facoltativo da Azure OpenAI nei modelli Foundry. Le proprietà impostate stabiliscono le impostazioni predefinite per l'esecuzione delle query e la risposta di recupero.

Dopo aver creato una knowledge base, è possibile aggiornarne le proprietà in qualsiasi momento. Se la Knowledge Base è in uso, gli aggiornamenti hanno effetto sul recupero successivo.

// Create a knowledge base
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure;

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

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

var knowledgeBase = new KnowledgeBase(
    name: "my-kb",
    knowledgeSources: new KnowledgeSourceReference[] 
    { 
        new KnowledgeSourceReference("hotels-ks"),
        new KnowledgeSourceReference("earth-at-night-ks")
    }
)
{
    Description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    RetrievalInstructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    AnswerInstructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
    Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
    RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort()
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBase.Name}' created or updated successfully.");

Reference:SearchIndexClient, KnowledgeBase

# Create a knowledge base
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import KnowledgeBase, KnowledgeBaseAzureOpenAIModel, KnowledgeSourceReference, AzureOpenAIVectorizerParameters, KnowledgeRetrievalOutputMode, KnowledgeRetrievalLowReasoningEffort

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

aoai_params = AzureOpenAIVectorizerParameters(
    resource_url = "aoai_endpoint",
    api_key="aoai_api_key",
    deployment_name = "aoai_gpt_deployment",
    model_name = "aoai_gpt_model",
)

knowledge_base = KnowledgeBase(
    name = "my-kb",
    description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    retrieval_instructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    answer_instructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
    output_mode = KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
    knowledge_sources = [
        KnowledgeSourceReference(name = "hotels-ks"),
        KnowledgeSourceReference(name = "earth-at-night-ks"),
    ],
    models = [KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters = aoai_params)],
    encryption_key = None,
    retrieval_reasoning_effort = KnowledgeRetrievalLowReasoningEffort(),
)

index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")

Reference:SearchIndexClient, KnowledgeBase

# Create a knowledge base
PUT {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}

{
    "name" : "my-kb",
    "description": "This knowledge base handles questions directed at two unrelated sample indexes.",
    "retrievalInstructions": "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    "answerInstructions": null,
    "outputMode": "answerSynthesis",
    "knowledgeSources": [
        {
            "name": "hotels-ks"
        },
        {
            "name": "earth-at-night-ks"
        }
    ],
    "models" : [ 
        {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{model-provider-url}}",
                "apiKey": "{{model-api-key}}",
                "deploymentId": "gpt-4.1-mini",
                "modelName": "gpt-4.1-mini"
            }
        }
    ],
    "encryptionKey": null,
    "retrievalReasoningEffort": {
        "kind": "low"
    }
}

Reference:Knowledge Bases - Creare o aggiornare

Importante

La versione dell'API 2026-04-01 accetta solo tipi di origine di conoscenza generalmente disponibili e supporta il recupero minimale ed estrattivo. Le funzionalità di sola anteprima, ad esempio la pianificazione delle query, la sintesi delle risposte e il ragionamento configurabile, non sono supportate. Per la funzionalità completa, usare 2025-11-01-preview.

Proprietà della Knowledge Base

Passare le proprietà seguenti per creare una Knowledge Base.

Nome Descrizione Digitare Obbligatorio
Name Nome della Knowledge Base. Deve essere univoco all'interno dell'insieme di basi di conoscenza e seguire le linee guida per la denominazione per gli oggetti in Azure AI Search. Stringa
KnowledgeSources Una o più origini di conoscenza supportate. Array
Description Descrizione della Knowledge Base. L'LLM utilizza la descrizione per informare sull'elaborazione delle query. Stringa No
RetrievalInstructions Richiesta all'LLM di determinare se una fonte di conoscenze dovrebbe essere inclusa in una richiesta. Includere questa richiesta quando si dispone di più origini di informazioni. Questo campo influenza sia la selezione dell'origine delle informazioni che la formulazione delle query. Ad esempio, le istruzioni potrebbero aggiungere informazioni o classificare in ordine di priorità un'origine conoscenze. Le istruzioni vengono passate direttamente all'LLM, il che significa che è possibile fornire istruzioni che interrompano la pianificazione delle query, come istruzioni che comportano il bypass di un'origine di conoscenza essenziale. Stringa No
AnswerInstructions Istruzioni personalizzate per modellare le risposte sintetizzate. Il valore predefinito è Null. Per altre informazioni, vedere Usare la sintesi delle risposte per le risposte supportate dalla citazione. Stringa No
OutputMode I valori validi sono AnswerSynthesis per una risposta formulata da LLM o ExtractedData per i risultati completi della ricerca da passare a un LLM in un passaggio successivo. Stringa No
Models Obbligatorio per le origini delle informazioni Web. Facoltativo per altri tipi di origine delle informazioni. Specifica un LLM supportato per la pianificazione delle query o la sintesi delle risposte. Ottenere i dettagli di connessione dal portale di Microsoft Foundry o da una richiesta della riga di comando e quindi specificarli usando la classe KnowledgeBaseAzureOpenAIModel. È possibile usare il controllo degli accessi in base al ruolo anziché le chiavi API per la connessione Azure AI Search al modello. Array No
RetrievalReasoningEffort Determina il livello di elaborazione delle query correlate a LLM. I valori validi sono minimal, low (impostazione predefinita) e medium. Per altre informazioni, vedere Impostare lo sforzo di ragionamento per il recupero. Oggetto No
Nome Descrizione Digitare Obbligatorio
name Nome della Knowledge Base. Deve essere univoco all'interno dell'insieme di basi di conoscenza e seguire le linee guida per la denominazione per gli oggetti in Azure AI Search. Stringa
description Descrizione della Knowledge Base. L'LLM utilizza la descrizione per informare sull'elaborazione delle query. Stringa No
retrieval_instructions Richiesta all'LLM di determinare se una fonte di conoscenze dovrebbe essere inclusa in una richiesta. Includere questa richiesta quando si dispone di più origini di informazioni. Questo campo influenza sia la selezione dell'origine delle informazioni che la formulazione delle query. Ad esempio, le istruzioni potrebbero aggiungere informazioni o classificare in ordine di priorità un'origine conoscenze. Passare le istruzioni direttamente all'LLM. È possibile fornire istruzioni che interrompono la pianificazione delle query, ad esempio istruzioni che comportano il bypass di una fonte di conoscenza essenziale. Stringa No
answer_instructions Istruzioni personalizzate per modellare le risposte sintetizzate. Il valore predefinito è Null. Per altre informazioni, vedere Usare la sintesi delle risposte per le risposte supportate dalla citazione. Stringa No
output_mode I valori validi sono answer_synthesis per una risposta formulata da LLM o extracted_data per i risultati completi della ricerca da passare a un LLM in un passaggio successivo. Stringa No
knowledge_sources Una o più origini di conoscenza supportate. Array
models Obbligatorio per le origini delle informazioni Web. Facoltativo per altri tipi di origine delle informazioni. Specifica un LLM supportato per la pianificazione delle query o la sintesi delle risposte. Ottenere i dettagli di connessione dal portale di Microsoft Foundry o da una richiesta della riga di comando. È possibile usare il controllo degli accessi in base al ruolo anziché le chiavi API per la connessione Azure AI Search al modello. Array No
encryption_key Chiave gestita dal cliente per crittografare le informazioni riservate sia nella Knowledge Base che negli oggetti generati. Oggetto No
retrieval_reasoning_effort Determina il livello di elaborazione delle query correlate a LLM. I valori validi sono minimal, low (impostazione predefinita) e medium. Per altre informazioni, vedere Impostare lo sforzo di ragionamento per il recupero. Oggetto No
Nome Descrizione Digitare Obbligatorio
name Nome della Knowledge Base. Deve essere univoco all'interno dell'insieme di knowledge base e seguire le linee guida per la denominazione per gli oggetti in Azure AI Search. Stringa
description Descrizione della Knowledge Base. L'LLM utilizza la descrizione per pianificare le query. Stringa No
retrievalInstructions Una richiesta per il LLM di determinare se un'origine di conoscenza deve essere nell'ambito di una query. Includere questa richiesta quando si dispone di più origini di informazioni. Questo campo influenza sia la selezione dell'origine delle informazioni che la formulazione delle query. Ad esempio, le istruzioni potrebbero aggiungere informazioni o classificare in ordine di priorità un'origine conoscenze. Le istruzioni vengono passate direttamente all' LLM, il che significa che è possibile fornire istruzioni che interrompono la pianificazione delle query, ad esempio istruzioni che portano ad aggirare un'origine di conoscenza essenziale. Stringa No
answerInstructions Istruzioni personalizzate per modellare le risposte sintetizzate. Il valore predefinito è Null. Per altre informazioni, vedere Usare la sintesi delle risposte per le risposte supportate dalla citazione. Stringa No
outputMode I valori validi sono answerSynthesis per una risposta formulata da LLM o extractedData per i risultati completi della ricerca da passare a un LLM in un passaggio successivo. Stringa No
knowledgeSources Una o più origini di conoscenza supportate. Array
models Obbligatorio per le origini delle informazioni Web. Facoltativo per altri tipi di origine delle informazioni. Specifica un LLM supportato per la pianificazione delle query o la sintesi delle risposte. Ottenere i dettagli di connessione dal portale di Microsoft Foundry o da una richiesta della riga di comando. È possibile usare il controllo degli accessi in base al ruolo anziché le chiavi API per la connessione Azure AI Search al modello. Array No
encryptionKey Chiave gestita dal cliente per crittografare le informazioni riservate sia nella Knowledge Base che negli oggetti generati. Oggetto No
retrievalReasoningEffort.kind Determina il livello di elaborazione delle query correlate a LLM. I valori validi sono minimal, low (impostazione predefinita) e medium. Per altre informazioni, vedere Impostare lo sforzo di ragionamento per il recupero. Oggetto No

Effettuare query su una base di conoscenza

Dopo aver creato una Knowledge Base, usare l'azione di recupero per eseguire una query e verificare la connessione LLM.

Eliminare una base di conoscenza

Se la Knowledge Base non è più necessaria o è necessario ricompilarla nel servizio di ricerca, eseguire il codice seguente per eliminare l'oggetto.

// Delete a knowledge base
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

# 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

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

Reference:Basi di conoscenza - Elimina