Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 --prereleasePer 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 --prePer le funzionalità 2026-04-01, il pacchetto stabile più recente:
pip install azure-search-documents
Versione dell'API REST necessaria:
Per le funzionalità di anteprima: Servizio di ricerca 2025-11-01-preview
Per le funzionalità disponibili a livello generale: Servizio di ricerca 2026-04-01
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-4ogpt-4o-minigpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5gpt-5-minigpt-5-nanogpt-5.1gpt-5.2gpt-5.4gpt-5.4-minigpt-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.
Configurare Azure AI Search per l'uso di un'identità gestita.
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.
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
DefaultAzureCredentialanzichéAzureKeyCredentialin 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());
Configurare Azure AI Search per l'uso di un'identità gestita.
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.
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
DefaultAzureCredentialanzichéAzureKeyCredentialin 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())
Configurare Azure AI Search per l'uso di un'identità gestita.
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.
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 |
Stringa | Sì |
KnowledgeSources |
Una o più origini di conoscenza supportate. | Array | Sì |
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 |
Stringa | Sì |
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 | Sì |
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 | Sì |
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 | Sì |
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
Contenuto correlato
- recupero agentico in Azure AI Search
- Agentic RAG: Creare un motore di recupero di ragionamento con Azure AI Search (video di YouTube)
- demo Azure OpenAI con recupero agente