Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d’une base de connaissances en la connectant à un magasin de données structuré
Pour connecter une base de connaissances à un magasin de données structuré, vous devez spécifier les composants suivants :
-
Configuration du moteur de requêtes
Configuration du service de calcul exécutant les requêtes SQL générées. Le moteur de requêtes permet de convertir les requêtes utilisateur en langage naturel en requêtes SQL permettant d’extraire des données de votre magasin de données. Vous pouvez choisir Amazon Redshift comme moteur de requêtes. Lorsque vous choisissez cette configuration, vous devez spécifier :
-
les métadonnées de connexion de calcul, comme l’identifiant du cluster ou l’ARN du groupe de travail, en fonction du moteur de requête choisi ;
-
Méthode d'authentification pour utiliser le moteur de requête, qui peut utiliser un rôle de service IAM doté des autorisations appropriées, un utilisateur de base de données du moteur de requête ou un AWS Secrets Manager secret lié aux informations d'identification de votre base de données.
-
-
Configuration du stockage
Configuration du magasin de données contenant vos données. Vous pouvez vous connecter à Amazon Redshift Provisioned ou Amazon Redshift Serverless et utiliser Amazon Redshift ou comme magasin de données. AWS Glue Data Catalog
-
(Facultatif) Configurations de requêtes
Vous pouvez améliorer la précision de la génération du code SQL à l’aide de configurations de requêtes facultatives :
-
Durée de requête maximale : durée au bout de laquelle la requête expire.
-
Descriptions : fournit des métadonnées ou des informations supplémentaires sur les tables ou les colonnes. Vous pouvez inclure des descriptions des tables ou des colonnes, des notes d’utilisation ou tout autre attribut supplémentaire. Les descriptions que vous ajoutez peuvent améliorer la génération de requêtes SQL en fournissant un contexte et des informations supplémentaires sur la structure des tables ou des colonnes.
-
Inclusions et exclusions : spécifie un ensemble de tables ou de colonnes à inclure ou à exclure pour la génération du code SQL. Ce champ est essentiel si vous souhaitez limiter la portée des requêtes SQL à un sous-ensemble défini de tables ou de colonnes disponibles. Cette option permet d’optimiser le processus de génération en réduisant les références inutiles aux tables ou aux colonnes.
Si vous spécifiez des inclusions, toutes les autres tables et colonnes sont ignorées. Si vous spécifiez des exclusions, les tables et les colonnes que vous spécifiez sont ignorées.
Note
Les inclusions et les exclusions ne remplacent pas les barrières de protection et visent uniquement à améliorer la précision du modèle.
-
Requêtes organisées : ensemble d’exemples de questions et réponses prédéfinis. Les questions sont écrites sous forme de requêtes en langage naturel (NLQ) et les réponses sont la requête SQL correspondante. Ces exemples facilitent le processus de génération du code SQL en fournissant des exemples des types de requêtes à générer. Ils servent de points de référence pour améliorer la précision et la pertinence des sorties SQL génératives.
-
Développez la section correspondant à votre cas d’utilisation :
Pour vous connecter à un magasin de données structuré à l'aide duAWS Management Console, procédez comme suit :
-
Connectez-vous au AWS Management Console avec une identité IAM autorisée à utiliser la console Amazon Bedrock. Ouvrez ensuite la console Amazon Bedrock à l'adresse https://console.aws.amazon.com/bedrock.
-
Dans le volet de navigation de gauche, sélectionnez Bases de connaissances.
-
Dans la section Bases de connaissances, choisissez Créer, puis sélectionnez Base de connaissances avec magasin de données structuré.
-
Configurez les informations suivantes pour la base de connaissances :
-
(Facultatif) Modifiez le nom par défaut et fournissez une description de votre base de connaissances.
-
Sélectionnez le moteur de requêtes à utiliser pour récupérer les données de votre magasin de données.
-
Choisissez un rôle de service IAM doté des autorisations appropriées pour créer et gérer cette base de connaissances. Vous pouvez soit laisser Amazon Bedrock créer le rôle de service, soit choisir un rôle personnalisé que vous avez créé. Pour plus d’informations sur la création d’un rôle personnalisé, consultez Configuration de votre moteur de requêtes et des autorisations nécessaires à la création d’une base de connaissances avec un magasin de données structuré.
-
(Facultatif) Ajoutez des balises à associer à votre base de connaissances. Pour de plus amples informations, veuillez consulter Balisage des ressources Amazon Bedrock.
-
Choisissez Suivant.
-
-
Configurez votre moteur de requêtes :
-
Sélectionnez le service dans lequel vous avez créé un cluster ou un groupe de travail. Choisissez ensuite le cluster ou groupe de travail à utiliser.
-
Sélectionnez la méthode d’authentification et renseignez les champs nécessaires.
-
Sélectionnez le magasin de données dans lequel vous souhaitez stocker vos métadonnées. Ensuite, choisissez ou saisissez le nom de la base de données.
-
(Facultatif) Modifiez les configurations de requêtes si nécessaire. Consultez le début de cette rubrique pour plus d’informations sur différentes configurations.
-
Choisissez Suivant.
-
-
Passez en revue les configurations de votre base de connaissances et modifiez toute section si nécessaire. Confirmez pour créer votre base de connaissances.
Pour vous connecter à un magasin de données structuré à l'aide de l'API Amazon Bedrock, envoyez une CreateKnowledgeBasedemande à un point de terminaison Agents for Amazon Bedrock au moment de la création avec le corps de demande général suivant :
{ "name": "string", "roleArn": "string", "knowledgeBaseConfiguration": { "type": "SQL", "sqlKnowledgeBaseConfiguration": SqlKnowledgeBaseConfiguration }, "description": "string", "clientToken": "string", "tags": { "string": "string" } }
Les champs suivants sont obligatoires :
| Champ | Description de base |
|---|---|
| Name | Nom de la base de connaissances |
| roleArn | Rôle de service de base de connaissances avec les autorisations appropriées. La console vous permet de créer automatiquement un rôle de service avec les autorisations appropriées. |
| knowledgeBaseConfiguration | Contient des configurations pour la base de connaissances. Pour une base de données structurée, spécifiez SQL comme type et incluez le champ sqlKnowledgeBaseConfiguration. |
Les champs suivants sont facultatifs :
| Champ | Utilisation |
|---|---|
| description | Permet d’inclure une description de la base de connaissances. |
| clientToken | Pour garantir que la demande d’API n’est exécutée qu’une seule fois. Pour plus d’informations, consultez Garantie de l’idempotence. |
| tags | Pour associer des balises au flux. Pour de plus amples informations, veuillez consulter Balisage des ressources Amazon Bedrock. |
La SQLKnowledgeBaseConfiguration dépend du moteur de requêtes que vous utilisez. Pour Amazon Redshift, spécifiez le type champ sous la forme REDSHIFT et incluez le redshiftConfiguration champ, qui correspond à un. RedshiftConfiguration Pour le RedshiftConfiguration, vous configurez les champs suivants :
Vous pouvez configurer les types de moteurs de requêtes suivants :
Si vos bases de données Amazon Redshift sont mises en service sur des nœuds de calcul dédiés, la valeur du queryEngineConfiguration champ doit être RedshiftQueryEngineConfigurationau format suivant :
{ "type": "PROVISIONED", "provisionedConfiguration": { "clusterIdentifier": "string", "authConfiguration": RedshiftProvisionedAuthConfiguration }, }
Spécifiez l’identifiant du cluster dans le champ clusterIdentifier. RedshiftProvisionedAuthConfigurationCela dépend du type d'autorisation que vous utilisez. Cliquez sur l’onglet qui correspond à votre méthode d’autorisation :
Si vous utilisez Amazon Redshift Serverless, la valeur du queryConfiguration champ doit être RedshiftQueryEngineConfigurationau format suivant :
{ "type": "SERVERLESS", "serverlessConfiguration": { "workgroupArn": "string", "authConfiguration": } }
Spécifiez l’ARN de votre groupe de travail dans le champ workgroupArn. RedshiftServerlessAuthConfigurationCela dépend du type d'autorisation que vous utilisez. Cliquez sur l’onglet qui correspond à votre méthode d’autorisation :
Ce champ correspond à un tableau contenant un seul RedshiftQueryEngineStorageConfiguration, dont le format dépend de l'endroit où vos données sont stockées.
Si vos données sont stockées dansAWS Glue Data Catalog, elles RedshiftQueryEngineStorageConfiguration doivent être au format suivant :
{ "type": "AWS_DATA_CATALOG", "awsDataCatalogConfiguration": { "tableNames": ["string"] } }
Ajoutez le nom de chaque table à laquelle vous souhaitez connecter votre base de connaissances dans le tableau auquel tableNames est mappé.
Note
Saisissez les noms de table selon le modèle décrit sous Requêtes entre bases de données (${databaseName}.${tableName}). Vous pouvez inclure toutes les tables en spécifiant ${databaseName.*}.
Si vos données sont stockées dans une base de données Amazon Redshift, la configuration RedshiftQueryEngineStorageConfiguration doit être au format suivant :
{ "type": "string", "redshiftConfiguration": { "databaseName": "string" } }
Spécifiez le nom de votre base de données Amazon Redshift dans le champ databaseName.
Note
Saisissez les noms de table selon le modèle décrit sous Requêtes entre bases de données (${databaseName}.${tableName}). Vous pouvez inclure toutes les tables en spécifiant ${databaseName.*}.
Si votre base de données est montée via Amazon SageMaker AI Lakehouse, le nom de la base de données est au format. ${db}@${schema}
Ce champ correspond aux éléments suivants QueryGenerationConfigurationque vous pouvez utiliser pour configurer la manière dont vos données sont interrogées :
{ "executionTimeoutSeconds": number, "generationContext": { "tables": [ { "name": "string", "description": "string", "inclusion": "string", "columns": [ { "name": "string", "description": "string", "inclusion": "string" }, ... ] }, ... ], "curatedQueries": [ { "naturalLanguage": "string", "sql": "string" }, ... ] } }
Si vous souhaitez que la requête expire, spécifiez le délai d’expiration en secondes dans le champ executionTimeoutSeconds.
Le generationContext champ correspond à un QueryGenerationContextobjet dans lequel vous pouvez configurer autant d'options suivantes que vous le souhaitez.
Important
Si vous incluez un contexte de génération, le moteur de requêtes fait de son mieux pour l’appliquer lors de la génération du code SQL. Le contexte de génération n’est pas déterministe et vise uniquement à améliorer la précision du modèle. Pour garantir l’exactitude, vérifiez les requêtes SQL générées.
Pour en savoir plus sur les contextes de génération que vous pouvez inclure, développez les sections suivantes :
Pour améliorer la précision de la génération du code SQL lors de l’interrogation de la base de données, vous pouvez fournir une description de la table ou colonne qui fournit davantage de contexte qu’un court nom de table ou de colonne. Vous pouvez effectuer les opérations suivantes :
-
Pour ajouter une description à un tableau, incluez un QueryGenerationTableobjet dans le
tablestableau. Dans cet objet, spécifiez le nom de la table dans le champnameet une description dans le champdescription, comme dans l’exemple suivant :{ "name": "database.schema.tableA", "description": "Description for Table A" } -
Pour ajouter une description à une colonne, incluez un QueryGenerationTableobjet dans le
tablestableau. Dans cet objet, spécifiez le nom de la table dans lenamechamp et incluez lecolumnschamp, qui correspond à un tableau de QueryGenerationColumn. Dans un objetQueryGenerationColumn, incluez le nom de la colonne dans le champnameet une description dans le champdescription, comme dans l’exemple suivant :{ "name": "database.schema.tableA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] } -
Vous pouvez ajouter une description de table et une description de colonne, comme dans l’exemple suivant :
{ "name": "database.schema.tableA", "description": "Description for Table A", "columns": [ { "name": "columnA", "description": "Description for Column A" } ] }Note
Saisissez les noms de table et de colonne selon le modèle décrit sous Requêtes entre bases de données. Si votre base de données est au formatAWS Glue Data Catalog, le format est
awsdatacatalog.gluedatabase.table.
Vous pouvez suggérer des tables ou des colonnes à inclure ou à exclure lors de la génération de code SQL en utilisant le inclusion champ dans les QueryGenerationColumnobjets QueryGenerationTableet. Vous pouvez spécifier l’une des valeurs suivantes dans le champ inclusion :
-
INCLUDE : seules les tables ou colonnes que vous spécifiez sont incluses en tant que contexte lors de la génération du code SQL.
-
EXCLUDE : les tables ou colonnes que vous spécifiez sont exclues en tant que contexte lors de la génération du code SQL.
Vous pouvez indiquer si vous souhaitez inclure ou exclure des tables ou colonnes comme suit :
-
Pour inclure ou exclure une table, incluez un QueryGenerationTableobjet dans le
tablestableau. Dans cet objet, spécifiez le nom de la table dans le champnameet indiquez si vous souhaitez l’inclure ou l’exclure dans le champinclusion, comme dans l’exemple suivant :{ "name": "database.schema.tableA", "inclusion": "EXCLUDE" }Le moteur de requêtes n’ajoute pas
Table Adans le contexte supplémentaire pour générer du code SQL. -
Pour inclure ou exclure une colonne, incluez un QueryGenerationTableobjet dans le
tablestableau. Dans cet objet, spécifiez le nom de la table dans lenamechamp et incluez lecolumnschamp, qui correspond à un tableau de QueryGenerationColumn. Dans un objetQueryGenerationColumn, incluez le nom de la colonne dans le champnameet indiquez si vous souhaitez l’inclure ou l’exclure dans le champinclusion, comme dans l’exemple suivant :{ "name": "database.schema.tableA", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }La génération du code SQL ignore
Column AdansTable Adans le contexte. -
Vous pouvez combiner des tables et des colonnes lorsque vous spécifiez des inclusions ou des exclusions, comme dans l’exemple suivant :
{ "name": "database.schema.tableA", "inclusion": "INCLUDE", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }La génération du code SQL inclut
Table A, mais en exclutColumn Alors de l’ajout d’un contexte.
Important
Les exclusions de tables et de colonnes ne remplacent pas les barrières de protection. Ces inclusions et exclusions de tables et de colonnes servent de contexte supplémentaire à prendre en compte par le modèle lors de la génération du code SQL.
Pour améliorer la précision d'un moteur de requêtes lors de la conversion des requêtes utilisateur en requêtes SQL, vous pouvez fournir des exemples dans le curatedQueries champ de l'QueryGenerationContextobjet, qui correspond à un tableau d'CuratedQueryobjets. Chaque objet contient les champs suivants :
-
naturalLanguage : exemple de requête en langage naturel.
-
sql : requête SQL correspondant à la requête en langage naturel.