Insertion de vecteurs dans un index vectoriel - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Insertion de vecteurs dans un index vectoriel

Note

Amazon S3 Vectors est en version préliminaire pour Amazon Simple Storage Service et est sujet à modification.

Vous pouvez ajouter des vecteurs à un index vectoriel à l'aide de l'opération PutVectorsAPI. Chaque vecteur est constitué d'une clé qui identifie de manière unique chaque vecteur dans un index vectoriel. Si vous insérez un vecteur avec une clé qui existe déjà dans l'index, il remplacera complètement le vecteur existant, ce qui rend le vecteur précédent impossible à rechercher. Pour optimiser le débit d'écriture, il est recommandé d'insérer des vecteurs par lots volumineux, jusqu'à la taille de lot maximale pour. PutVectors Pour plus d'informations sur la taille de lot maximale pourPutVectors, qui est la limite de vecteurs par appel d'PutVectorsAPI, consultezLimites et restrictions. En outre, vous pouvez joindre des métadonnées (par exemple, année, auteur, genre, lieu) sous forme de paires clé-valeur à chaque vecteur. Par défaut, toutes les clés de métadonnées associées aux vecteurs sont filtrables et peuvent être utilisées comme filtres dans une requête de similarité. Seules les clés de métadonnées spécifiées comme non filtrables lors de la création de l'index vectoriel sont exclues du filtrage. Les index vectoriels S3 prennent en charge les types de métadonnées de type chaîne, numérique, booléen et liste. Pour plus d'informations sur la limite de taille totale des métadonnées par vecteur et la limite de taille des métadonnées filtrables par vecteur, consultezLimites et restrictions. Si la taille des métadonnées dépasse ces limites, l'opération d'PutVectorsAPI renvoie une 400 Bad Request erreur.

Avant d'ajouter des données vectorielles à votre index vectoriel à l'aide de l'opération PutVectors API, vous devez convertir vos données brutes en intégrations vectorielles, qui sont des représentations numériques de votre contenu sous forme de tableaux de nombres à virgule flottante. Les intégrations vectorielles capturent la signification sémantique de votre contenu, permettant ainsi des recherches de similarité une fois qu'elles sont stockées dans votre index vectoriel pendant l'opération. PutVectors Vous pouvez générer des intégrations vectorielles à l'aide de différentes méthodes en fonction de votre type de données et de votre cas d'utilisation. Ces méthodes incluent l'utilisation de frameworks d'apprentissage automatique, de bibliothèques d'intégration spécialisées ou de AWS services tels qu'Amazon Bedrock. Par exemple, si vous utilisez Amazon Bedrock, vous pouvez générer des intégrations à l'aide de l'opération InvokeModelAPI et de votre modèle d'intégration préféré.

En outre, les bases de connaissances Amazon Bedrock fournissent un flux de travail end-to-end RAG entièrement géré dans lequel Amazon Bedrock récupère automatiquement les données de votre source de données S3, convertit le contenu en blocs de texte, génère des intégrations et les stocke dans votre index vectoriel. Vous pouvez ensuite interroger la base de connaissances et générer des réponses basées sur des fragments extraits de vos données sources.

En outre, l'outil open source Amazon S3 Vectors Embed CLI fournit un moyen simplifié de générer des intégrations et d'effectuer des recherches sémantiques à partir de la ligne de commande. Pour plus d'informations sur cet outil open source qui automatise à la fois la génération d'intégrations vectorielles avec les modèles Amazon Bedrock Foundation et les opérations de recherche sémantique dans vos index vectoriels S3, consultez. Création d'intégrations vectorielles et réalisation de recherches sémantiques avec s3vectors-embed-cli

Note

Lorsque vous insérez des données vectorielles dans votre index vectoriel, vous devez fournir les données vectorielles sous forme de valeurs float32 (virgule flottante 32 bits). Si vous transmettez des valeurs plus précises à un AWS SDK, S3 Vectors les convertit en virgule flottante 32 bits avant de les stocker GetVectorsListVectors, et les QueryVectorsopérations renvoient les valeurs. float32 Différents AWS SDKs peuvent avoir des types numériques par défaut différents. Assurez-vous donc que vos vecteurs sont correctement formatés en tant que float32 valeurs, quel que soit le SDK que vous utilisez. Par exemple, en Python, utilisez numpy.float32 ou convertissez explicitement vos valeurs.

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"} } ] )