Crie uma base de conhecimento conectando-se a um armazenamento de dados estruturado - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie uma base de conhecimento conectando-se a um armazenamento de dados estruturado

Para conectar uma base de conhecimento a um armazenamento de dados estruturado, você especifica os seguintes componentes:

  • Configuração do mecanismo de consulta

    A configuração do serviço de computação que executará as consultas SQL geradas. O mecanismo de consulta é usado para converter consultas de usuários de linguagem natural em consultas SQL que podem ser usadas para extrair dados do seu armazenamento de dados. Você pode escolher entre o Amazon Redshift ou o Amazon Athena como seu mecanismo de consulta. Ao escolher essa configuração, você deve especificar:

    • Os metadados da conexão computacional, como o ID do cluster ou o ARN do grupo de trabalho, dependendo do mecanismo de consulta escolhido.

    • O método de autenticação para usar o mecanismo de consulta, que pode ser usar uma função de serviço do IAM com as permissões apropriadas, um usuário do banco de dados do mecanismo de consulta ou um AWS Secrets Manager segredo vinculado às suas credenciais do banco de dados.

      nota

      Se você escolher o Athena como seu mecanismo de consulta, somente a autenticação baseada na função de serviço do IAM será suportada.

  • Configuração de armazenamento

    A configuração do armazenamento de dados que contém seus dados. Você pode se conectar ao Amazon Redshift Provisioned ou ao Amazon Redshift Serverless e usar o Amazon Redshift ou como seu armazenamento de dados. AWS Glue Data Catalog

  • (Opcional) Configurações de consulta

    Você pode usar configurações de consulta opcionais para melhorar a precisão da geração de SQL:

    • Tempo máximo de consulta — A quantidade de tempo após o qual a consulta expira.

    • Descrições — Fornece metadados ou informações complementares sobre tabelas ou colunas. Você pode incluir descrições das tabelas ou colunas, notas de uso ou quaisquer atributos adicionais. As descrições adicionadas podem melhorar a geração de consultas SQL fornecendo contexto e informações adicionais sobre a estrutura das tabelas ou colunas.

    • Inclusões e exclusões — especifica um conjunto de tabelas ou colunas a serem incluídas ou excluídas para geração de SQL. Esse campo é crucial se você quiser limitar o escopo das consultas SQL a um subconjunto definido de tabelas ou colunas disponíveis. Essa opção pode ajudar a otimizar o processo de geração reduzindo referências desnecessárias de tabelas ou colunas.

      Se você especificar inclusões, todas as outras tabelas e colunas serão ignoradas. Se você especificar exclusões, as tabelas e colunas especificadas serão ignoradas.

      nota

      As inclusões e exclusões não substituem as grades de proteção e se destinam apenas a melhorar a precisão do modelo.

    • Consultas selecionadas — Um conjunto de exemplos predefinidos de perguntas e respostas. As perguntas são escritas como consultas de linguagem natural (NLQ) e as respostas são a consulta SQL correspondente. Esses exemplos ajudam o processo de geração de SQL fornecendo exemplos dos tipos de consultas que devem ser geradas. Eles servem como pontos de referência para melhorar a precisão e a relevância das saídas SQL generativas.

Expanda a seção que corresponde ao seu caso de uso:

Para se conectar a um armazenamento de dados estruturado usando o AWS Management Console, faça o seguinte:

  1. Faça login no AWS Management Console com uma identidade do IAM que tenha permissões para usar o console Amazon Bedrock. Em seguida, abra o console Amazon Bedrock em https://console.aws.amazon.com/bedrock/.

  2. No painel de navegação esquerdo, escolha Bases de conhecimento.

  3. Na seção Bases de conhecimento, escolha Criar e selecione Base de conhecimento com armazenamento de dados estruturado.

  4. Configure os seguintes detalhes para a base de conhecimento:

    1. (Opcional) Altere o nome padrão e forneça uma descrição para sua base de conhecimento.

    2. Selecione o mecanismo de consulta a ser usado para recuperar dados do seu armazenamento de dados.

    3. Escolha uma função de serviço do IAM com as permissões adequadas para criar e gerenciar essa base de conhecimento. Você pode permitir que o Amazon Bedrock crie o perfil de serviço ou escolher um perfil personalizado criado por você. Para obter mais informações sobre a criação de um papel personalizado, consulteConfigure seu mecanismo de consulta e permissões para criar uma base de conhecimento com armazenamento de dados estruturado.

    4. (Opcional) Adicione tags para associar à sua base de conhecimento. Para obter mais informações, consulte Marcação de recursos do Amazon Bedrock.

    5. Escolha Próximo.

  5. Configure seu mecanismo de consulta:

    1. Selecione o serviço no qual você criou um cluster ou grupo de trabalho. Em seguida, escolha o cluster ou o grupo de trabalho a ser usado.

    2. Selecione o método de autenticação e forneça os campos necessários.

    3. Selecione o armazenamento de dados no qual armazenar seus metadados. Em seguida, escolha ou insira o nome do banco de dados.

    4. (Opcional) Modifique as configurações da consulta conforme necessário. Consulte o início deste tópico para obter mais informações sobre diferentes configurações.

    5. Escolha Próximo.

  6. Revise as configurações da sua base de conhecimento e edite todas as seções conforme necessário. Confirme para criar sua base de conhecimento.

Para se conectar a um armazenamento de dados estruturado usando a API do Amazon Bedrock, envie uma CreateKnowledgeBasesolicitação com um endpoint de tempo de construção do Agents for Amazon Bedrock com o seguinte corpo de solicitação geral:

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

Os campos a seguir são obrigatórios.

Campo Descrição básica
Name Um nome para a base de conhecimento
roleArn Uma função de serviço da base de conhecimento com as permissões adequadas. Você pode usar o console para criar automaticamente uma função de serviço com as permissões adequadas.
knowledgeBaseConfiguration Contém configurações para a base de conhecimento. Para um banco de dados estruturado, especifique SQL como type e inclua o sqlKnowledgeBaseConfiguration campo.

Os campos a seguir são opcionais.

Campo Use
description Incluir uma descrição para a base de conhecimento.
clientToken Para garantir que a solicitação de API seja concluída apenas uma vez. Para obter mais informações, consulte Ensuring idempotency.
tags Para associar tags ao fluxo. Para obter mais informações, consulte Marcação de recursos do Amazon Bedrock.

SQLKnowledgeBaseConfigurationDepende do mecanismo de consulta que você usa. Para o Amazon Redshift, especifique o type campo como REDSHIFT e inclua o redshiftConfiguration campo, que mapeia para a. RedshiftConfiguration Para o RedshiftConfiguration, você configura os seguintes campos:

Você pode configurar os seguintes tipos de mecanismo de consulta:

Se seus bancos de dados do Amazon Redshift forem provisionados em nós de computação dedicados, o valor do queryEngineConfiguration campo deverá ser a no seguinte formato: RedshiftQueryEngineConfiguration

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

Especifique a ID do cluster no clusterIdentifier campo. RedshiftProvisionedAuthConfigurationDepende do tipo de autorização que você está usando. Selecione a guia que corresponde ao seu método de autorização:

IAM role

Se você autorizar com sua função do IAM, precisará especificar somente IAM o tipo no RedshiftProvisionedAuthConfigurationsem campos adicionais.

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

Se você autorizar com o nome de usuário do banco de dados, especifique o type como USERNAME e especifique o nome do usuário no databaseUser RedshiftProvisionedAuthConfig campo em:

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

Se você autorizar com AWS Secrets Manager, especifique o type como USERNAME_PASSWORD e especifique o ARN do segredo usernamePasswordSecretArn no campo em: RedshiftProvisionedAuthConfig

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

Se você estiver usando o Amazon Redshift Serverless, o valor do queryConfiguration campo deve ser a RedshiftQueryEngineConfigurationno seguinte formato:

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

Especifique o ARN do seu grupo de trabalho no campo. workgroupArn RedshiftServerlessAuthConfigurationDepende do tipo de autorização que você está usando. Selecione a guia que corresponde ao seu método de autorização:

IAM role

Se você autorizar com sua função do IAM, precisará especificar somente IAM o tipo no RedshiftServerlessAuthConfiguration sem campos adicionais.

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

Se você autorizar com AWS Secrets Manager, especifique o type como USERNAME_PASSWORD e especifique o ARN do segredo usernamePasswordSecretArn no campo em: RedshiftServerlessAuthConfiguration

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

Esse campo é mapeado para uma matriz contendo um único RedshiftQueryEngineStorageConfiguration, cujo formato depende de onde seus dados estão armazenados.

Se seus dados estiverem armazenados AWS Glue Data Catalog, eles RedshiftQueryEngineStorageConfiguration devem estar no seguinte formato:

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

Adicione o nome de cada tabela à qual você deseja conectar sua base de conhecimento na matriz para a qual é tableNames mapeada.

nota

Insira os nomes das tabelas no padrão descrito em Consultas entre bancos de dados ()${databaseName}.${tableName}. Você pode incluir todas as tabelas ${databaseName.*} especificando.

Se seus dados estiverem armazenados em um banco de dados do Amazon Redshift, eles RedshiftQueryEngineStorageConfiguration devem estar no seguinte formato:

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

Especifique o nome do seu banco de dados do Amazon Redshift no databaseName campo.

nota

Insira os nomes das tabelas no padrão descrito em Consultas entre bancos de dados ()${databaseName}.${tableName}. Você pode incluir todas as tabelas ${databaseName.*} especificando.

Se seu banco de dados for montado por meio do Amazon SageMaker AI Lakehouse, o nome do banco de dados está no formato. ${db}@${schema}

Esse campo é mapeado para o seguinte, QueryGenerationConfigurationque você pode usar para configurar como seus dados são consultados:

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

Se você quiser que a consulta atinja o tempo limite, especifique a duração do tempo limite em segundos no executionTimeoutSeconds campo.

O generationContext campo mapeia para um QueryGenerationContextobjeto no qual você pode configurar quantas das opções a seguir forem necessárias.

Importante

Se você incluir um contexto de geração, o mecanismo de consulta fará o possível para aplicá-lo ao gerar SQL. O contexto de geração não é determinístico e se destina apenas a melhorar a precisão do modelo. Para garantir a precisão, verifique as consultas SQL geradas.

Para obter informações sobre contextos de geração que você pode incluir, expanda as seguintes seções:

Para melhorar a precisão da geração de SQL para consultar o banco de dados, você pode fornecer uma descrição para a tabela ou coluna que forneça mais contexto do que um nome curto de tabela ou coluna. Você pode fazer o seguinte:

  • Para adicionar uma descrição para uma tabela, inclua um QueryGenerationTableobjeto na tables matriz. Nesse objeto, especifique o nome da tabela no name campo e uma descrição no description campo, como no exemplo a seguir:

    { "name": "database.schema.tableA", "description": "Description for Table A" }
  • Para adicionar uma descrição para uma coluna, inclua um QueryGenerationTableobjeto na tables matriz. Nesse objeto, especifique o nome da tabela no name campo e inclua o columns campo, que mapeia para uma matriz de QueryGenerationColumn. Em um QueryGenerationColumn objeto, inclua o nome da coluna no name campo e uma descrição no description campo, como no exemplo a seguir:

    { "name": "database.schema.tableA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] }
  • Você pode adicionar uma descrição para uma tabela e uma coluna nela, como no exemplo a seguir:

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

    Insira os nomes das tabelas e colunas no padrão descrito em Consultas entre bancos de dados. Se seu banco de dados estiver em AWS Glue Data Catalog, o formato éawsdatacatalog.gluedatabase.table.

Você pode sugerir tabelas ou colunas para incluir ou excluir ao gerar SQL usando o inclusion campo nos QueryGenerationColumnobjetos QueryGenerationTablee. Você pode especificar um dos seguintes valores no inclusion campo:

  • INCLUDE — Somente as tabelas ou colunas que você especifica são incluídas como contexto ao gerar SQL.

  • EXCLUDE — As tabelas ou colunas que você especifica são excluídas como contexto ao gerar SQL.

Você pode especificar se deseja incluir ou excluir tabelas ou colunas das seguintes formas:

  • Para incluir ou excluir uma tabela, inclua um QueryGenerationTableobjeto na tables matriz. Nesse objeto, especifique o nome da tabela no name campo e se deseja incluí-la ou excluí-la no inclusion campo, como no exemplo a seguir:

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

    O mecanismo de consulta não adiciona o Table A contexto adicional para gerar SQL.

  • Para incluir ou excluir uma coluna, inclua um QueryGenerationTableobjeto na tables matriz. Nesse objeto, especifique o nome da tabela no name campo e inclua o columns campo, que mapeia para uma matriz de QueryGenerationColumn. Em um QueryGenerationColumn objeto, inclua o nome da coluna no name campo e se deseja incluí-la ou excluí-la no inclusion campo, como no exemplo a seguir:

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

    A geração de SQL é Column A ignorada Table A no contexto ao gerar SQL.

  • Você pode combinar tabelas e colunas ao especificar inclusões ou exclusões, como no exemplo a seguir:

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

    A geração de SQL incluiTable A, mas exclui Column A dentro dela ao adicionar contexto para gerar SQL.

Importante

As exclusões de tabelas e colunas não substituem as grades de proteção. Essas inclusões e exclusões de tabelas e colunas são usadas como contexto adicional a ser considerado pelo modelo ao gerar SQL.

Para melhorar a precisão de um mecanismo de consulta na conversão de consultas de usuários em consultas SQL, você pode fornecer exemplos no curatedQueries campo do QueryGenerationContextobjeto, que mapeia para uma matriz de objetos. CuratedQuery Cada objeto contém os seguintes campos:

  • NaturalLanguage — Um exemplo de consulta em linguagem natural.

  • sql — A consulta SQL que corresponde à consulta de linguagem natural.