Crea una fonte di conoscenza Azure SQL indicizzata (anteprima)

Importante

Queste funzionalità e funzionalità fanno parte dell'API REST 2026-05-01-preview. L'anteprima 2026-05-01-preview è concessa in licenza all'utente come parte della sottoscrizione Azure ed è soggetta ai termini applicabili alle "Anteprime" nei Microsoft Product Terms, nel Microsoft Products and Services Data Protection Addendum ("DPA") e nei Supplemental Terms of Use for Microsoft Azure Previews.

La versione 2026-05-01-preview supporta le connessioni ad altri servizi di servizi Microsoft e di terze parti. L'utilizzo di questi servizi è soggetto alle rispettive condizioni e potrebbe comportare l'elaborazione o l'archiviazione dei dati al di fuori del limite di conformità Azure, nonché il flusso dei dati nel limite di conformità Azure.

È tua responsabilità gestire l'eventuale trasferimento dei tuoi dati al di fuori dei confini di conformità e geografici della tua organizzazione e le relative implicazioni, nonché garantire che siano predisposte le autorizzazioni, i limiti e le approvazioni appropriati.

L'utente è responsabile di esaminare e testare attentamente le applicazioni compilate nel contesto dei casi d'uso specifici e di prendere tutte le decisioni e le personalizzazioni appropriate. Ciò include l'implementazione di mitigazioni di intelligenza artificiale responsabili, ad esempio metaprompt, filtri di contenuto o altri sistemi di sicurezza, e garantire che le applicazioni soddisfino gli standard di qualità, affidabilità, sicurezza e attendibilità appropriati. Per altre informazioni, vedere la nota sulla trasparenza Azure AI Search.

Una fonte di conoscenza Azure SQL indicizzata (anteprima) importa righe da database SQL di Azure o Istanza gestita di SQL di Azure in una pipeline di recupero basata su agenti in Azure AI Search. 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 viene eseguita una query sulla Knowledge Base in fase di esecuzione.

A differenza delle origini dati basate su file, come Archiviazione BLOB di Azure e OneLake, ogni riga SQL è considerata un documento logico. Lo schema dell'indice viene gestito dal cliente tramite mapping espliciti di colonne anziché uno schema di documento fisso.

Quando si crea un'origine della conoscenza Azure SQL indicizzata, si specificano un'origine dati SQL, mappature facoltative delle colonne e modelli facoltativi per generare automaticamente i seguenti oggetti di Azure AI Search:

  • Un'origine dati che rappresenta la tabella o la vista SQL.
  • Un indice i cui campi derivano dalle mappature delle tue colonne.
  • Set di competenze che genera incorporamenti. Il servizio crea un set di competenze solo quando si specifica embeddingColumns.
  • Indicizzatore che usa gli oggetti precedenti per guidare la pipeline di inserimento.

L'indicizzatore generato è conforme all'indicizzatore Azure SQL, i cui prerequisiti, i criteri di rilevamento delle modifiche e le limitazioni si applicano anche alle origini conoscenze indicizzate Azure SQL. Per altre informazioni, vedere la documentazione dell'indicizzatore Azure SQL.

Supporto per l'utilizzo

Portale di Azure Portale di Microsoft Foundry .NET SDK PYTHON SDK JAVA SDK JavaScript SDK API REST
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Prerequisiti

  • Servizio di Ricerca con intelligenza artificiale di Azure disponibile in qualsiasi area che supporta il recupero tramite agenti autonomi.

  • Completamento dei prerequisiti dell'indicizzatore Azure SQL, tra cui:

    • Un database SQL di Azure o Istanza gestita di SQL di Azure con una tabella o una vista da inserire.

    • Una chiave primaria a valore singolo nella tabella o nella vista di origine.

    • Per i valori, una colonna adatta al rilevamento delle variazioni del livello massimo raggiunto. È consigliabile usare una rowversion colonna.

  • Autorizzazioni per la creazione di origini delle informazioni. Configurare l'autenticazione senza chiave con i ruoli Collaboratore servizio di ricerca e Collaboratore ai dati dell'indice di ricerca assegnati all'account utente (scelta consigliata) o usare una chiave API.

  • Se si specifica embeddingColumns, il servizio di ricerca deve disporre di un'identità gestita con autorizzazioni Cognitive Services User sulla risorsa Microsoft Foundry che ospita il modello di embedding.

  • Pacchetto di anteprima Azure.Search.Documents più recente: dotnet add package Azure.Search.Documents --prerelease

Limitazioni e considerazioni

  • Una fonte di dati può attingere dati da una sola tabella o da una sola vista.
  • La tabella o la vista di origine deve avere una chiave primaria a valore singolo. Le chiavi composite non sono supportate.
  • La chiave primaria viene individuata automaticamente e non può essere sottoposta a override.
  • contentExtractionMode supporta solo "minimal".
  • L'estrazione di immagini e la verbalizzazione delle immagini non sono supportate.
  • La sincronizzazione in tempo reale non è supportata. L'indicizzatore generato è basato sulla pianificazione.
  • Il recupero SQL in tempo reale non è supportato. La fonte di conoscenza è indicizzata, non è remota.

Preparare l'indicizzatore generato

Un'origine dati di conoscenza Azure SQL indicizzata crea automaticamente un indicizzatore per gestire l'ingestione. Esaminare i dettagli seguenti prima di creare l'origine delle informazioni.

Rilevamento delle modifiche

L'indicizzatore generato usa il rilevamento delle modifiche standard dell'indicizzatore di Azure SQL:

Authentication

L'indicizzatore generato supporta due opzioni di autenticazione:

  • SQL authentication: Specificare un nome utente e una password nel stringa di connessione.

  • Autenticazione tramite identità gestita: Usa un'identità gestita assegnata dal sistema o assegnata dall'utente che dispone di Azure RBAC e di ruoli a livello di database sulla risorsa SQL.

Per i formati stringa di connessione, i requisiti dei ruoli e i passaggi di configurazione, vedere i prerequisiti dell'indicizzatore Azure SQL e Connettersi tramite un'identità gestita.

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 seguente JSON è una risposta di esempio per un'origine della conoscenza di Azure SQL indicizzata.

{
  "name": "indexedsqlks",
  "kind": "indexedSql",
  "description": "Sample indexed Azure SQL knowledge source.",
  "encryptionKey": null,
  "indexedSqlParameters": {
    "connectionString": "<SQL database 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": "<Foundry resource endpoint URI>",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large"
        }
      },
      "createdResources": {
        "datasource": "indexedsqlks-datasource",
        "indexer": "indexedsqlks-indexer",
        "skillset": "indexedsqlks-skillset",
        "index": "indexedsqlks-index"
      }
    }
  }
}

Creare una fonte di conoscenza

Esegui il codice seguente per creare un'origine dati di Azure SQL indicizzata.

using Azure;
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 AzureKeyCredential(apiKey));

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

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    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.core.credentials import AzureKeyCredential
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,
)

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

embedding_params = AzureOpenAIVectorizerParameters(
    resource_url="aoai_endpoint",
    deployment_name="aoai_embedding_deployment",
    model_name="aoai_embedding_model",
    api_key="aoai_key",
)

ingestion_params = KnowledgeSourceIngestionParameters(
    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-url}}/knowledgesources/indexedsqlks?api-version=2026-05-01-preview
api-key: {{api-key}}
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": {
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-embedding-deployment}}",
          "modelName": "{{aoai-embedding-model}}",
          "apiKey": "{{aoai-key}}"
        }
      }
    }
  }
}

Riferimento:Fonti di conoscenza - Crea o Aggiorna

Proprietà specifiche dell'origine

Le proprietà seguenti si applicano alle origini dati di Azure SQL indicizzate.

Proprietà Description Type Modificabile Obbligatorio
name Il nome dell'origine della conoscenza. Il nome deve essere univoco all'interno della raccolta di origini dati e rispettare le linee guida per la denominazione degli oggetti in Azure AI Search. string
kind Il tipo di origine delle conoscenze, che in questo caso è indexedSql . string No
description Descrizione dell'origine delle informazioni. string No
encryptionKey Chiave gestita dal cliente per crittografare le informazioni riservate sia nell'origine delle informazioni che negli oggetti generati. oggetto No
indexedSqlParameters Parametri specifici delle fonti di conoscenza indicizzate di Azure SQL, descritti nella sezione seguente. oggetto

indexedSqlParameters proprietà

Le proprietà seguenti sono specifiche dell'oggetto indexedSqlParameters di un'origine dati Azure SQL per una knowledge base indicizzata.

Proprietà Description Type Modificabile Obbligatorio
connectionString Una stringa di connessione con autenticazione SQL o identità gestita per database SQL di Azure o Istanza gestita di SQL di Azure. Per i formati di credenziali supportati, vedere i prerequisiti dell'indicizzatore Azure SQL. string No
tableOrView Nome completo della tabella o della vista SQL da inserire, specificato nel schema.objectName formato . Una fonte di dati attinge dati da una sola tabella o da una sola vista. string No
highWaterMarkColumn Obbligatorio quando tableOrView fa riferimento a una visualizzazione. Il nome della colonna utilizzata per il rilevamento delle variazioni rispetto al valore massimo. È consigliabile usare una rowversion colonna. Per ulteriori informazioni, consultare Politica di rilevamento delle modifiche al limite massimo. string No Condizionale
contentColumns Un array di mappature di colonna che definisce quali colonne SQL vengono trattate come contenuto di testo ricercabile nell'indice generato. Ogni mappatura deve usare Edm.String come searchFieldType. Array No No
embeddingColumns Un array di mappature di embedding che definisce quali colonne SQL vengono utilizzate per generare campi vettore. Array No No
ingestionParameters Un sottoinsieme dei parametri di acquisizione dell'origine di conoscenza standard. oggetto No

Mappatura delle colonne

contentColumns utilizza il seguente schema di mappatura delle colonne.

Proprietà Description Type Modificabile Obbligatorio
name Nome del campo visualizzato nell'indice Azure AI Search generato. string No
sourceField Colonna SQL il cui valore popola il campo di destinazione. string No
searchFieldType Tipo di campo Azure AI Search per il campo generato. Per contentColumns, deve essere Edm.String. string No

Mappatura incorporata

embeddingColumns utilizza la seguente forma della mappatura di embedding.

Proprietà Description Type Modificabile Obbligatorio
name Nome del campo vettore di destinazione creato dal servizio nell'indice generato. Ad esempio, potrebbe essere descriptionVector. string No
sourceField Colonna SQL il cui contenuto di testo viene inviato al modello di incorporamento. string No

ingestionParameters proprietà

Per le fonti di conoscenza indicizzate di Azure SQL, lo schema ingestionParameters esistente rimane invariato, ma si applicano solo le seguenti proprietà.

Proprietà Description Type Modificabile Obbligatorio
contentExtractionMode Deve essere "minimal". Altre modalità non sono supportate perché Azure SQL'inserimento è basato su righe e non estrae contenuto da documenti binari. string No No
embeddingModel Modello di incorporamento OpenAI Azure usato per vettorizzare le colonne elencate in embeddingColumns. Obbligatorio solo quando embeddingColumns viene specificato. oggetto Solo apiKey e deploymentId sono modificabili Condizionale
identity Identità gestita assegnata dall'utente facoltativa usata per l'autenticazione per Azure SQL e Azure OpenAI. oggetto No
ingestionSchedule Pianificazione facoltativa che controlla la frequenza con cui viene eseguito l'indicizzatore generato. oggetto No

L'estrazione di immagini e la verbalizzazione delle immagini non sono supportate per le origini delle informazioni indicizzate Azure SQL, pertanto chatCompletionModel, assetStore, aiServices e le impostazioni correlate all'immagine non hanno alcun effetto.

Regole di impostazione dei valori predefiniti e di convalida

Le seguenti impostazioni predefinite si applicano quando si crea un'origine dati di conoscenza di Azure SQL indicizzata.

  • Se si omette contentColumns, il servizio esegue automaticamente il mapping delle colonne SQL che possono essere rappresentate in modo sicuro come testo nei campi nell'indice generato, usando un mapping 1:1 in cui Edm.String è nameuguale a sourceField .

  • Se si omette embeddingColumns, il servizio non crea campi vettoriali e non configura una competenza di incorporamento.

  • embeddingColumns è indipendente da contentColumns. Per fare in modo che i vettori corrispondano al testo recuperabile, includere la stessa colonna SQL in entrambe le matrici.

  • La chiave primaria della tabella o della vista di origine viene individuata automaticamente. Le sostituzioni esplicite non sono supportate e l'origine deve avere una chiave primaria a valore singolo.

Controllare lo stato dell'ingestione

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

Annotazioni

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 generati

Quando si crea questa origine conoscenze, Azure AI Search genera automaticamente un'origine dati, un set di competenze, un indicizzatore e un indice. La risposta di creazione elenca ogni oggetto in createdResources.

Questi oggetti vengono generati in base a un modello fisso e i relativi nomi si basano sul nome dell'origine conoscenze. Non è possibile modificare i nomi degli oggetti. Evitare di modificare direttamente questi oggetti, perché le modifiche possono introdurre errori o incompatibilità che interrompono la pipeline dell'indicizzatore.

È possibile usare il portale di Azure per convalidare la creazione di oggetti. 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'origine dati per verificare la connessione all'archivio dati. La connessione utilizza una stringa di connessione o un'identità gestita, in base a come è stata configurata l'origine delle informazioni.

  3. Controlla il set di competenze per vedere come il contenuto viene suddiviso in blocchi ed eventualmente vettorializzato.

  4. Controllare l'indice per vedere in che modo il contenuto viene indicizzato ed esposto per il recupero, inclusi i campi ricercabili e filtrabili e quali campi archiviano vettori per la ricerca di somiglianza. Usa Search Explorer per eseguire query sull'indice generato.

Assegnare a una knowledge base

Se sei soddisfatto della fonte di conoscenza, aggiungila a una base di conoscenza.

Eseguire una query su una base di conoscenza

Dopo aver configurato la Knowledge Base, chiamare l'azione di recupero o l'endpoint MCP per eseguire una query sull'origine della knowledge base.

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 un indice e una pipeline di indicizzazione, 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:

     {
         "@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.

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

    Riferimento:Basi di conoscenza - 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