Crea una knowledge base collegandoti a un archivio dati strutturato - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea una knowledge base collegandoti a un archivio dati strutturato

Per connettere una knowledge base a un data store strutturato, specifica i seguenti componenti:

  • Configurazione del motore di interrogazione

    La configurazione per il servizio di calcolo che eseguirà le query SQL generate. Il motore di query viene utilizzato per convertire le query degli utenti in linguaggio naturale in query SQL che possono essere utilizzate per estrarre dati dall'archivio dati. Puoi scegliere tra Amazon Redshift o Amazon Athena come motore di query. Quando scegli questa configurazione, devi specificare:

    • I metadati della connessione di calcolo come l'ID del cluster o l'ARN del gruppo di lavoro a seconda del motore di query scelto.

    • Il metodo di autenticazione per l'utilizzo del motore di query, che può utilizzare un ruolo del servizio IAM con le autorizzazioni appropriate, un utente del database del motore di query o un AWS Secrets Manager segreto collegato alle credenziali del database.

      Nota

      Se scegli Athena come motore di query, è supportata solo l'autenticazione basata sui ruoli di servizio IAM.

  • Configurazione dello storage

    La configurazione per il data store contenente i tuoi dati. Puoi connetterti ad Amazon Redshift Provisioned o Amazon Redshift Serverless e utilizzare Amazon Redshift o come archivio dati. AWS Glue Data Catalog

  • (Facoltativo) Configurazioni di interrogazione

    È possibile utilizzare configurazioni di query opzionali per migliorare la precisione della generazione SQL:

    • Tempo massimo di interrogazione: il periodo di tempo dopo il quale la query scade.

    • Descrizioni: fornisce metadati o informazioni supplementari su tabelle o colonne. È possibile includere descrizioni delle tabelle o delle colonne, note sull'utilizzo o qualsiasi attributo aggiuntivo. Le descrizioni aggiunte possono migliorare la generazione di query SQL fornendo contesto e informazioni aggiuntivi sulla struttura delle tabelle o delle colonne.

    • Inclusioni ed esclusioni: specifica un set di tabelle o colonne da includere o escludere per la generazione di SQL. Questo campo è fondamentale se si desidera limitare l'ambito delle query SQL a un sottoinsieme definito di tabelle o colonne disponibili. Questa opzione può aiutare a ottimizzare il processo di generazione riducendo i riferimenti a tabelle o colonne non necessari.

      Se si specificano inclusioni, tutte le altre tabelle e colonne vengono ignorate. Se si specificano delle esclusioni, le tabelle e le colonne specificate vengono ignorate.

      Nota

      Le inclusioni e le esclusioni non sostituiscono i guardrail e servono solo a migliorare la precisione del modello.

    • Interrogazioni curate: una serie di esempi di domande e risposte predefiniti. Le domande sono scritte come query in linguaggio naturale (NLQ) e le risposte sono le query SQL corrispondenti. Questi esempi facilitano il processo di generazione di SQL fornendo esempi dei tipi di query da generare. Servono come punti di riferimento per migliorare l'accuratezza e la pertinenza degli output SQL generativi.

Espandi la sezione corrispondente al tuo caso d'uso:

Per connetterti a un data store strutturato utilizzando il AWS Management Console, procedi come segue:

  1. Accedi all' AWS Management Console utilizzo di un ruolo IAM con autorizzazioni Amazon Bedrock e apri la console Amazon Bedrock all'indirizzo. https://console.aws.amazon.com/bedrock/

  2. Nel riquadro di navigazione a sinistra, scegli Knowledge base.

  3. Nella sezione Knowledge base, scegli Crea, quindi seleziona Knowledge base con archivio dati strutturato.

  4. Imposta i seguenti dettagli per la knowledge base:

    1. (Facoltativo) Modificare il nome predefinito e fornire una descrizione per la knowledge base.

    2. Seleziona il motore di query da utilizzare per recuperare i dati dal tuo data store.

    3. Scegli un ruolo di servizio IAM con le autorizzazioni appropriate per creare e gestire questa knowledge base. Puoi lasciare che Amazon Bedrock crei il ruolo di servizio o scegliere un ruolo personalizzato che hai creato. Per ulteriori informazioni sulla creazione di un ruolo personalizzato, consultaConfigura il motore di query e le autorizzazioni per creare una knowledge base con archivio dati strutturato.

    4. (Facoltativo) Aggiungi tag da associare alla tua knowledge base. Per ulteriori informazioni, consulta Etichettare le risorse di Amazon Bedrock.

    5. Scegli Next (Successivo).

  5. Configura il tuo motore di query:

    1. Seleziona il servizio in cui hai creato un cluster o un gruppo di lavoro. Quindi scegli il cluster o il gruppo di lavoro da utilizzare.

    2. Seleziona il metodo di autenticazione e fornisci i campi necessari.

    3. Seleziona l'archivio dati in cui archiviare i metadati. Quindi, scegli o inserisci il nome del database.

    4. (Facoltativo) Modificate le configurazioni delle interrogazioni secondo necessità. Fate riferimento all'inizio di questo argomento per ulteriori informazioni sulle diverse configurazioni.

    5. Scegli Next (Successivo).

  6. Esamina le configurazioni della Knowledge Base e modifica le sezioni necessarie. Conferma per creare la tua knowledge base.

Per connetterti a un data store strutturato utilizzando l'API Amazon Bedrock, invia una CreateKnowledgeBaserichiesta a un endpoint di build Agents for Amazon Bedrock con il seguente corpo di richiesta generale:

{ "name": "string", "roleArn": "string", "knowledgeBaseConfiguration": { "type": "SQL", "sqlKnowledgeBaseConfiguration": SqlKnowledgeBaseConfiguration }, "description": "string", "clientToken": "string", "tags": { "string": "string" } }

I seguenti campi sono obbligatori.

Campo Descrizione di base
Nome Un nome per la knowledge base
roleArn Un ruolo del servizio della Knowledge Base con le autorizzazioni appropriate. È possibile utilizzare la console per creare automaticamente un ruolo di servizio con le autorizzazioni appropriate.
knowledgeBaseConfiguration Contiene le configurazioni per la knowledge base. Per un database strutturato, specificare SQL type e includere il sqlKnowledgeBaseConfiguration campo.

I seguenti campi sono facoltativi.

Campo Utilizzo
description Per includere una descrizione per la knowledge base.
clientToken Per garantire che la richiesta API venga completata una sola volta. Per ulteriori informazioni, consulta Garantire l'idempotenza.
tags Per associare i tag al flusso. Per ulteriori informazioni, consulta Etichettare le risorse di Amazon Bedrock.

SQLKnowledgeBaseConfigurationDipende dal motore di query utilizzato. Per Amazon Redshift, specifica il type campo come REDSHIFT e includi il redshiftConfiguration campo, che corrisponde a un. RedshiftConfiguration Per il RedshiftConfiguration, configuri i seguenti campi:

È possibile configurare i seguenti tipi di motore di query:

Se i database Amazon Redshift vengono forniti su nodi di calcolo dedicati, il valore del queryEngineConfiguration campo deve essere a RedshiftQueryEngineConfigurationnel seguente formato:

{ "type": "PROVISIONED", "provisionedConfiguration": { "clusterIdentifier": "string", "authConfiguration": RedshiftProvisionedAuthConfiguration }, }

Specificare l'ID del cluster nel campo. clusterIdentifier RedshiftProvisionedAuthConfigurationDipende dal tipo di autorizzazione che stai utilizzando. Seleziona la scheda che corrisponde al tuo metodo di autorizzazione:

IAM role

Se autorizzi con il tuo ruolo IAM, devi specificare solo IAM come tipo nei campi RedshiftProvisionedAuthConfigurationsenza ulteriori campi.

{ "type": "IAM" }
Temporary credentials user name

Se autorizzi con il nome utente del database, specifica type as USERNAME e specifica il nome utente nel databaseUser campo in: RedshiftProvisionedAuthConfig

{ "type": "USERNAME", "databaseUser": "string" }
AWS Secrets Manager

Se autorizzi con AWS Secrets Manager, specifica type as USERNAME_PASSWORD e specifica l'ARN del segreto usernamePasswordSecretArn nel campo in: RedshiftProvisionedAuthConfig

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

Se utilizzi Amazon Redshift Serverless, il valore del queryConfiguration campo deve essere RedshiftQueryEngineConfigurationnel seguente formato:

{ "type": "SERVERLESS", "serverlessConfiguration": { "workgroupArn": "string", "authConfiguration": } }

Specificate l'ARN del vostro gruppo di lavoro nel campo. workgroupArn RedshiftServerlessAuthConfigurationDipende dal tipo di autorizzazione che stai utilizzando. Seleziona la scheda che corrisponde al tuo metodo di autorizzazione:

IAM role

Se autorizzi con il tuo ruolo IAM, devi specificare solo IAM come tipo nei campi RedshiftServerlessAuthConfiguration senza ulteriori campi.

{ "type": "IAM" }
AWS Secrets Manager

Se autorizzi con AWS Secrets Manager, specifica type as USERNAME_PASSWORD e specifica l'ARN del segreto usernamePasswordSecretArn nel campo in: RedshiftServerlessAuthConfiguration

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

Questo campo è mappato su un array contenente un singolo RedshiftQueryEngineStorageConfiguration, il cui formato dipende da dove sono archiviati i dati.

Se i dati sono archiviati in AWS Glue Data Catalog, RedshiftQueryEngineStorageConfiguration devono essere nel seguente formato:

{ "type": "AWS_DATA_CATALOG", "awsDataCatalogConfiguration": { "tableNames": ["string"] } }

Aggiungi il nome di ogni tabella a cui desideri connettere la tua knowledge base nell'array a cui tableNames mappare.

Nota

Immettete i nomi delle tabelle nello schema descritto in Interrogazioni tra database ()${databaseName}.${tableName}. È possibile includere tutte le tabelle specificando. ${databaseName.*}

Se i dati sono archiviati in un database Amazon Redshift, RedshiftQueryEngineStorageConfiguration devono essere nel seguente formato:

{ "type": "string", "redshiftConfiguration": { "databaseName": "string" } }

Specificate il nome del vostro database Amazon Redshift nel databaseName campo.

Nota

Inserisci i nomi delle tabelle secondo lo schema descritto in Interrogazioni tra database (). ${databaseName}.${tableName} È possibile includere tutte le tabelle specificando. ${databaseName.*}

Se il database è montato tramite Amazon SageMaker AI Lakehouse, il nome del database è nel formato. ${db}@${schema}

Questo campo è associato a quanto segue, QueryGenerationConfigurationche puoi utilizzare per configurare il modo in cui vengono richieste le query sui dati:

{ "executionTimeoutSeconds": number, "generationContext": { "tables": [ { "name": "string", "description": "string", "inclusion": "string", "columns": [ { "name": "string", "description": "string", "inclusion": "string" }, ... ] }, ... ], "curatedQueries": [ { "naturalLanguage": "string", "sql": "string" }, ... ] } }

Se desideri che la query scada, specifica la durata del timeout in secondi nel campo. executionTimeoutSeconds

Il generationContext campo è mappato su un QueryGenerationContextoggetto in cui è possibile configurare tutte le opzioni seguenti necessarie.

Importante

Se si include un contesto di generazione, il motore di query fa del suo meglio per applicarlo durante la generazione di SQL. Il contesto di generazione non è deterministico e serve solo a migliorare la precisione del modello. Per garantire l'accuratezza, verificate le query SQL generate.

Per informazioni sui contesti di generazione che puoi includere, espandi le seguenti sezioni:

Per migliorare l'accuratezza della generazione di SQL per l'interrogazione del database, è possibile fornire una descrizione della tabella o della colonna che fornisca un contesto più approfondito rispetto a un nome breve di tabella o colonna. Puoi eseguire le operazioni indicate di seguito:

  • Per aggiungere una descrizione per una tabella, includete un QueryGenerationTableoggetto nell'tablesarray. In quell'oggetto, specificate il nome della tabella nel name campo e una descrizione nel description campo, come nell'esempio seguente:

    { "name": "database.schema.tableA", "description": "Description for Table A" }
  • Per aggiungere una descrizione per una colonna, includete un QueryGenerationTableoggetto nell'tablesarray. In quell'oggetto, specificate il nome della tabella nel name campo e includete il columns campo, che corrisponde a una matrice di QueryGenerationColumn. In un QueryGenerationColumn oggetto, includi il nome della colonna nel name campo e una descrizione nel description campo, come nell'esempio seguente:

    { "name": "database.schema.tableA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] }
  • È possibile aggiungere una descrizione sia per una tabella che per una colonna al suo interno, come nell'esempio seguente:

    { "name": "database.schema.tableA", "description": "Description for Table A", "columns": [ { "name": "columnA", "description": "Description for Column A" } ] }
    Nota

    Immettete i nomi delle tabelle e delle colonne secondo lo schema descritto in Interrogazioni tra database. Se il database è in AWS Glue Data Catalog, il formato è. awsdatacatalog.gluedatabase.table

È possibile suggerire tabelle o colonne da includere o escludere durante la generazione di SQL utilizzando il inclusion campo negli QueryGenerationColumnoggetti QueryGenerationTableand. È possibile specificare uno dei seguenti valori nel inclusion campo:

  • INCLUDE: solo le tabelle o le colonne specificate vengono incluse come contesto durante la generazione di SQL.

  • ESCLUDI: le tabelle o le colonne specificate vengono escluse come contesto durante la generazione di SQL.

È possibile specificare se includere o escludere tabelle o colonne nei seguenti modi:

  • Per includere o escludere una tabella, includete un QueryGenerationTableoggetto nell'tablesarray. In quell'oggetto, specificate il nome della tabella nel name campo e se includerla o escluderla nel inclusion campo, come nell'esempio seguente:

    { "name": "database.schema.tableA", "inclusion": "EXCLUDE" }

    Il motore di query non aggiunge il Table A contesto aggiuntivo per la generazione di SQL.

  • Per includere o escludere una colonna, includete un QueryGenerationTableoggetto nell'tablesarray. In quell'oggetto, specificate il nome della tabella nel name campo e includete il columns campo, che corrisponde a una matrice di QueryGenerationColumn. In un QueryGenerationColumn oggetto, includete il nome della colonna nel name campo e se includerla o escluderla nel inclusion campo, come nell'esempio seguente:

    { "name": "database.schema.tableA", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    La generazione SQL lo Column A ignora Table A nel contesto durante la generazione di SQL.

  • È possibile combinare tabelle e colonne quando si specificano inclusioni o esclusioni, come nell'esempio seguente:

    { "name": "database.schema.tableA", "inclusion": "INCLUDE", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    La generazione SQL includeTable A, ma esclude al Column A suo interno, quando si aggiunge un contesto per la generazione di SQL.

Importante

Le esclusioni di tabelle e colonne non sostituiscono i guardrail. Queste inclusioni ed esclusioni di tabelle e colonne vengono utilizzate come contesto aggiuntivo per il modello da considerare durante la generazione di SQL.

Per migliorare la precisione di un motore di query nella conversione delle query degli utenti in query SQL, potete fornire degli esempi nel curatedQueries campo dell'QueryGenerationContextoggetto, che corrisponde a una serie di oggetti. CuratedQuery Ogni oggetto include i seguenti campi:

  • NaturalLanguage: un esempio di query in linguaggio naturale.

  • sql — La query SQL che corrisponde alla query in linguaggio naturale.