

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à.

# Utilizzo di Aurora PostgreSQL come Knowledge Base per Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB"></a>

È possibile utilizzare un cluster di database Aurora PostgreSQL come Knowledge Base per Amazon Bedrock. Per ulteriori informazioni, consulta [Creazione di un archivio vettoriale in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html). Una Knowledge Base acquisisce automaticamente dati di testo non strutturati memorizzati in un bucket Amazon S3, li converte in blocchi di testo e vettori, quindi li archivia in un database PostgreSQL. Con le applicazioni di IA generativa, è possibile utilizzare Agent per Amazon Bedrock per eseguire query sui dati memorizzati nella Knowledge Base e utilizzarne i risultati per aumentare le risposte fornite dai modelli di fondazione. Questo flusso di lavoro si chiama generazione potenziata da recupero dati (RAG). Per ulteriori informazioni sulla RAG, consulta [Retrieval Augmented Generation (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html).

Per informazioni dettagliate sull’utilizzo di Aurora PostgreSQL per creare applicazioni di IA generativa utilizzando RAG, consulta questo [post di blog](https://aws.amazon.com/blogs/database/build-generative-ai-applications-with-amazon-aurora-and-knowledge-bases-for-amazon-bedrock/).

**Topics**
+ [Prerequisiti](#AuroraPostgreSQL.VectorDB.Prereq)
+ [Preparazione di Aurora PostgreSQL per l’utilizzo come Knowledge Base per Amazon Bedrock](#AuroraPostgreSQL.VectorDB.PreparingKB)
+ [Creazione di una Knowledge Base nella console Bedrock](#AuroraPostgreSQL.VectorDB.CreatingKB)
+ [Creazione rapida di una Knowledge Base per Amazon Bedrock di Aurora PostgreSQL](AuroraPostgreSQL.quickcreatekb.md)

## Prerequisiti
<a name="AuroraPostgreSQL.VectorDB.Prereq"></a>

È necessario acquisire familiarità con i seguenti prerequisiti per utilizzare il cluster Aurora PostgreSQL come Knowledge Base per Amazon Bedrock. A un livello elevato, si devono configurare i seguenti servizi da utilizzare con Bedrock:
+ Cluster di database Amazon Aurora PostgreSQL creato in una delle seguenti versioni:
  + 16.1 e tutte le versioni successive
  + 15.4 e versioni successive
  + 14.9 e versioni successive
  + 13.12 e versioni successive
  + 12.16 e versioni successive
**Nota**  
È necessario abilitare l’estensione `pgvector` nel database di destinazione e utilizzare la versione 0.5.0 o successiva. Per ulteriori informazioni, consulta [pgvector v0.5.0 with HNSW indexing](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/). 
+ API dati RDS
+ Un utente gestito in Gestione dei segreti AWS. Per ulteriori informazioni, consulta [Gestione delle password con Amazon Aurora e Gestione dei segreti AWS](rds-secrets-manager.md).

## Preparazione di Aurora PostgreSQL per l’utilizzo come Knowledge Base per Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB.PreparingKB"></a>

I passaggi descritti nelle sezioni seguenti consentono di preparare Aurora PostgreSQL per l’utilizzo come Knowledge Base per Amazon Bedrock.

### Creazione e configurazione di Aurora PostgreSQL
<a name="AuroraPostgreSQL.VectorDB.CreatingDBC"></a>

Per configurare Amazon Bedrock con un cluster di database Aurora PostgreSQL, è necessario prima creare un cluster di database Aurora PostgreSQL e prendere nota dei campi importanti per configurarlo con Amazon Bedrock. Per ulteriori informazioni sulla creazione di un cluster di database Aurora PostgreSQL, consulta [Creazione e connessione di un cluster di database Aurora PostgreSQL](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md).
+ Abilitare l’API dati durante la creazione del cluster di database Aurora PostgreSQL. Per ulteriori informazioni sulle versioni supportate, consulta [Utilizzo dell’API dati di Amazon RDS](data-api.md).
+ Assicurarsi di prendere nota del nome della risorsa Amazon (ARN) del cluster di database Aurora PostgreSQL. Servirà per configurare il cluster di database da utilizzare con Amazon Bedrock. Per ulteriori informazioni, consulta [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html).

### Connessione a un database e installazione di pgvector
<a name="AuroraPostgreSQL.VectorDB.ConnectingDB"></a>

È possibile connettersi ad Aurora PostgreSQL utilizzando un’utilità di connessione. Per informazioni più dettagliate su queste utilità, consulta [Connessione a un cluster di database Amazon Aurora PostgreSQL](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL). In alternativa, è possibile utilizzare l’editor di query della console RDS per eseguire le query. Per utilizzare l’editor di query è necessario un cluster di database Aurora con l’API dati RDS abilitata.

1. Accedere al database con l’utente principale e configurare pgvector. Utilizzare il comando seguente se l’estensione non è installata:

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

   Utilizzare `pgvector` 0.5.0 e le versioni successive che supportano l’indicizzazione HNSW. Per ulteriori informazioni, consulta [pgvector v0.5.0 with HNSW indexing](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/).

1. Utilizzare il comando seguente per verificare la versione di `pg_vector` installata:

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

### Impostazione degli oggetti e dei privilegi del database
<a name="AuroraPostgreSQL.VectorDB.SetupDBObjects"></a>

1. Creare uno schema specifico che Bedrock può utilizzare per eseguire query sui dati. Utilizzare il comando seguente per creare uno schema:

   ```
   CREATE SCHEMA bedrock_integration;
   ```

1. Creare un nuovo ruolo che Bedrock può utilizzare per eseguire query sul database. Utilizzare il comando seguente per creare un nuovo ruolo:

   ```
   CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;
   ```
**Nota**  
Prendere nota di questa password, poiché sarà necessaria in seguito per creare una password di Secrets Manager.

   Se si utilizza il client `psql`, utilizzare i comandi seguenti per creare un nuovo ruolo:

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

1. Fornire le autorizzazioni `bedrock_user` per gestire lo schema `bedrock_integration`. Questa operazione consente di creare tabelle o indici all’interno dello schema.

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

1. Effettuare l’accesso come `bedrock_user` e creare una tabella in `bedrock_integration schema`.

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

   Questo comando crea la tabella `bedrock_kb` nello schema `bedrock_integration` con gli embedding Titan.

   Sostituire n nel tipo di dati `vector(n)` con la dimensione appropriata per il modello di embedding in uso. I consigli riportati di seguito aiutano a selezionare le dimensioni:
   + Per il modello Titan v2, utilizzare `vector(1024)`, `vector(512)` o `vector (256)`. Per ulteriori informazioni, consulta [Amazon Titan Embeddings Text](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html).
   + Per il modello Titan v1.2, utilizzare `vector(1536)`. Per ulteriori informazioni, consulta [Amazon Titan Multimodal Embeddings G1](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-mm.html).
   + Per il modello Cohere Embed, utilizzare `vector(1024)`. Per ulteriori informazioni, consulta [Modelli Cohere Embed](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html).
   + Per Cohere Embed Multilingual v3, utilizzare `vector(1024)`.

   Le prime quattro colonne sono obbligatorie. Per la gestione dei metadati, Bedrock scrive i dati dei file di metadati nella colonna `custom_metadata`. È consigliabile creare questa colonna se si intendono utilizzare metadati e filtri. Se non si crea una colonna `custom_metadata`, aggiungere singole colonne per ogni attributo di metadati nella tabella prima di iniziare l’importazione. Per ulteriori informazioni, consulta [Configure and customize queries and response generation](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html).

1. I seguenti passaggi consentono di creare gli indici richiesti che Bedrock utilizza per eseguire query sui dati:
   + Creare un indice con l’operatore coseno che Bedrock può utilizzare per eseguire query sui dati.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
     ```
   + È consigliabile impostare il valore `ef_construction` su 256 per `pgvector` 0.6.0 e versioni successive che utilizzano la creazione di indici paralleli.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops) WITH (ef_construction=256);
     ```
   + Creare un indice che Bedrock può utilizzare per eseguire query sui dati di testo.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));
     ```
   + Se è stata creata una colonna per i metadati personalizzati, creare un indice che Bedrock può utilizzare per eseguire query sui metadati.

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

### Creazione di un segreto in Secrets Manager
<a name="AuroraPostgreSQL.VectorDB.SecretManager"></a>

Secrets Manager consente di archiviare le credenziali Aurora per poterle trasmettere in modo sicuro alle applicazioni. Se non hai scelto l'opzione di gestione AWS dei segreti durante la creazione del cluster Aurora PostgreSQL DB, ora puoi creare un segreto. Per ulteriori informazioni sulla creazione di un segreto Gestione dei segreti AWS del database, vedere [AWS Secrets Manager database secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html).

## Creazione di una Knowledge Base nella console Bedrock
<a name="AuroraPostgreSQL.VectorDB.CreatingKB"></a>

Durante la preparazione di Aurora PostgreSQL per l’utilizzo come archivio vettoriale per una Knowledge Base, è necessario raccogliere i seguenti dettagli da fornire alla console Amazon Bedrock.
+ **ARN del cluster di database Amazon Aurora**: l’ARN del cluster di database.
+ **ARN segreto**: l’ARN della chiave AWS Secrets Manager per il cluster di database.
+ **Nome del database**: il nome del database. Ad esempio, è possibile utilizzare il database predefinito*postgres*.
+ **Nome della tabella**: è consigliabile fornire il nome completo dello schema durante la creazione della tabella utilizzando un comando simile al seguente:

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

  Questo comando creerà la tabella `bedrock_kb` nello schema `bedrock_integration`.
+ Quando si crea la tabella, è necessario configurarla con le colonne e i tipi di dati specificati. È possibile utilizzare nomi di colonna preferiti anziché quelli elencati nella tabella. Occorre prendere nota dei nomi scelti per utilizzarli come riferimento durante la configurazione della Knowledge Base.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)

Con questi dettagli, ora è possibile creare una Knowledge Base nella console Bedrock. Per informazioni più dettagliate sulla configurazione di un indice vettoriale e sulla creazione di informazioni della Knowledge Base, consulta [Creazione di un archivio vettoriale in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup-rds.html) e [Creazione di un archivio vettoriale in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html).

Dopo aver aggiunto Aurora come Knowledge Base, è possibile importare le origini dati per eseguire ricerche e query. Per ulteriori informazioni, consulta [Inserisci le tue origini dati nella knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ingest.html).