Tutoriel : Débuter avec les vecteurs S3 - 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.

Tutoriel : Débuter avec les vecteurs S3

Note

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

Dans ce didacticiel, vous allez créer un compartiment vectoriel S3 et un index vectoriel Région AWS dans la console Amazon S3. Ensuite, vous utilisez un modèle d'intégration Amazon Bedrock pour générer des intégrations vectorielles de vos données et les stocker dans votre index vectoriel pour effectuer des recherches sémantiques.

Pour commencer, créez un AWS compte si vous n'en avez pas déjà un. Pour plus d'informations sur la configuration d'un compte, consultezPremiers pas avec Amazon S3.

Étape 1 : créer un bucket vectoriel avec la console

Les compartiments vectoriels S3 sont un type de compartiment Amazon S3 spécialement conçu pour stocker et interroger des vecteurs. Vous utilisez des opérations d'API dédiées pour écrire et interroger des données vectorielles. Vous pouvez contrôler l'accès à vos données vectorielles à l'aide de mécanismes de contrôle d'accès tels que les politiques basées sur l'identité IAM et les politiques basées sur les ressources.

Au cours de cette étape, vous utilisez la console Amazon S3 pour créer votre premier compartiment vectoriel. Pour d'autres méthodes de création d'un compartiment vectoriel, consultezCréation d'un bucket vectoriel.

Pour créer un bucket vectoriel

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation de gauche, choisissez Vector buckets.

  3. Sur la page Compartiments vectoriels, choisissez Créer un compartiment vectoriel.

  4. Sur la page Créer un compartiment vectoriel, dans le champ Nom du compartiment vectoriel, entrez un nom. Dans ce didacticiel, nous utilisons media-embeddings comme nom de compartiment vectoriel. Les noms de compartiments vectoriels doivent comporter de 3 à 63 caractères et être uniques au sein d'un Région AWS. Les caractères valides sont les lettres minuscules (a-z), les chiffres (0-9) et les traits d'union (-).

    Note

    Le nom du bucket vectoriel ne peut pas être modifié une fois le bucket créé.

  5. Sous Chiffrement, choisissez Spécifier le type de cryptage. Vous avez la possibilité de spécifier le type de chiffrement : chiffrement côté serveur avec AWS Key Management Service clés (SSE-KMS) ou chiffrement côté serveur par défaut avec clés gérées Amazon S3 (SSE-S3). Dans ce didacticiel, nous avons choisi le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). Pour plus d'informations sur la définition de la configuration de chiffrement pour les compartiments vectoriels, consultezProtection des données et chiffrement dans S3 Vectors.

    Note

    Le type de chiffrement ne peut pas être modifié une fois le bucket vectoriel créé.

  6. Choisissez Create vector bucket.

Étape 2 : créer un index vectoriel dans un bucket vectoriel avec la console

Note

Choisissez soigneusement les paramètres de configuration de votre index vectoriel. Après avoir créé un index vectoriel, vous ne pouvez pas mettre à jour le nom de l'index vectoriel, la dimension, la métrique de distance ou les clés de métadonnées non filtrables. Pour modifier l'une de ces valeurs, vous devez créer un nouvel index vectoriel.

Au cours de cette étape, vous allez créer un index vectoriel dans votre compartiment vectoriel. L'index vectoriel est utilisé pour stocker et interroger vos intégrations vectorielles. Pour plus d'informations sur les index vectoriels, consultezIndices vectoriels.

Pour créer un index vectoriel

  1. Accédez au compartiment vectoriel nouvellement créé dans la liste des compartiments vectoriels de la console Amazon S3.

  2. Choisissez Créer un index vectoriel.

  3. Sur la page Créer un index vectoriel, entrez un nom dans le champ Nom de l'index vectoriel. Dans ce didacticiel, nous utilisons movies comme nom d'index vectoriel.

    Les noms des index vectoriels doivent comporter de 3 à 63 caractères et être uniques dans ce compartiment vectoriel. Les caractères valides sont les lettres minuscules (a-z), les chiffres (0-9), les traits d'union (-) et les points (.).

    Le nom de l'index vectoriel ne peut pas être modifié après la création de l'index.

  4. Sous Dimension, spécifiez une valeur numérique comprise entre 1 et 4096 qui détermine le nombre de nombres contenus dans chaque vecteur généré par votre modèle d'intégration de vecteurs. Les modèles d'intégration sont des modèles d'apprentissage automatique (ML) spécialisés qui convertissent des données (telles que du texte ou des images) en vecteurs numériques. Les modèles d'intégration produisent généralement des sorties comprises entre 500 et 2 000 dimensions, chaque dimension étant un nombre à virgule flottante. Dans ce didacticiel, nous utiliserons le modèle d'intégration Titan Text v2 d'Amazon Bedrock. Ce modèle d'intégration utilise des vecteurs à 1024 dimensions par défaut. Nous allons donc définir la dimension de l'indice vectoriel sur. 1024

    La valeur de dimension ne peut pas être modifiée après la création de l'index. Spécifiez soigneusement la valeur de dimension en fonction des recommandations de votre modèle d'intégration.

  5. Sous Métrique de distance, choisissez Cosinus (qui mesure la similarité angulaire) ou Euclidean (qui mesure la distance en ligne droite) comme métrique de distance pour définir le mode de calcul de la similitude entre les vecteurs lors des requêtes. Dans ce tutoriel, nous avons choisi Cosine.

    La métrique de distance ne peut pas être modifiée après la création de l'index. Choisissez soigneusement la métrique de distance en fonction des recommandations de votre modèle d'intégration.

  6. Sous Paramètres supplémentaires (facultatif), vous pouvez spécifier des clés de métadonnées non filtrables pour stocker des informations supplémentaires à côté de vos intégrations vectorielles.

    Note

    Vous pouvez associer des métadonnées filtrables sous forme de paires clé-valeur à chaque vecteur lorsque vous insérez des données vectorielles après la création de l'index. 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.

    Chaque clé de métadonnées non filtrable doit comporter entre 1 et 63 caractères et être unique dans l'index vectoriel. Ces clés sont utiles pour stocker des informations de référence que vous n'avez pas besoin de filtrer lors des requêtes de similarité. Par exemple, lorsque vous travaillez avec des intégrations de texte, vous souhaiterez peut-être conserver les fragments de texte d'origine à des fins de référence. Dans ce didacticiel, nous ajoutons une clé de métadonnées non filtrable nommée source_text pour stocker les données de texte pour lesquelles nous voulons créer des intégrations vectorielles.

    Vous ne pouvez pas mettre à jour les clés de métadonnées non filtrables après la création de l'index. Planifiez soigneusement votre structure de métadonnées.

  7. Choisissez Créer un index vectoriel.

Vérifiez que votre nouvel index vectoriel apparaît dans le compartiment.

Étape 3 : Insérer des vecteurs dans un index vectoriel avec le SDK pour Python (SDK for Python)

Pour insérer, répertorier et interroger des vecteurs, utilisez l' AWS SDKsAPI REST AWS CLI, ou Amazon S3.

Cette étape consiste à insérer des intégrations vectorielles dans votre index vectoriel à l'aide de l'PutVectorsopération API.

Vous devez d'abord générer des intégrations vectorielles en utilisant le modèle d'intégration de votre choix. Si vous utilisez Amazon Bedrock, générez des intégrations en utilisant l'opération d'InvokeModelAPI pour spécifier votre modèle d'intégration préféré. Vous pouvez également générer et insérer des intégrations vectorielles à l'aide d'une seule commande, voir. (Facultatif) Automatisez la création d'intégrations vectorielles avec la CLI S3 Vectors Embed

L'exemple de code suivant génère des intégrations vectorielles à 1024 dimensions avec le modèle Titan Text Embeddings V2 d'Amazon Bedrock en utilisant AWS SDK pour Python (Boto3) le, et les stocke dans votre index vectoriel à l'aide de l'API. PutVectors À chaque vecteur, nous associons des paires clé-valeur sous forme de métadonnées filtrables. De plus, nous utilisons une clé de métadonnées non filtrable dont le nom source_text permet de préserver le texte original dont chaque vecteur est dérivé. Pour optimiser le débit des demandes et optimiser la vitesse et l'efficacité, nous vous recommandons d'insérer et de supprimer des vecteurs par lots. Pour de plus amples informations, veuillez consulter Meilleures pratiques en matière de vecteurs S3.

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

Étape 4 : Vecteurs de requête dans un index vectoriel avec le SDK pour Python (Boto3)

Après avoir enregistré les intégrations de vos vecteurs dans l'index vectoriel, vous pouvez effectuer une recherche de similarité à l'aide de l'QueryVectorsopération API.

Vous devez d'abord générer vos intégrations vectorielles de requête en utilisant le même modèle d'intégration que celui utilisé lors de l'insertion dans. Étape 3 : Insérer des vecteurs dans un index vectoriel avec le SDK pour Python (SDK for Python) Dans ce didacticiel, utilisez le modèle Titan Text Embeddings V2 d'Amazon Bedrock via le SDK pour Python (Boto3).

Vous pouvez effectuer une recherche de similarité pour obtenir les vecteurs correspondants les plus proches. Dans une recherche de similarité, vous pouvez éventuellement filtrer à l'aide de clés de métadonnées pour affiner les résultats en fonction de critères spécifiques tout en préservant la pertinence sémantique.

# 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))

(Facultatif) Automatisez la création d'intégrations vectorielles avec la CLI S3 Vectors Embed

Amazon S3 Vectors Embed CLI est un outil de ligne de commande autonome qui simplifie le processus d'utilisation des intégrations vectorielles dans les vecteurs S3. À l'aide de commandes uniques, vous pouvez créer des intégrations vectorielles pour vos données à l'aide d'Amazon Bedrock, puis les stocker et les interroger dans votre index vectoriel S3. L'outil prend en charge les commandes suivantes :

  • s3vectors-embed put: générez des intégrations vectorielles de texte, de contenu de fichier ou d'objets S3, et stockez-les sous forme de vecteurs dans un index vectoriel S3.

  • s3vectors-embed query: Incorporez une entrée de requête et recherchez des vecteurs similaires dans un index vectoriel S3.

Pour plus d'informations sur les commandes et leur utilisation, consultez le GitHub référentiel Amazon S3 Vectors Embed CLI.

(Facultatif) Intégrez les vecteurs S3 aux bases de connaissances Amazon Bedrock

Les bases de connaissances Amazon Bedrock s'intègrent aux vecteurs S3 pour un stockage rentable et à long terme des ensembles de données vectorielles.

Prérequis

Suivez les prérequis pour vous assurer que vous disposez des autorisations nécessaires pour créer une base de connaissances Amazon Bedrock.

  • Autorisations IAM appropriées pour les services S3 Vectors et Amazon Bedrock. Pour plus d'informations sur les autorisations IAM pour les vecteurs S3, consultezGestion des identités et des accès dans S3 Vectors.

  • Vos documents sources ont été préparés pour être intégrés à la base de connaissances.

  • Compréhension des exigences de votre modèle d'intégration.

Créez une base de connaissances Amazon Bedrock avec des vecteurs S3 dans la console

Les bases de connaissances Amazon Bedrock fournissent un flux de travail end-to-end RAG entièrement géré. Lorsque vous créez une base de connaissances avec S3 Vectors, Amazon Bedrock extrait 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.

Pour créer une base de connaissances Amazon Bedrock avec des vecteurs S3 dans la console
  1. Connectez-vous à l' AWS Management Console aide d'un rôle IAM avec les autorisations Amazon Bedrock et ouvrez la console Amazon Bedrock à l'adresse. https://console.aws.amazon.com/bedrock/

  2. Dans le volet de navigation de gauche, sélectionnez Knowledge Bases.

  3. Dans la section Bases de connaissances, choisissez Create. Dans la liste déroulante, choisissez Base de connaissances avec magasin vectoriel.

  4. Dans ce didacticiel, conservez le nom de la base de connaissances, la description de la base de connaissances et les autorisations IAM à leurs valeurs par défaut.

  5. Pour Choisir un type de source de données, choisissez la source de données à laquelle connecter votre base de connaissances. Dans ce didacticiel, choisissez Amazon S3.

  6. (Facultatif) Fournissez des balises ou des journaux d'application.

  7. Choisissez Suivant.

  8. Sur la page Configurer la source de données, conservez les paramètres par défaut du nom de la source de données, de l'emplacement de la source de données, de la stratégie d'analyse et de la stratégie de segmentation dans les paramètres par défaut de ce didacticiel.

  9. Dans l'URI S3, entrez le compartiment S3 à usage général qui contient vos fichiers source, ou choisissez Browse S3 et choisissez le compartiment à usage général S3.

  10. Pour les données S3 chiffrées, sélectionnez Ajouter une clé KMS gérée par le client pour les données S3 et spécifiez votre clé KMS gérée par le client.

  11. Choisissez Next pour passer à l'étape suivante qui spécifie le modèle d'intégration et les options de stockage vectoriel.

  12. Dans la section Modèle d'intégration, choisissez Sélectionner le modèle et choisissez un modèle d'intégration compatible avec les vecteurs S3. Vous devez utiliser des intégrations à virgule flottante. Le type binaire n'est pas pris en charge.

  13. (Facultatif) Développez la section Configurations supplémentaires pour voir les options de configuration suivantes (tous les modèles ne prennent pas en charge toutes les configurations) :

    • Type d'intégration : s'il faut convertir les données en intégrations vectorielles à virgule flottante (float32) (plus précises, mais plus coûteuses) ou en intégrations vectorielles binaires (moins précises, mais moins coûteuses). Pour intégrer les vecteurs S3, vous devez choisir les intégrations vectorielles à virgule flottante.

    • Dimensions vectorielles : choisissez la taille de dimension recommandée pour les modèles d'intégration.

  14. Dans la section Magasin de vecteurs, choisissez la méthode recommandée Création rapide d'un nouveau magasin de vecteurs pour la configuration automatique d'un nouveau compartiment de vecteurs, ou choisissez Utiliser un magasin de vecteurs existant pour utiliser un compartiment de vecteurs existant s'il est disponible. Pour plus d'informations sur l'utilisation d'un flux de magasin vectoriel existant, consultez la section Conditions préalables à l'utilisation d'un magasin vectoriel que vous avez créé pour une base de connaissances dans le guide de l'utilisateur d'Amazon Bedrock.

  15. Pour les configurations supplémentaires : par défaut, votre compartiment vectoriel utilise le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). Vous pouvez choisir d'utiliser votre propre clé KMS pour le chiffrement côté serveur avec les clés du service de gestion des AWS clés (SSE-KMS) pour un meilleur contrôle des paramètres de chiffrement.

  16. Choisissez Suivant pour consulter les détails de la base de connaissances, puis choisissez Créer une base de connaissances.

Note

Le temps nécessaire à la création d'une base de connaissances dépend de vos configurations spécifiques. Lorsque la création d'une base de connaissances est terminée, le statut de la base de connaissances change pour indiquer qu'elle est prête ou disponible. Une fois que votre base de connaissances est prête et disponible, synchronisez votre source de données pour la première fois ou chaque fois que vous souhaitez maintenir votre contenu à jour. Pour synchroniser votre source de données, choisissez votre base de connaissances dans la console et choisissez Synchroniser dans la section d'aperçu de la source de données.

(Facultatif) Intégrez les vecteurs S3 à Amazon OpenSearch

Amazon OpenSearch Service est un service entièrement géré qui simplifie le déploiement, le dimensionnement et le fonctionnement OpenSearch dans le AWS cloud. Il existe deux intégrations entre S3 Vectors et OpenSearch. La première consiste à exporter des données vectorielles de S3 Vectors vers OpenSearch Serverless pour des capacités de recherche performantes. L'autre utilise S3 Vectors comme moteur de stockage rentable tout OpenSearch en conservant l'accès aux OpenSearch fonctionnalités.

Pour de plus amples informations, veuillez consulter Utilisation de vecteurs S3 avec OpenSearch Service.