Insertion de vecteurs dans un index vectoriel
Note
Amazon S3 Vectors est en version préliminaire pour Amazon Simple Storage Service et sujet à modification.
Vous pouvez ajouter des vecteurs à un index vectoriel à l’aide de l’opération d’API PutVectors. 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 remplace 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 pour PutVectors, qui est la limite de vecteurs par appel d’API PutVectors, consultez Limites et restrictions. En outre, vous pouvez attacher 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 attachées à des vecteurs sont filtrables et utilisables 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 des métadonnées Chaîne, Nombre, 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, consultez Limites et restrictions. Si la taille des métadonnées dépasse ces limites, l’opération d’API PutVectors renvoie une erreur 400 Bad Request.
Avant d’ajouter des données vectorielles à votre index vectoriel à l’aide de l’opération d’API PutVectors, vous devez convertir vos données brutes en vectorisations vectorielles, qui sont des représentations numériques de votre contenu sous forme de tables de nombres à virgule flottante. Les vectorisations 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 au cours de l’opération PutVectors. Vous pouvez générer des vectorisations à 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 cadre de machine learning, de bibliothèques de vectorisation spécialisées ou de services AWS tels qu’Amazon Bedrock. Par exemple, si vous utilisez Amazon Bedrock, vous pouvez générer des vectorisations à l’aide de l’opération d’API InvokeModel et de votre modèle de vectorisation préféré.
En outre, les bases de connaissances d’Amazon Bedrock fournissent un flux de travail RAG de bout en bout 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 vectorisations 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 blocs récupérés 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 vectorisations 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 de vectorisations avec les modèles de fondation Amazon Bedrock et les opérations de recherche sémantique dans vos index vectoriels S3, consultez Création de vectorisation 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 kit AWS SDK, S3 Vectors les convertit en virgule flottante 32 bits avant de les stocker, et les opérations GetVectors et ListVectors et QueryVectors renvoient les valeurs float32. Les différents kits AWS SDK peuvent avoir des types numériques par défaut différents. Assurez-vous donc que vos vecteurs sont correctement formatés sous forme de valeurs float32, quel que soit le kit SDK que vous utilisez. Par exemple, en Python, utilisez numpy.float32 ou convertissez explicitement vos valeurs.