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à.
Crea un'applicazione RAG utilizzando Amazon Bedrock Knowledge Bases
Molte aziende accumulano ampi archivi di documenti nelle proprie condivisioni di file NFS e SMB: manuali di prodotto, documenti relativi alle politiche, contratti, rapporti di ricerca, specifiche tecniche e contenuti generati dagli utenti.
Con un access point Amazon S3 collegato al volume FSx for ONTAP, Amazon Bedrock Knowledge Bases acquisisce i contenuti direttamente dal volume. Foundation-model le risposte si basano sui documenti in cui i team le salvano tramite NFS o SMB. I contenuti che gli autori aggiornano sulla condivisione diventano disponibili per la knowledge base alla successiva sincronizzazione.
In questo tutorial, carichi un piccolo set di PDF di esempio sul tuo volume FSx for ONTAP tramite un punto di accesso Amazon S3, crei una knowledge base Amazon Bedrock che punti al punto di accesso, acquisisci i documenti ed esegui una domanda tramite l'API. RetrieveAndGenerate
Nota
Il completamento di questo tutorial richiede dai 35 ai 45 minuti circa. Le risorse Servizi AWS utilizzate sono soggette a costi per le risorse create. Se completi tempestivamente tutti i passaggi, inclusa la sezione Pulizia, il costo previsto è inferiore a 1 USD negli Stati Uniti orientali (Virginia settentrionale). Regione AWS Questa stima non include i costi correnti per il volume FSx for ONTAP stesso.
Prerequisiti
Prima di iniziare, assicurati di disporre di:
Un volume FSx for ONTAP con un access point Amazon S3 collegato. Il punto di accesso deve avere un'origine di rete Internet in modo che il servizio Amazon Bedrock possa raggiungerlo. Per istruzioni sulla creazione di un punto di accesso, consultaCreazione di un access point.
Accesso al modello abilitato per un modello di incorporamento supportato da Amazon Bedrock Knowledge Bases e almeno un modello di generazione di testo (ad esempio,
amazon.nova-lite-v1:0) nel Regione AWS quale creerai la knowledge base. Questo tutorial utilizzaamazon.titan-embed-text-v2:0(1024 dimensioni) come modello di incorporamento; sono supportati anche i modelli Cohere Embed. Se scegli un modello di incorporamento diverso, regola la dimensione dell'indice vettoriale nel passaggio 2 in modo che corrisponda alla dimensione di output del modello. L'accesso al modello è abilitato nella console Amazon Bedrock in Accesso al modello. Per ulteriori informazioni, consulta Accedere ai modelli Amazon Bedrock Foundation nella Amazon Bedrock User Guide.AWS CLI versione 2 installata e configurata con credenziali in grado di creare ruoli IAM, risorse Amazon S3 Vectors e Amazon Bedrock Knowledge Base.
Fase 1: caricare documenti di esempio sul punto di accesso
Scarica alcuni PDF pubblici da utilizzare come corpus di esempio, quindi caricali sul tuo punto di accesso utilizzando l'alias del punto di accesso Amazon S3.
-
Crea una directory locale e scarica PDF di esempio.
$mkdir -p ~/kb-pdfs && cd ~/kb-pdfs curl -sSL -o aws-overview.pdf https://d1.awsstatic.com/whitepapers/aws-overview.pdf curl -sSL -o wellarchitected-framework.pdf https://docs.aws.amazon.com/pdfs/wellarchitected/latest/framework/wellarchitected-framework.pdf curl -sSL -o s3-userguide.pdf https://docs.aws.amazon.com/pdfs/AmazonS3/latest/userguide/s3-userguide.pdf -
Carica ogni file sul punto di accesso. Sostituiscilo
access-point-aliascon l'alias del punto di accesso (ad esempio,my-kb-ap-a1b2c3d4e5f6g7h8i9j0kl1mnop2uuse1a-ext-s3alias). Puoi trovare l'alias nella console Amazon FSx nella sezione Punti di accesso Amazon S3 collegati per il tuo volume o eseguendo.aws fsx describe-s3-access-point-attachments$for f in *.pdf; do aws s3 cp "$f" "s3://access-point-alias/$f" done -
Verifica che i file siano atterrati sul volume.
$aws s3 ls s3://access-point-alias/
Nota
Amazon Bedrock Knowledge Bases impone una dimensione massima di file di 50 MB per documento. I file di dimensioni superiori a 50 MB vengono ignorati durante l'ingestione.
Fase 2: Creare un archivio vettoriale
La knowledge base archivia gli incorporamenti dei documenti in un archivio vettoriale. Amazon Bedrock Knowledge Bases supporta diversi archivi vettoriali; questo tutorial utilizza Amazon S3 Vectors come impostazione predefinita perché è ottimizzata in termini di costi per i carichi di lavoro RAG e richiede una configurazione minima. È supportato anche Amazon OpenSearch Serverless; consulta la sezione pieghevole alla fine di questo passaggio per queste istruzioni.
Per creare l'archivio vettoriale utilizzando la console
Se utilizzi la console per creare la knowledge baseFase 4: Creare la knowledge base e la fonte di dati, scegli Creazione rapida di un nuovo archivio vettoriale nella fase del database Vector e seleziona Amazon S3 Vectors (consigliato) o Amazon Serverless. OpenSearch Amazon Bedrock crea automaticamente l'archivio vettoriale e tutte le configurazioni richieste. Passare direttamente a Fase 3: Creare un ruolo IAM per la knowledge base.
Per creare un archivio vettoriale Amazon S3 Vectors utilizzando il AWS CLI
-
Crea un bucket vettoriale Amazon S3. I nomi dei bucket vettoriali seguono le stesse regole di unicità globale dei bucket Amazon S3 standard. Questo tutorial utilizza
fsxn-kb-vectors; sostituiscilo con un nome univoco.$aws s3vectors create-vector-bucket --vector-bucket-name fsxn-kb-vectors -
Crea un indice vettoriale nel bucket. La dimensione dell'indice deve corrispondere alla dimensione di output del modello di incorporamento; Titan Text Embeddings v2 produce 1024 dimensioni. L'
nonFilterableMetadataKeysimpostazione contrassegna i campi di metadati Bedrock come non filtrabili, il che li mantiene al di fuori del limite di 2 KB per vettore di metadati filtrabili.$aws s3vectors create-index --vector-bucket-name fsxn-kb-vectors \ --index-name bedrock-kb-index \ --dimension 1024 --distance-metric cosine --data-type float32 \ --metadata-configuration '{"nonFilterableMetadataKeys":["AMAZON_BEDROCK_METADATA","AMAZON_BEDROCK_TEXT"]}'Annotali nella risposta; li usi
indexArnin. Fase 4: Creare la knowledge base e la fonte di dati
Se preferisci OpenSearch Service Serverless (per richieste più elevate al secondo, funzionalità di ricerca avanzate o familiarità operativa esistente), utilizza i seguenti passaggi anziché la procedura Amazon S3 Vectors descritta sopra.
-
Crea politiche di crittografia e sicurezza di rete per la raccolta.
$aws opensearchserverless create-security-policy --name kb-enc --type encryption \ --policy '{"Rules":[{"ResourceType":"collection","Resource":["collection/fsxn-kb"]}],"AWSOwnedKey":true}' aws opensearchserverless create-security-policy --name kb-net --type network \ --policy '[{"Rules":[{"ResourceType":"collection","Resource":["collection/fsxn-kb"]},{"ResourceType":"dashboard","Resource":["collection/fsxn-kb"]}],"AllowFromPublic":true}]' -
Crea una politica di accesso ai dati che conceda al ruolo della knowledge base e all'utente corrente l'autorizzazione a leggere e scrivere la raccolta. Sostituisci
account-idecurrent-usercon i tuoi valori.$aws opensearchserverless create-access-policy --name kb-data --type data --policy '[{ "Rules":[ {"ResourceType":"index","Resource":["index/fsxn-kb/*"],"Permission":["aoss:*"]}, {"ResourceType":"collection","Resource":["collection/fsxn-kb"],"Permission":["aoss:*"]} ], "Principal":[ "arn:aws:iam::account-id:role/fsxn-kb-role", "arn:aws:iam::account-id:user/current-user" ] }]' -
Crea la collezione e attendi che diventi
ACTIVE.$aws opensearchserverless create-collection --name fsxn-kb --type VECTORSEARCH aws opensearchserverless batch-get-collection --names fsxn-kb \ --query 'collectionDetails[0].{status:status,endpoint:collectionEndpoint}' -
Crea l'indice vettoriale sulla raccolta usando uno script Python con richieste firmate. L'indice deve utilizzare la dimensione 1024 (per Titan Text Embeddings v2) e i nomi di campo previsti da Amazon Bedrock Knowledge Bases. Per lo script completo e i passaggi di configurazione successivi, consulta Prerequisiti per l'utilizzo di OpenSearch Service Serverless nella Amazon Bedrock User Guide. Utilizzate l'ARN e il nome dell'indice della raccolta risultanti nel passaggio 4 con un
storage-configurationdi tipo.OPENSEARCH_SERVERLESS
Fase 3: Creare un ruolo IAM per la knowledge base
La knowledge base necessita di un ruolo IAM da assumere per richiamare il modello di incorporamento, leggere gli oggetti tramite il punto di accesso Amazon S3 e accedere al vector store. La politica mostrata di seguito consente l'accesso a un archivio vettoriale Amazon S3 Vectors. Se invece utilizzi OpenSearch Service Serverless, sostituisci l'S3Vectorsistruzione con una che garantisca l'aoss:APIAccessAllARN della raccolta.
Per creare il ruolo utilizzando la console
Quando crei la knowledge base utilizzando la console Amazon Bedrock inFase 4: Creare la knowledge base e la fonte di dati, scegli Crea e usa un nuovo ruolo di servizio. Amazon Bedrock crea un ruolo con la fiducia e le autorizzazioni richieste, in base alla tua knowledge base, al modello di incorporamento, all'archivio vettoriale e alla fonte di dati. Passare direttamente a Fase 4: Creare la knowledge base e la fonte di dati.
-
Salva la seguente politica di fiducia come
kb-trust-policy.json. Consente ad Amazon Bedrock di assumere il ruolo.account-idSostituiscilo con il tuo Account AWS ID.{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock.amazonaws.com"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account-id"}} }] } -
Salva la seguente politica di autorizzazione come
kb-permissions.json. Garantisce l'accesso al modello di incorporamento, al punto di accesso Amazon S3 e al vector store. Sostituisci i segnaposto con i tuoi valori.{ "Version": "2012-10-17", "Statement": [ { "Sid": "FoundationModel", "Effect": "Allow", "Action": ["bedrock:InvokeModel"], "Resource": ["arn:aws:bedrock:region::foundation-model/amazon.titan-embed-text-v2:0"] }, { "Sid": "S3AccessPoint", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:region:account-id:accesspoint/access-point-name", "arn:aws:s3:region:account-id:accesspoint/access-point-name/object/*" ] }, { "Sid": "S3Vectors", "Effect": "Allow", "Action": [ "s3vectors:GetIndex", "s3vectors:PutVectors", "s3vectors:GetVectors", "s3vectors:ListVectors", "s3vectors:DeleteVectors", "s3vectors:QueryVectors" ], "Resource": [ "arn:aws:s3vectors:region:account-id:bucket/fsxn-kb-vectors", "arn:aws:s3vectors:region:account-id:bucket/fsxn-kb-vectors/index/*" ] } ] } -
Crea il ruolo e allega la politica delle autorizzazioni.
$aws iam create-role --role-name fsxn-kb-role \ --assume-role-policy-document file://kb-trust-policy.json aws iam put-role-policy --role-name fsxn-kb-role --policy-name kb-access \ --policy-document file://kb-permissions.json
Fase 4: Creare la knowledge base e la fonte di dati
L'origine dati punta all'alias del punto di accesso Amazon S3. Amazon Bedrock Knowledge Bases accetta l'alias del punto di accesso al posto del nome del bucket.
Per creare la knowledge base utilizzando la console
-
Apri la console Amazon Bedrock all'indirizzo https://console.aws.amazon.com/bedrock/
. -
Nel riquadro di navigazione a sinistra, scegli Knowledge base, quindi scegli Crea knowledge base.
-
In Dettagli della Knowledge base, inserisci un nome (ad esempio
fsxn-kb) e una descrizione. -
In Autorizzazioni IAM, scegli Crea e usa un nuovo ruolo di servizio.
-
Per Origine dati, scegli Amazon S3, quindi scegli Avanti.
-
Inserisci il nome di un'origine dati (ad esempio,
fsxn-s3ap-source). -
Per l'URI S3, inserisci
s3://seguito dall'alias del tuo punto di accesso, ad esempio.s3://my-kb-ap-a1b2c3d4e5f6g7h8i9j0kl1mnop2uuse1a-ext-s3aliasLa console non fa distinzione tra un nome di bucket e un alias di un punto di accesso in questo campo; l'alias del punto di accesso è accettato così com'è. -
Scegli Next (Successivo).
-
Nel modello Embeddings, scegli Titan Text Embeddings v2.
-
In Database vettoriale, scegli Crea rapidamente un nuovo archivio vettoriale e seleziona Amazon S3 Vectors. Scegli Next (Successivo).
-
Rivedi la configurazione e scegli Crea knowledge base. La creazione della knowledge base può richiedere diversi minuti.
Per creare la knowledge base utilizzando il AWS CLI
-
Creare la knowledge base. Sostituisci i segnaposto con i tuoi valori.
indexArnÈ l'ARN dell'indice vettoriale di Amazon S3 creato nella fase 2.$aws bedrock-agent create-knowledge-base --name fsxn-kb \ --role-arn arn:aws:iam::account-id:role/fsxn-kb-role \ --knowledge-base-configuration '{ "type":"VECTOR", "vectorKnowledgeBaseConfiguration":{ "embeddingModelArn":"arn:aws:bedrock:region::foundation-model/amazon.titan-embed-text-v2:0" } }' \ --storage-configuration '{ "type":"S3_VECTORS", "s3VectorsConfiguration":{ "indexArn":"index-arn" } }'Prendere nota dell'ID
knowledgeBaseIdnella risposta. -
Crea la fonte di dati. Passa l'alias del punto di accesso Amazon S3 come nome del bucket nel
bucketArncampo, utilizzando il modulo.arn:aws:s3:::access-point-alias$aws bedrock-agent create-data-source \ --knowledge-base-idknowledge-base-id\ --name fsxn-s3ap-source \ --data-source-configuration '{ "type":"S3", "s3Configuration":{"bucketArn":"arn:aws:s3:::access-point-alias"} }'Prendere nota dell'ID
dataSourceIdnella risposta.
Fase 5: Inserire i documenti
Esegui un processo di inserimento per scansionare i documenti attraverso il punto di accesso, generare incorporamenti e indicizzarli nell'archivio vettoriale.
Per eseguire l'ingestione utilizzando la console
-
Nella console Amazon Bedrock, apri la tua knowledge base.
-
Nella sezione Origine dati, seleziona la fonte dei dati, quindi scegli Sincronizza.
-
Attendi che lo stato di sincronizzazione mostri Pronto.
Per eseguire l'ingestione utilizzando il AWS CLI
-
Avviare il processo di ingestione.
$aws bedrock-agent start-ingestion-job \ --knowledge-base-idknowledge-base-id\ --data-source-iddata-source-idPrendere nota dell'ID
ingestionJobIdnella risposta. -
Esegui il sondaggio del lavoro fino al completamento.
$aws bedrock-agent get-ingestion-job \ --knowledge-base-idknowledge-base-id\ --data-source-iddata-source-id\ --ingestion-job-idingestion-job-idIl
statuscampo passa da a.IN_PROGRESSCOMPLETEIlstatisticscampo mostra quanti documenti sono stati scansionati e indicizzati.
Fase 6: Interroga la knowledge base
Poni alla knowledge base una domanda basata sui documenti acquisiti. La risposta include citazioni che fanno riferimento ai documenti di origine tramite l'alias del punto di accesso Amazon S3.
Per eseguire query utilizzando la console
-
Nella console Amazon Bedrock, apri la tua knowledge base.
-
Scegli Test knowledge base.
-
In Genera risposte, seleziona un modello di generazione di testo (ad esempio Nova Lite).
-
Inserisci una domanda come
What are the pillars of the AWS Well-Architected Framework?e scegli Esegui. La risposta viene visualizzata con riferimenti citazionali che rimandano ai documenti di origine nel punto di accesso Amazon S3.
Per eseguire interrogazioni utilizzando il AWS CLI
Utilizza il comando retrieve-and-generate. Sostituisci i segnaposto con i tuoi valori. modelArnDevono fare riferimento a un profilo di inferenza per un modello di generazione di testo a cui avete accesso.
$aws bedrock-agent-runtime retrieve-and-generate \ --input '{"text":"What are the pillars of the AWS Well-Architected Framework?"}' \ --retrieve-and-generate-configuration '{ "type":"KNOWLEDGE_BASE", "knowledgeBaseConfiguration":{ "knowledgeBaseId":"knowledge-base-id", "modelArn":"arn:aws:bedrock:region:account-id:inference-profile/us.amazon.nova-lite-v1:0" } }'
La risposta contiene la risposta generata output.text e un elenco di citazioni nell'citationsarray. Ogni citazione include un s3Location.uri campo che rimanda al documento di origine tramite l'alias del punto di accesso, nel modulo. s3://access-point-alias/file.pdf
Risoluzione dei problemi
- I file dei report sui lavori di ingestione sono stati ignorati
Amazon Bedrock Knowledge Bases impone una dimensione massima di file di 50 MB per documento. I file di dimensioni superiori a 50 MB vengono elencati
failureReasonse ignorati. Dividi o comprimi documenti di grandi dimensioni prima del caricamento.ValidationException: modello contrassegnato come LegacyIl modello di generazione del testo che hai specificato è obsoleto per il tuo account. Scegli un profilo di inferenza attivo, ad esempio
us.amazon.nova-lite-v1:0o un altro modello attualmente supportato. Eseguiaws bedrock list-inference-profilesper elencare i profili disponibili.AccessDeniedExceptiondurante l'ingestioneVerifica che il ruolo IAM della knowledge base abbia
s3:GetObjectes3:ListBucketsull'access point ARN (non sul volume sottostante) e che il punto di accesso abbia un'origine di rete Internet in modo che il servizio Amazon Bedrock possa raggiungerlo. Se hai scelto l'alternativa OpenSearch Service Serverless nella Fase 2, verifica anche che la policy di accesso ai dati elenchi il ruolo come principale.- Il processo di inserimento ha esito positivo, ma le query non restituiscono passaggi pertinenti
Verifica che l'indice vettoriale sia stato creato con
dimension: 1024(per Titan Text Embeddings v2) e che i nomi dei campi nella mappatura dell'indice corrispondano ai nomi dei campi configurati nella knowledge base.
Eliminazione
Per evitare addebiti continui, elimina le risorse che hai creato:
Knowledge base e fonte di dati Amazon Bedrock
Indice vettoriale Amazon S3 e bucket vettoriale (o raccolta OpenSearch Service Serverless, se hai utilizzato l'alternativa nella fase 2)
Ruolo IAM e policy in linea
Oggetti caricati sul punto di accesso (se non più necessari)
$aws bedrock-agent delete-data-source --knowledge-base-idknowledge-base-id--data-source-iddata-source-idaws bedrock-agent delete-knowledge-base --knowledge-base-idknowledge-base-idaws s3vectors delete-index --vector-bucket-name fsxn-kb-vectors --index-name bedrock-kb-index aws s3vectors delete-vector-bucket --vector-bucket-name fsxn-kb-vectors aws iam delete-role-policy --role-name fsxn-kb-role --policy-name kb-access aws iam delete-role --role-name fsxn-kb-role
Se hai scelto l'alternativa OpenSearch Service Serverless nel passaggio 2, sostituisci i s3vectors comandi precedenti con i seguenti. Le raccolte Idle OpenSearch Service Serverless comportano OCU-hour costi, quindi eliminale immediatamente quando hai finito con il tutorial.
$# Get the collection ID (required by delete-collection; the name is not accepted) COLLECTION_ID=$(aws opensearchserverless batch-get-collection --names fsxn-kb \ --query 'collectionDetails[0].id' --output text) # Delete the collection, then the policies aws opensearchserverless delete-collection --id "$COLLECTION_ID" aws opensearchserverless delete-access-policy --name kb-data --type data aws opensearchserverless delete-security-policy --name kb-net --type network aws opensearchserverless delete-security-policy --name kb-enc --type encryption