

# Usar o Aurora PostgreSQL como base de conhecimento para o Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB"></a>

É possível usar um cluster de banco de dados do Aurora PostgreSQL como Base de Conhecimento para Amazon Bedrock. Para obter mais informações, consulte [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html). Uma Base de Conhecimento extrai automaticamente os dados de texto não estruturados armazenados em um bucket do Amazon S3, converte-os em blocos e vetores de texto e armazena-os em um banco de dados do PostgreSQL. Com as aplicações de IA generativa, é possível usar agentes do Amazon Bedrock para consultar os dados armazenados na base de conhecimento e usar os resultados dessas consultas para otimizar as respostas fornecidas pelos modelos de base. Esse fluxo de trabalho é chamado de Geração Aumentada de Recuperação (RAG). Para ter mais informações sobre a RAG, consulte [Geração Aumentada de Recuperação (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html).

Para ter informações detalhadas sobre como usar o Aurora PostgreSQL para criar aplicações de IA generativa usando RAG, consulte esta [publicação de blog](https://aws.amazon.com/blogs/database/build-generative-ai-applications-with-amazon-aurora-and-knowledge-bases-for-amazon-bedrock/).

**Topics**
+ [Pré-requisitos](#AuroraPostgreSQL.VectorDB.Prereq)
+ [Preparar o Aurora PostgreSQL para ser usado como base de conhecimento para o Amazon Bedrock](#AuroraPostgreSQL.VectorDB.PreparingKB)
+ [Criação de uma Base de Conhecimento no console do Bedrock](#AuroraPostgreSQL.VectorDB.CreatingKB)
+ [Criar rapidamente uma Base de Conhecimento para Amazon Bedrock do Aurora PostgreSQL](AuroraPostgreSQL.quickcreatekb.md)

## Pré-requisitos
<a name="AuroraPostgreSQL.VectorDB.Prereq"></a>

Familiarize-se com os pré-requisitos a seguir para usar o cluster do Aurora PostgreSQL como base de conhecimento para o Amazon Bedrock. Em geral, é necessário configurar os seguintes serviços para uso com o Bedrock:
+ Cluster de banco de dados do Amazon Aurora PostgreSQL criado em qualquer uma das seguintes versões:
  + 16.1 e todas as versões posteriores
  + 15.4 e versões posteriores
  + 14.9 e versões posteriores
  + 13.12 e versões posteriores
  + 12.16 e versões posteriores
**nota**  
É necessário habilitar a extensão `pgvector` no banco de dados de destino e usar a versão 0.5.0 ou posterior. Para ter mais informações, consulte [pgvector v0.5.0 com indexação HNSW](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/). 
+ API de dados do RDS
+ Um usuário gerenciado no AWS Secrets Manager. Para obter mais informações, consulte [Gerenciamento de senhas com Amazon Aurora e AWS Secrets Manager](rds-secrets-manager.md).

## Preparar o Aurora PostgreSQL para ser usado como base de conhecimento para o Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB.PreparingKB"></a>

Siga as etapas explicadas nas seções abaixo para preparar o Aurora PostgreSQL para ser usado como Base de Conhecimento para Amazon Bedrock.

### Criar e configurar o Aurora PostgreSQL
<a name="AuroraPostgreSQL.VectorDB.CreatingDBC"></a>

Para configurar o Amazon Bedrock com um cluster de banco de dados do Aurora PostgreSQL, é necessário primeiro criar um cluster de banco de dados do Aurora PostgreSQL e anotar os campos importantes para configurá-lo com o Amazon Bedrock. Para ter mais informações sobre como criar um cluster de banco de dados do Aurora PostgreSQL, consulte [Criar um cluster de banco de dados do Aurora PostgreSQL e se conectar a ele](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md).
+ Habilite a API de dados ao criar o cluster de banco de dados do Aurora PostgreSQL. Para ter mais informações sobre as versões compatíveis, consulte [Usar a API de dados do Amazon RDS](data-api.md).
+ Anote os nomes dos recursos da Amazon (ARNs) do cluster de banco de dados do Aurora PostgreSQL. Você precisará deles para configurar o cluster de banco de dados para uso com o Amazon Bedrock. Para ter mais informações, consulte [Nomes de recurso da Amazon (ARNs)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html).

### Conectar-se a um banco de dados e instalar o pgvector
<a name="AuroraPostgreSQL.VectorDB.ConnectingDB"></a>

É possível se conectar ao Aurora PostgreSQL usando qualquer um dos utilitários de conexão. Para ter informações mais detalhadas sobre esses utilitários, consulte [Como conectar-se a um cluster de bancos de dados Amazon Aurora PostgreSQL](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL). Como alternativa, é possível usar o editor de consultas do console do RDS para executar as consultas. Você precisa de um cluster de banco de dados do Aurora com a API de dados do RDS habilitada para usar o editor de consultas.

1. Faça login no banco de dados com o usuário principal e configure o pgvector. Use o comando a seguir se a extensão não estiver instalada:

   ```
   CREATE EXTENSION IF NOT EXISTS vector;
   ```

   Use a versão `pgvector` 0.5.0 e posterior que aceita a indexação HNSW. Para ter mais informações, consulte [pgvector v0.5.0 com indexação HNSW](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/).

1. Use o seguinte comando para conferir a versão do `pg_vector` instalado:

   ```
   SELECT extversion FROM pg_extension WHERE extname='vector';
   ```

### Configurar objetos e privilégios de banco de dados
<a name="AuroraPostgreSQL.VectorDB.SetupDBObjects"></a>

1. Crie um esquema específico que o Bedrock possa usar para consultar os dados. Use o seguinte comando para criar um esquema:

   ```
   CREATE SCHEMA bedrock_integration;
   ```

1. Crie um perfil que o Bedrock possa usar para consultar o banco de dados. Use o seguinte comando para criar um perfil:

   ```
   CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;
   ```
**nota**  
Anote essa senha, pois você a usará posteriormente para criar uma senha do Secrets Manager.

   Se você estiver usando o cliente `psql`, utilize os seguintes comandos para criar um perfil:

   ```
   CREATE ROLE bedrock_user LOGIN;
   \PASSWORD password;
   ```

1. Conceda ao `bedrock_user` permissões para gerenciar o esquema `bedrock_integration`. Isso oferecerá a capacidade de criar tabelas ou índices no esquema.

   ```
   GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
   ```

1. Faça login como `bedrock_user` e crie uma tabela no `bedrock_integration schema`.

   ```
   CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(n), chunks text, metadata json, custom_metadata jsonb);
   ```

   Esse comando criará a tabela `bedrock_kb` no esquema `bedrock_integration` com incorporações do Titan.

   Substitua n no tipo de dados `vector(n)` pela dimensão apropriada para o modelo de incorporação que você está usando. Use as recomendações abaixo para ajudar a selecionar suas dimensões:
   + Para o modelo Titan v2, use `vector(1024)`, `vector(512)` ou `vector (256)`. Para saber mais, consulte [Texto de incorporações do Amazon Titan](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html).
   + Para o modelo Titan v1.2, use `vector(1536)`. Para saber mais, consulte [Amazon Titan Multimodal Embeddings G1](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-mm.html).
   + Para o modelo Cohere Embed, use `vector(1024)`. Para saber mais, consulte [Modelos Cohere Embed](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html).
   + Para o Cohere Embed Multilingual v3, use `vector(1024)`.

   As quatro primeiras colunas são obrigatórias. Para tratamento de metadados, o Bedrock grava dados de seus arquivos de metadados na coluna `custom_metadata`. Recomendamos criar essa coluna se você planeja usar metadados e filtragem. Se você não criar uma coluna `custom_metadata`, adicione colunas individuais para cada atributo de metadados em sua tabela antes de iniciar a ingestão. Para ter mais informações, consulte [Configure and customize queries and response generation](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html).

1. Siga estas etapas para criar os índices necessários que o Bedrock usa para consultar seus dados:
   + Crie um índice com um operador cosseno que o Bedrock possa usar para consultar os dados.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
     ```
   + Recomendamos definir o valor de `ef_construction` como 256 para a versão `pgvector` 0.6.0 e posterior que usam a criação paralela de índices.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops) WITH (ef_construction=256);
     ```
   + Crie um índice que o Bedrock possa usar para consultar os dados de texto.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));
     ```
   + Se você criou uma coluna para metadados personalizados, crie um índice que o Bedrock possa usar para consultar os metadados.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (custom_metadata);
     ```

### Criar um segredo no Secrets Manager
<a name="AuroraPostgreSQL.VectorDB.SecretManager"></a>

O Secrets Manager permite que você armazene suas credenciais do Aurora para que elas possam ser transmitidas com segurança às aplicações. Se você não escolheu a opção do AWS Secrets Manager ao criar o cluster de banco de dados do Aurora PostgreSQL, poderá criar um segredo agora. Para ter mais informações sobre como criar um segredo de banco de dados AWS Secrets Manager, consulte [AWS Secrets Manager database secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html).

## Criação de uma Base de Conhecimento no console do Bedrock
<a name="AuroraPostgreSQL.VectorDB.CreatingKB"></a>

Ao preparar o Aurora PostgreSQL para ser usado como armazenamento de vetores para uma Base de Conhecimento, reúna os detalhes a seguir que devem ser fornecidos ao console do Amazon Bedrock.
+ **ARN do cluster de banco de dados do Amazon Aurora**: o ARN do cluster de banco de dados.
+ **ARN secreto**: o ARN da chave do AWS Secrets Manager para o cluster de banco de dados.
+ **Nome do banco de dados**: o nome do banco de dados. Por exemplo, é possível usar o banco de dados padrão *postgres*.
+ **Nome da tabela**: recomendamos que você forneça um nome qualificado para o esquema ao criar a tabela usando o comando semelhante ao seguinte:

  ```
  CREATE TABLE bedrock_integration.bedrock_kb;
  ```

  Esse comando criará a tabela `bedrock_kb` no esquema `bedrock_integration`.
+ Ao criar a tabela, configure-a com as colunas e os tipos de dados especificados. É possível usar os nomes de coluna de sua preferência em vez dos listados na tabela. Lembre-se de anotar os nomes que você escolheu para consulta durante a configuração da Base de Conhecimento.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)

Com esses detalhes, agora é possível criar uma Base de Conhecimento no console do Bedrock. Para ter informações mais detalhadas sobre a configuração de um índice vetorial e a criação de informações da Base de Conhecimento, consulte [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup-rds.html) e [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html).

Agora que você já adicionou o Aurora como Base de Conhecimento, é possível ingerir suas fontes de dados para pesquisar e consultar. Para ter mais informações, consulte [Ingest your data sources into the Knowledge Base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ingest.html).