Tutorial: Guida introduttiva a S3 Vectors - Amazon Simple Storage Service

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

Tutorial: Guida introduttiva a S3 Vectors

Nota

Amazon S3 Vectors è in versione di anteprima per Amazon Simple Storage Service ed è soggetto a modifiche.

In questo tutorial, crei un bucket vettoriale S3 e un indice vettoriale in una console Regione AWS Amazon S3. Successivamente, utilizzi un modello di incorporamento Amazon Bedrock per generare incorporamenti vettoriali dei tuoi dati e archiviarli nel tuo indice vettoriale per eseguire ricerche semantiche.

Per iniziare, crea un AWS account se non ne hai già uno. Per ulteriori informazioni sulla configurazione di un account, consultaNozioni di base su Amazon S3.

Passaggio 1: Crea un bucket vettoriale con la console

I bucket vettoriali S3 sono un tipo di bucket Amazon S3 creato appositamente per archiviare e interrogare vettori. Utilizzi operazioni API dedicate per scrivere e interrogare dati vettoriali. Puoi controllare l'accesso ai tuoi dati vettoriali con meccanismi di controllo degli accessi come le politiche basate sull'identità IAM e le politiche basate sulle risorse.

In questo passaggio, usi la console Amazon S3 per creare il tuo primo bucket vettoriale. Per altri modi per creare un bucket vettoriale, consulta. Creare un bucket vettoriale

Per creare un bucket vettoriale

  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel riquadro di navigazione a sinistra, scegli Vector buckets.

  3. Nella pagina Bucket vettoriali, scegli Crea bucket vettoriale.

  4. Nella pagina Crea bucket vettoriale, per il campo Nome del bucket vettoriale, inserisci un nome. In questo tutorial, lo usiamo media-embeddings come nome vettoriale del bucket. I nomi dei bucket vettoriali devono contenere da 3 a 63 caratteri e devono essere unici all'interno di un. Regione AWS I caratteri validi sono lettere minuscole (a-z), numeri (0-9) e trattini (-).

    Nota

    Il nome del bucket vettoriale non può essere modificato dopo la creazione del bucket.

  5. In Crittografia, scegli Specificare il tipo di crittografia. Hai la possibilità di specificare il tipo di crittografia come crittografia lato server con AWS Key Management Service chiavi (SSE-KMS) o la crittografia lato server predefinita con chiavi gestite Amazon S3 (SSE-S3). In questo tutorial, scegliamo la crittografia lato server con chiavi gestite Amazon S3 (SSE-S3). Per ulteriori informazioni sull'impostazione della configurazione di crittografia per i bucket vettoriali, consulta. Protezione e crittografia dei dati in S3 Vectors

    Nota

    Il tipo di crittografia non può essere modificato dopo la creazione del bucket vettoriale.

  6. Scegli Crea bucket vettoriale.

Passaggio 2: crea un indice vettoriale in un bucket vettoriale con la console

Nota

Scegliete con attenzione i parametri di configurazione dell'indice vettoriale. Dopo aver creato un indice vettoriale, non puoi aggiornare il nome dell'indice vettoriale, la dimensione, la metrica della distanza o le chiavi di metadati non filtrabili. Per modificare uno di questi valori, devi creare un nuovo indice vettoriale.

In questo passaggio, crei un indice vettoriale nel tuo bucket vettoriale. L'indice vettoriale viene utilizzato per archiviare e interrogare gli incorporamenti vettoriali. Per ulteriori informazioni sugli indici vettoriali, vedere. Indici vettoriali

Per creare un indice vettoriale

  1. Passa al bucket vettoriale appena creato nell'elenco dei bucket Vector sulla console Amazon S3.

  2. Scegli Crea indice vettoriale.

  3. Nella pagina Crea indice vettoriale, inserisci un nome nel campo Nome dell'indice vettoriale. In questo tutorial, utilizziamo movies come nome dell'indice vettoriale.

    I nomi degli indici vettoriali devono contenere da 3 a 63 caratteri e sono unici all'interno di questo bucket vettoriale. I caratteri validi sono lettere minuscole (a-z), numeri (0-9), trattini (-) e punti (.).

    Il nome dell'indice vettoriale non può essere modificato dopo la creazione dell'indice.

  4. In Dimensione, specificate un valore numerico compreso tra 1 e 4096 che determini quanti numeri saranno presenti in ogni vettore generato dal modello di incorporamento vettoriale. I modelli di incorporamento sono modelli specializzati di machine learning (ML) che convertono dati (come testo o immagini) in vettori numerici. I modelli di incorporamento in genere producono output compresi tra 500 e 2000 dimensioni, con ogni dimensione costituita da un numero a virgola mobile. In questo tutorial, utilizzeremo il modello di incorporamento Titan Text v2 di Amazon Bedrock. Questo modello di incorporamento utilizza vettori a 1024 dimensioni come impostazione predefinita, quindi imposteremo la dimensione per l'indice vettoriale su. 1024

    Il valore della dimensione non può essere modificato dopo la creazione dell'indice. Specificate con attenzione il valore della dimensione in base ai consigli del modello di incorporamento.

  5. In Metrica della distanza, scegli Coseno (che misura la somiglianza angolare) o Euclideo (che misura la distanza in linea retta) come metrica della distanza per definire come viene calcolata la somiglianza tra i vettori durante le query. In questo tutorial, scegliamo Cosine.

    La metrica della distanza non può essere modificata dopo la creazione dell'indice. Scegli con cura la metrica della distanza in base ai consigli del tuo modello di incorporamento.

  6. In Impostazioni aggiuntive (opzionale), puoi specificare chiavi di metadati non filtrabili per archiviare informazioni supplementari insieme agli incorporamenti vettoriali.

    Nota

    Puoi allegare metadati filtrabili come coppie chiave-valore a ciascun vettore quando inserisci dati vettoriali dopo la creazione dell'indice. Per impostazione predefinita, tutte le chiavi di metadati allegate ai vettori sono filtrabili e possono essere utilizzate come filtri in una query di similarità. Solo le chiavi di metadati specificate come non filtrabili durante la creazione di indici vettoriali sono escluse dal filtraggio.

    Ogni chiave di metadati non filtrabile deve contenere da 1 a 63 caratteri ed essere unica all'interno dell'indice vettoriale. Queste chiavi sono utili per archiviare informazioni di riferimento che non è necessario filtrare durante le query di somiglianza. Ad esempio, quando lavorate con gli incorporamenti di testo, potreste voler conservare i blocchi di testo originali a scopo di riferimento. In questo tutorial, aggiungiamo una chiave di metadati non filtrabile denominata in modo source_text da memorizzare i dati di testo per i quali vogliamo creare incorporamenti vettoriali.

    Non puoi aggiornare le chiavi di metadati non filtrabili dopo la creazione dell'indice. Pianifica attentamente la struttura dei metadati.

  7. Scegli Crea indice vettoriale.

Verifica che il tuo nuovo indice vettoriale appaia all'interno del bucket.

Passaggio 3: Inserisci i vettori in un indice vettoriale con l'SDK for Python (Boto3)

Per inserire, elencare e interrogare i vettori, usa o l' AWS SDKsAPI AWS CLI REST di Amazon S3.

Questo passaggio consiste nell'inserire incorporamenti vettoriali nell'indice vettoriale con l'operazione API. PutVectors

È necessario innanzitutto generare incorporamenti vettoriali utilizzando il modello di incorporamento di propria scelta. Se utilizzi Amazon Bedrock, genera incorporamenti utilizzando l'operazione InvokeModelAPI per specificare il tuo modello di incorporamento preferito. In alternativa, per generare e inserire incorporamenti vettoriali con un solo comando, consulta. (Facoltativo) Automatizza la creazione di incorporamenti vettoriali con la CLI di S3 Vectors Embed

Il codice di esempio seguente genera incorporamenti vettoriali a 1024 dimensioni con il modello Titan Text Embeddings V2 di Amazon Bedrock utilizzando e li memorizza nel tuo indice vettoriale utilizzando AWS SDK per Python (Boto3) l'API. PutVectors Oltre a ciascun vettore, alleghiamo coppie chiave-valore come metadati filtrabili. Inoltre, utilizziamo una chiave di metadati non filtrabile denominata source_text per preservare il testo originale da cui deriva ogni vettore. Per massimizzare la velocità di trasmissione delle richieste e ottimizzare la velocità e l'efficienza, consigliamo di inserire ed eliminare i vettori in batch. Per ulteriori informazioni, consulta Le migliori pratiche per S3 Vectors.

# Populate a vector index with embeddings from Amazon Titan Text Embeddings V2. import boto3 import json # Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. bedrock = boto3.client("bedrock-runtime", region_name="us-west-2") s3vectors = boto3.client("s3vectors", region_name="us-west-2") # Texts to convert to embeddings. texts = [ "Star Wars: A farm boy joins rebels to fight an evil empire in space", "Jurassic Park: Scientists create dinosaurs in a theme park that goes wrong", "Finding Nemo: A father fish searches the ocean to find his lost son" ] # Generate vector embeddings. embeddings = [] for text in texts: response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": text}) ) # Extract embedding from response. response_body = json.loads(response["body"].read()) embeddings.append(response_body["embedding"]) # Write embeddings into vector index with metadata. s3vectors.put_vectors( vectorBucketName="media-embeddings", indexName="movies", vectors=[ { "key": "Star Wars", "data": {"float32": embeddings[0]}, "metadata": {"source_text": texts[0], "genre":"scifi"} }, { "key": "Jurassic Park", "data": {"float32": embeddings[1]}, "metadata": {"source_text": texts[1], "genre":"scifi"} }, { "key": "Finding Nemo", "data": {"float32": embeddings[2]}, "metadata": {"source_text": texts[2], "genre":"family"} } ] )

Fase 4. Interroga i vettori in un indice vettoriale con l'SDK for Python (Boto3)

Dopo aver archiviato gli incorporamenti dei vettori nell'indice vettoriale, puoi eseguire una ricerca di similarità utilizzando l'operazione API. QueryVectors

È innanzitutto necessario generare gli incorporamenti vettoriali delle query utilizzando lo stesso modello di incorporamento utilizzato durante l'inserimento in. Passaggio 3: Inserisci i vettori in un indice vettoriale con l'SDK for Python (Boto3) In questo tutorial, usa il modello Titan Text Embeddings V2 di Amazon Bedrock tramite l'SDK for Python (Boto3).

Puoi eseguire una ricerca di similarità per restituire i vettori corrispondenti più vicini. In una ricerca per similarità, puoi facoltativamente filtrare utilizzando chiavi di metadati per restringere i risultati in base a criteri specifici mantenendo la pertinenza semantica.

# Query a vector index with an embedding from Amazon Titan Text Embeddings V2. import boto3 import json # Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. bedrock = boto3.client("bedrock-runtime", region_name="us-west-2") s3vectors = boto3.client("s3vectors", region_name="us-west-2") # Query text to convert to an embedding. input_text = "adventures in space" # Generate the vector embedding. response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": input_text}) ) # Extract embedding from response. model_response = json.loads(response["body"].read()) embedding = model_response["embedding"] # Query vector index. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2)) # Query vector index with a metadata filter. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, filter={"genre": "scifi"}, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2))

(Facoltativo) Automatizza la creazione di incorporamenti vettoriali con la CLI di S3 Vectors Embed

La CLI di Amazon S3 Vectors Embed è uno strumento a riga di comando autonomo che semplifica il processo di utilizzo degli incorporamenti vettoriali in S3 Vectors. Con comandi singoli, puoi creare incorporamenti vettoriali per i tuoi dati utilizzando Amazon Bedrock e archiviarli e interrogarli nel tuo indice vettoriale S3. Lo strumento supporta i seguenti comandi:

  • s3vectors-embed put: Genera incorporamenti vettoriali di testo, contenuto di file o oggetti S3 e memorizzali come vettori in un indice vettoriale S3.

  • s3vectors-embed query: Incorpora un input di query e cerca vettori simili in un indice vettoriale S3.

Per ulteriori informazioni sui comandi e sull'utilizzo, consulta il repository CLI di Amazon S3 Vectors Embed. GitHub

(Facoltativo) Integra i vettori S3 con le Knowledge Base di Amazon Bedrock

Amazon Bedrock Knowledge Bases si integra con S3 Vectors per lo storage conveniente e a lungo termine di set di dati vettoriali.

Prerequisiti

Segui i prerequisiti per assicurarti di disporre delle autorizzazioni necessarie per creare una knowledge base Amazon Bedrock.

  • Autorizzazioni IAM appropriate per i servizi S3 Vectors e Amazon Bedrock. Per ulteriori informazioni sulle autorizzazioni IAM per S3 Vectors, consulta. Gestione delle identità e degli accessi in S3 Vectors

  • I documenti sorgente sono stati preparati per essere inseriti nella knowledge base.

  • Comprensione dei requisiti del modello di incorporamento.

Crea una knowledge base Amazon Bedrock con S3 Vectors nella console

Amazon Bedrock Knowledge Bases fornisce un flusso di lavoro end-to-end RAG completamente gestito. Quando crei una knowledge base con S3 Vectors, Amazon Bedrock recupera automaticamente i dati dalla tua fonte di dati S3, converte i contenuti in blocchi di testo, genera incorporamenti e li archivia nel tuo indice vettoriale. Puoi quindi interrogare la knowledge base e generare risposte basate su blocchi recuperati dai dati di origine.

Per creare una knowledge base Amazon Bedrock con S3 Vectors nella console
  1. Accedi all' AWS Management Console utilizzo di un ruolo IAM con autorizzazioni Amazon Bedrock e apri la console Amazon Bedrock all'indirizzo. https://console.aws.amazon.com/bedrock/

  2. Nel riquadro di navigazione a sinistra, scegli Knowledge Bases.

  3. Nella sezione Knowledge Base, scegli Crea. Nell'elenco a discesa, scegli Knowledge Base con archivio vettoriale.

  4. Mantieni il nome della Knowledge Base, la descrizione della Knowledge Base e le autorizzazioni IAM ai valori predefiniti in questo tutorial.

  5. Per Scegli un tipo di origine dati, scegli l'origine dati a cui connettere la tua Knowledge Base. In questo tutorial, scegli Amazon S3.

  6. (Facoltativamente) Fornisci eventuali tag o registri delle applicazioni.

  7. Scegli Next (Successivo).

  8. Nella pagina Configura l'origine dati, mantieni il nome dell'origine dati, la posizione dell'origine dati, la strategia di analisi e la strategia di suddivisione in blocchi con le impostazioni predefinite di questo tutorial.

  9. Nell'URI S3, inserisci il bucket generico S3 che contiene i tuoi file sorgente oppure scegli Browse S3 e scegli il bucket S3 per uso generico.

  10. Per i dati S3 crittografati, seleziona Aggiungi chiave KMS gestita dal cliente per i dati S3 e specifica la tua chiave KMS gestita dal cliente.

  11. Scegli Avanti per procedere al passaggio successivo che specifica le opzioni Embeddings model e Vector store.

  12. Nella sezione Modello Embeddings, scegli Seleziona modello e scegli un modello di incorporamento compatibile per l'uso con S3 Vectors. È necessario utilizzare incorporamenti a virgola mobile. Il tipo binario non è supportato.

  13. (Facoltativo) Espandi la sezione Configurazioni aggiuntive per visualizzare le seguenti opzioni di configurazione (non tutti i modelli supportano tutte le configurazioni):

    • Tipo di incorporamenti: se convertire i dati in incorporamenti vettoriali a virgola mobile (float32) (più precisi ma più costosi) o incorporamenti vettoriali binari (meno precisi, ma meno costosi). Per l'integrazione con S3 Vectors, devi scegliere gli incorporamenti vettoriali a virgola mobile.

    • Dimensioni vettoriali: scegli la dimensione dimensionale consigliata per i modelli di incorporamento.

  14. Nella sezione Vector store, scegli il metodo consigliato Creazione rapida di un nuovo archivio vettoriale per la configurazione automatica di un nuovo bucket vettoriale oppure scegli Usa un archivio vettoriale esistente per utilizzare un bucket vettoriale esistente, se disponibile. Per informazioni sull'utilizzo di un vector store flow esistente, consulta Prerequisiti per l'utilizzo di un vector store creato per una knowledge base nella Amazon Bedrock User Guide.

  15. Per configurazioni aggiuntive: per impostazione predefinita, il bucket vettoriale utilizza la crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3). Puoi scegliere di utilizzare la tua chiave KMS per la crittografia lato server con le chiavi del servizio di gestione delle chiavi (SSE-KMS) per un maggiore controllo sulle AWS impostazioni di crittografia.

  16. Scegli Avanti per esaminare i dettagli della Knowledge Base, quindi scegli Crea Knowledge Base.

Nota

Il tempo necessario per creare una knowledge base dipende dalle configurazioni specifiche. Una volta completata la creazione di una knowledge base, lo stato della knowledge base cambia e indica che è pronta o disponibile. Una volta che la knowledge base è pronta e disponibile, sincronizza la fonte di dati per la prima volta o ogni volta che desideri mantenere aggiornati i contenuti. Per sincronizzare la fonte di dati, scegli la tua knowledge base nella console e scegli Sincronizza nella sezione panoramica dell'origine dati.

(Facoltativo) Integra i vettori S3 con Amazon OpenSearch

Amazon OpenSearch Service è un servizio completamente gestito che semplifica l'implementazione, la scalabilità e il AWS funzionamento OpenSearch nel cloud. Esistono due integrazioni tra S3 Vectors e. OpenSearch Una consiste nell'esportare i dati vettoriali da S3 Vectors a Serverless per funzionalità di ricerca ad OpenSearch alte prestazioni. L'altro utilizza S3 Vectors come motore di archiviazione economico, pur mantenendo l'accesso alle funzionalità. OpenSearch OpenSearch

Per ulteriori informazioni, consulta Utilizzo di vettori S3 con servizio OpenSearch .