Inserimento di vettori in un indice vettoriale - 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à.

Inserimento di vettori in un indice vettoriale

Nota

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

Puoi aggiungere vettori a un indice vettoriale con l'operazione API. PutVectors Ogni vettore è costituito da una chiave, che identifica in modo univoco ogni vettore in un indice vettoriale. Se inserite un vettore con una chiave già esistente nell'indice, questo sovrascriverà completamente il vettore esistente, il che rende il vettore precedente non più ricercabile. Per massimizzare la velocità di scrittura, si consiglia di inserire i vettori in batch di grandi dimensioni, fino alla dimensione massima del batch per. PutVectors Per ulteriori informazioni sulla dimensione massima del batch perPutVectors, che è il limite di vettori per PutVectors chiamata API, consulta. Limitazioni e restrizioni Inoltre, puoi allegare metadati (ad esempio, anno, autore, genere, posizione) come coppie chiave-valore a ciascun vettore. Per impostazione predefinita, tutte le chiavi di metadati allegate ai vettori sono filtrabili e possono essere utilizzate come filtri in una query di somiglianza. Solo le chiavi di metadati specificate come non filtrabili durante la creazione di indici vettoriali sono escluse dal filtraggio. Gli indici vettoriali S3 supportano i tipi di metadati di tipo stringa, numerico, booleano ed elenco. Per ulteriori informazioni sul limite di dimensione totale dei metadati per vettore e sul limite di dimensione dei metadati filtrabile per vettore, consulta. Limitazioni e restrizioni Se la dimensione dei metadati supera questi limiti, l'operazione API restituirà un errore. PutVectors 400 Bad Request

Prima di aggiungere dati vettoriali all'indice vettoriale con l'operazione PutVectors API, è necessario convertire i dati grezzi in incorporamenti vettoriali, che sono rappresentazioni numeriche dei contenuti sotto forma di matrici di numeri a virgola mobile. Gli incorporamenti vettoriali catturano il significato semantico dei tuoi contenuti, abilitando ricerche di somiglianza una volta archiviati nell'indice vettoriale tramite l'operazione. PutVectors È possibile generare incorporamenti vettoriali utilizzando vari metodi a seconda del tipo di dati e del caso d'uso. Questi metodi includono l'utilizzo di framework di apprendimento automatico, librerie di incorporamento specializzate o AWS servizi come Amazon Bedrock. Ad esempio, se utilizzi Amazon Bedrock, puoi generare incorporamenti con l'operazione InvokeModelAPI e il tuo modello di incorporamento preferito.

Inoltre, Amazon Bedrock Knowledge Bases fornisce un flusso di lavoro end-to-end RAG completamente gestito in cui Amazon Bedrock recupera automaticamente i dati dalla 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.

Inoltre, lo strumento CLI open source Amazon S3 Vectors Embed offre un modo semplificato per generare incorporamenti ed eseguire ricerche semantiche dalla riga di comando. Per ulteriori informazioni su questo strumento open source che automatizza sia la generazione di incorporamento vettoriale con i modelli di base di Amazon Bedrock sia le operazioni di ricerca semantica all'interno degli indici vettoriali S3, consulta. Creazione di incorporamenti vettoriali ed esecuzione di ricerche semantiche con s3vectors-embed-cli

Nota

Quando inserisci dati vettoriali nell'indice vettoriale, devi fornire i dati vettoriali come valori (virgola mobile a 32 bit). float32 Se passi valori con maggiore precisione a un AWS SDK, S3 Vectors converte i valori in virgola mobile a 32 bit prima di archiviarli e, e le operazioni restituiscono i valori. GetVectorsListVectorsQueryVectorsfloat32 Diversi AWS SDKs possono avere diversi tipi numerici predefiniti, quindi assicurati che i vettori siano formattati correttamente come valori indipendentemente dall'SDK che stai utilizzando. float32 Ad esempio, in Python, usa numpy.float32 o trasmetti in modo esplicito i tuoi valori.

SDK for Python
# 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"} } ] )