Creazione di una knowledge base connettendola a un datastore 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à.

Creazione di una knowledge base connettendola a un datastore strutturato

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

  • Configurazione del motore di query

    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 dal datastore. Puoi scegliere Amazon Redshift 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.

  • Configurazione di archiviazione

    La configurazione per il datastore 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

  • (Opzionale) Configurazioni delle query

    È possibile utilizzare configurazioni di query opzionali per migliorare l’accuratezza della generazione di SQL:

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

    • Descrizioni: fornisce metadati o informazioni supplementari su tabelle o colonne. Puoi includere descrizioni delle tabelle o delle colonne, note di utilizzo o qualsiasi attributo aggiuntivo. Le descrizioni aggiunte possono migliorare la generazione di query SQL fornendo informazioni e contesto 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 SQL. Questo campo è fondamentale se desideri 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 le inclusioni, tutte le altre tabelle e colonne vengono ignorate. Se si specificano le esclusioni, le tabelle e le colonne specificate vengono ignorate.

      Nota

      Le inclusioni e le esclusioni non sostituiscono i guardrail e sono destinate esclusivamente a migliorare la precisione del modello.

    • Query selezionate: 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 aiutano 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 di SQL generativo.

Espandi la sezione corrispondente al tuo caso d’uso:

Per connetterti a un data store strutturato utilizzando ilConsole di gestione AWS, procedi come segue:

  1. Accedi a Console di gestione AWS con un'identità IAM che dispone delle autorizzazioni per utilizzare la console Amazon Bedrock. Quindi, apri la console Amazon Bedrock in 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. Configura i seguenti dettagli per la knowledge base:

    1. (Opzionale) Modifica il nome predefinito e fornisci una descrizione per la tua knowledge base.

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

    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 oppure puoi scegliere un ruolo personalizzato che hai creato. Per ulteriori informazioni sulla creazione di un ruolo personalizzato, consulta Configurazione del motore di query e delle autorizzazioni per la creazione di una knowledge base con un datastore strutturato.

    4. (Opzionale) Aggiungi tag da associare alla knowledge base. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse 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. Scegli il cluster o il gruppo di lavoro da utilizzare.

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

    3. Seleziona il datastore in cui archiviare i metadati. Quindi scegli o immetti il nome del database.

    4. (Opzionale) Modifica le configurazioni delle query in base alle esigenze. Fai riferimento alla parte iniziale di questo argomento per ulteriori informazioni sulle diverse configurazioni.

    5. Scegli Next (Successivo).

  6. Esamina le configurazioni della knowledge base e modifica le sezioni come necessario. 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
Name Un nome per la knowledge base
roleArn Un ruolo di servizio della knowledge base con 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, specifica SQL come type e includi il campo sqlKnowledgeBaseConfiguration.

I seguenti campi sono opzionali.

Campo Utilizzo
description Per includere una descrizione per la knowledge base.
clientToken Garantire che la richiesta API venga completata solo una volta. Per ulteriori informazioni, consulta Garanzia di idempotenza.
tag Associare tag al flusso. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse Amazon Bedrock.

SQLKnowledgeBaseConfiguration dipende 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:

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

Specifica 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 in RedshiftProvisionedAuthConfiguration senza ulteriori campi.

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

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

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

Se autorizzi conAWS 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": } }

Specifica l’ARN del tuo 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 in RedshiftServerlessAuthConfiguration senza ulteriori campi.

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

Se autorizzi conAWS 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 viene mappato su un array contenente un singolo RedshiftQueryEngineStorageConfiguration, il cui formato dipende da dove sono archiviati i dati.

Se i dati sono archiviati inAWS 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 mappare tableNames.

Nota

Immetti i nomi delle tabelle nello schema descritto in Query tra database (${databaseName}.${tableName}). Puoi includere tutte le tabelle specificando ${databaseName.*}.

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

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

Specifica il nome del database Amazon Redshift nel campo databaseName.

Nota

Immetti i nomi delle tabelle nello schema descritto in Query tra database (${databaseName}.${tableName}). Puoi 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 corrisponde ai seguenti elementi QueryGenerationConfigurationche puoi utilizzare per configurare la modalità di interrogazione dei 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 includi 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, verifica 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ù ampio rispetto a un nome breve di tabella o colonna. Puoi fare quanto segue:

  • Per aggiungere una descrizione per una tabella, includete un QueryGenerationTableoggetto nell'tablesarray. In quell’oggetto, specifica il nome della tabella nel campo name e una descrizione nel campo description, 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. Nell’oggetto QueryGenerationColumn, specifica il nome della tabella nel campo name e una descrizione nel campo description, 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

    Immetti i nomi delle tabelle e delle colonne nello schema descritto in Query tra database. Se il database è inAWS 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 campo inclusion:

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

  • EXCLUDE: solo 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, specifica il nome della tabella nel campo name e se includerlo o escluderlo nel campo inclusion, come nell’esempio seguente:

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

    Il motore di query non aggiunge Table A nel 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. Nell’oggetto QueryGenerationColumn, includi il nome della colonna nel campo name e se includerlo o escluderlo nel campo inclusion, come nell’esempio seguente:

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

    La generazione SQL ignora Column A in 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 include Table A, ma esclude Column A al 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 matrice 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.