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

È possibile aggiungere vettori a un indice vettoriale con l'operazione API. PutVectors Ogni vettore è costituito da una chiave, che lo identifica in modo univoco in un indice vettoriale. Se si inserisce un vettore con una chiave già esistente nell’indice, il vettore esistente verrà completamente sovrascritto, rendendo il vettore precedente non più ricercabile. Per massimizzare la velocità di scrittura e ottimizzare i costi, si consiglia di inserire i vettori in batch di grandi dimensioni, fino alla dimensione massima del batch per. PutVectors Tuttavia, per i carichi di lavoro che richiedono l'utilizzo di batch più piccoli, ad esempio quando sono attivi, i dati vettoriali in entrata devono diventare immediatamente ricercabili, puoi ottenere un throughput di scrittura più elevato utilizzando un numero maggiore di PutVectors richieste simultanee, fino al limite massimo consentito di richieste al secondo. Per ulteriori informazioni sulla dimensione massima del batch perPutVectors, ovvero il limite di vettori per chiamata PutVectors API, e il limite massimo di richieste e vettori per secondo, consulta. Limitazioni e restrizioni Inoltre, è possibile collegare a ciascun vettore i metadati (ad esempio anno, autore, genere, posizione) come coppie chiave-valore. Per impostazione predefinita, tutte le chiavi di metadati collegate 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 dell’indice vettoriale non possono essere utilizzate come filtro. Gli indici vettoriali S3 supportano i metadati di tipo stringa, numerico, booleano ed elenco. Per ulteriori informazioni sul limite della dimensione totale dei metadati per vettore e sul limite della dimensione dei metadati filtrabili per vettore, consulta Limitazioni e restrizioni. Se la dimensione dei metadati supera questi limiti, l’operazione API PutVectors restituirà un errore 400 Bad Request.

Prima di aggiungere dati vettoriali all’indice vettoriale con l’operazione API PutVectors, è necessario convertire i dati non elaborati in embedding vettoriali, che sono rappresentazioni numeriche dei contenuti sotto forma di array di numeri a virgola mobile. Gli embedding vettoriali acquisiscono il significato semantico dei contenuti, consentendo le ricerche per similarità una volta archiviati nell’indice vettoriale tramite l’operazione PutVectors. È possibile generare embedding vettoriali utilizzando vari metodi a seconda del tipo di dati e del caso d’uso. Questi metodi includono l’utilizzo di framework di machine learning, librerie di embedding specializzate o servizi AWS 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. È quindi possibile eseguire query sulla knowledge base e ottenere risposte basate sui blocchi recuperati dai dati di origine.

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

Nota

Quando inserisci dati vettoriali nell’indice vettoriale, è necessario fornire i dati vettoriali come valori float32 (in virgola mobile a 32 bit). Se passi valori ad alta 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 utilizza numpy.float32 o converti in modo esplicito i 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"} } ] )