

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.

# Vecteurs
<a name="s3-vectors-vectors"></a>

Chaque vecteur est constitué d’une clé qui identifie de manière unique chaque vecteur dans un index vectoriel. En outre, vous pouvez attacher des métadonnées (par exemple, année, auteur, genre, lieu) sous forme de paires clé-valeur à chaque vecteur. 

Les opérations relatives aux données vectorielles incluent l’insertion, le listage, l’interrogation et la suppression de vecteurs. Pour générer de nouvelles intégrations vectorielles de vos données non structurées, vous pouvez utiliser l'[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)opération API d'Amazon Bedrock pour spécifier l'ID du modèle d'intégration que vous souhaitez utiliser. 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`](s3-vectors-cli.md).

## Concepts de vecteur
<a name="s3-vectors-concepts"></a>

**Clés vectorielles** : chaque vecteur est identifié par une clé vectorielle unique dans l’index. Les clés vectorielles peuvent contenir jusqu’à 1 024 caractères et doivent être uniques dans l’index vectoriel. Les clés sont sensibles à la casse et peuvent contenir n’importe quel caractère UTF-8.

**Dimension vectorielle** : une dimension est le nombre de valeurs d’un vecteur. Les plus grandes dimensions nécessitent plus d’espace de stockage. Tous les vecteurs d’un index doivent avoir le même nombre de dimensions, qui est spécifié lors de la création de l’index. Une dimension doit être un entier compris entre 1 et 4 096.

**Métadonnées** : vous pouvez associer des métadonnées aux vecteurs sous forme de paires clé-valeur pour fournir un contexte supplémentaire et activer le filtrage lors des requêtes. Les métadonnées incluent des clés de métadonnées filtrables et non filtrables. Les métadonnées filtrables sont utilisées pour le filtrage des requêtes. Les clés de métadonnées non filtrables sont spécifiées lors de la création d’un index vectoriel et fournissent un contexte supplémentaire mais ne peuvent pas être utilisées pour le filtrage. Les métadonnées prennent en charge les types Chaîne, Numérique et Booléen. Pour plus d’informations sur les métadonnées filtrables et non filtrables, consultez [Filtrage de métadonnées](s3-vectors-metadata-filtering.md). Pour plus d’informations sur les limites relatives aux métadonnées, y compris la limite de taille des métadonnées par vecteur et le nombre maximal de clés de métadonnées par vecteur, consultez [Limites et restrictions](s3-vectors-limitations.md). 

**Topics**
+ [Concepts de vecteur](#s3-vectors-concepts)
+ [Insertion de vecteurs dans un index vectoriel](s3-vectors-index-create.md)
+ [Création d’une liste de vecteurs](s3-vectors-list.md)
+ [Interrogation des vecteurs](s3-vectors-query.md)
+ [Suppression de vecteurs dans un index vectoriel](s3-vectors-delete.md)
+ [Filtrage de métadonnées](s3-vectors-metadata-filtering.md)

# Insertion de vecteurs dans un index vectoriel
<a name="s3-vectors-index-create"></a>

Vous pouvez ajouter des vecteurs à un index vectoriel à l'aide de l'opération [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html)API. 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 et optimiser les coûts, il est recommandé d'insérer des vecteurs par lots volumineux, jusqu'à la taille de lot maximale pour. `PutVectors` Toutefois, pour les charges de travail qui doivent utiliser des lots plus petits (par exemple, en temps réel, les données vectorielles entrantes doivent être immédiatement consultables), vous pouvez obtenir un débit d'écriture plus élevé en utilisant un plus grand nombre de `PutVectors` demandes simultanées, jusqu'à la limite maximale autorisée par seconde. Pour plus d'informations sur la taille de lot maximale pour`PutVectors`, qui est la limite de vecteurs par appel d'`PutVectors`API, et la limite maximale de demandes et de vecteurs par seconde, consultez[Limites et restrictions](s3-vectors-limitations.md). 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](s3-vectors-limitations.md). 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 intégrations à l'aide de l'opération [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API 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 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`](s3-vectors-cli.md).

**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 [GetVectors[ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html), et les [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html)opé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.

## À l'aide du AWS SDKs
<a name="s3-vectors-create-sdk"></a>

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

------

# Création d’une liste de vecteurs
<a name="s3-vectors-list"></a>

Vous pouvez répertorier les vecteurs dans un index vectoriel à l'aide de l'opération [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html)API. Pour plus d’informations sur le nombre maximal de vecteurs pouvant être renvoyés par page, consultez [Limites et restrictions](s3-vectors-limitations.md). La réponse inclut un jeton de pagination lorsque les résultats sont tronqués. Pour plus d'informations sur les éléments de réponse de`ListVectors`, consultez [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors)le manuel *Amazon S3 API Reference*. Vous pouvez également utiliser `ListVectors` pour exporter des données vectorielles à partir d’un index vectoriel spécifié. `ListVectors` est fortement cohérent. Après une opération WRITE, vous pouvez immédiatement répertorier les vecteurs avec toutes les modifications reflétées. 

## À l'aide du AWS CLI
<a name="list-vectors-index-cli"></a>

Pour répertorier les vecteurs, utilisez les exemples de commande suivante. Remplacez les *user input placeholders* par vos propres informations.

Les paramètres `segment-count` et `segment-index` vous permettent de partitionner vos opérations de liste sur plusieurs demandes parallèles. Lorsque vous spécifiez une valeur `segment-count` (telle que `2`), vous divisez l’index en autant de segments. Le paramètre `segment-index` (à partir de 0) détermine le segment à répertorier. Cette approche permet d’améliorer les performances lors de la création d’une liste de grands index vectoriels en activant le traitement parallèle. Pour plus d'informations sur `segment-count` et`segment-index`, consultez [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors)le manuel de *référence des API Amazon S3*.

**Pour répertorier tous les vecteurs dans un index**

Exemple de demande :

```
aws s3vectors list-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --segment-count 2 \
  --segment-index 0 \
  --return-data \
  --return-metadata
```

Exemple de réponse :

```
{
    "vectors": [
        {
            "key": "vec3",
            "data": {
                "float32": [0.4000000059604645]
            },
            "metadata": {
                "nonFilterableKey": "val4",
                "filterableKey": "val2"
            }
        }
    ]
}
```

**Pour répertorier les vecteurs avec pagination**

Exemple de demande :

```
aws s3vectors list-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --segment-count 2 \
  --segment-index 0 \
  --return-data \
  --return-metadata \
  --next-token "zWfh7e57H2jBfBtRRmC7OfMwl209G9dg3j2qM6kM4t0rps6ClYzJykgMOil9eGqU5nhf_gTq53IfoUdTnsg"
```

Exemple de réponse :

```
{
    "vectors": [
        {
            "key": "vec1",
            "data": {
                "float32": [0.5]
            },
            "metadata": {
                "nonFilterableKey": "val2",
                "filterableKey": "val1"
            }
        }
    ]
}
```

## À l'aide du AWS SDKs
<a name="list-vectors-index-sdk"></a>

------
#### [ SDK for Python ]

Exemple : Lister les vecteurs dans un index vectoriel

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vectors in your vector index 

response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

print(vectors)
```

Exemple : Lister tous les vecteurs dans un index vectoriel en parallèle

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vectors in the 1st half of vectors in the index.
response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    segmentCount=2,
    segmentIndex=1,
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

#List vectors starting from the 2nd half of vectors in the index.
# This can be ran in parallel with the first `list_vectors` call.
response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    segmentCount=2,
    segmentIndex=1,
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

print(vectors)
```

------

# Interrogation des vecteurs
<a name="s3-vectors-query"></a>

Vous pouvez exécuter une requête de similarité à l'aide de l'opération [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html)API, dans laquelle vous spécifiez le vecteur de requête, le nombre de résultats pertinents à renvoyer (les K voisins les plus proches) et l'ARN de l'index. En outre, vous pouvez utiliser des filtres de métadonnées dans une requête pour rechercher uniquement les vecteurs correspondant au filtre. Si vous faites une demande de filtrage sur un champ de métadonnées non filtrable, la demande renverra une erreur `400 Bad Request`. Pour plus d’informations sur le filtrage des métadonnées, consultez [Filtrage de métadonnées](s3-vectors-metadata-filtering.md). 

Dans la réponse, les clés vectorielles sont renvoyées par défaut. Vous pouvez éventuellement inclure la distance et les métadonnées dans la réponse. 

Lorsque vous générez le vecteur de requête, vous devez utiliser le même modèle de vectorisation que celui utilisé pour générer les vecteurs initiaux stockés dans l’index de vecteur. Par exemple, si vous utilisez le modèle de plongement lexical Amazon Titan V2 dans Amazon Bedrock pour générer des vectorisations de vos documents, utilisez le même modèle de vectorisation pour convertir une question en vecteur de requête. 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 blocs récupérés de vos données sources. Pour plus d’informations sur l’interrogation des vecteurs à partir d’une base de connaissances d’Amazon Bedrock dans la console, consultez [(Facultatif) Intégrez S3 Vectors aux bases de connaissances d’Amazon Bedrock](s3-vectors-getting-started.md#s3-vectors-bedrock-kb-tutorial).

En outre, l’outil open source Amazon S3 Vectors Embed CLI fournit un moyen simplifié d’effectuer des recherches sémantiques à partir de la ligne de commande. Cet outil open source rationalise le processus de requête en gérant à la fois la génération de vectorisation avec les modèles de fondation Amazon Bedrock et en exécutant des opérations de recherche sémantique sur vos index vectoriels S3. Pour plus d’informations sur l’utilisation cet outil pour interroger vos données vectorielles, consultez [Création de vectorisation et réalisation de recherches sémantiques avec `s3vectors-embed-cli`](s3-vectors-cli.md).

S3 Vectors fournit des temps de réponse inférieurs à la seconde pour les requêtes froides, en tirant parti du débit élastique d'Amazon S3 pour effectuer des recherches efficaces parmi des millions de vecteurs. Cela le rend très rentable pour les charges de travail comportant des requêtes peu fréquentes. Pour les requêtes chaudes, les vecteurs S3 peuvent fournir des temps de réponse aussi bas que 100 ms, ce qui profite aux charges de travail associées à des modèles de requêtes répétés ou fréquents. 

Lorsque vous effectuez des requêtes de similarité pour vos vectorisations, plusieurs facteurs peuvent affecter les performances de rappel moyennes, notamment le modèle de vectorisation, la taille du jeu de données vectorielles (le nombre de vecteurs et de dimensions) et la distribution des requêtes. S3 Vectors fournit un taux de rappel moyen supérieur à 90 % pour la plupart des jeux de données. Le rappel moyen mesure la qualité des résultats des requêtes. Un rappel moyen de 90 % signifie que la réponse contient 90 % des vecteurs les plus proches réels (vérité fondamentale) qui sont stockés dans l’index vectoriel relatif au vecteur de requête. Cependant, étant donné que les performances réelles peuvent varier en fonction de vos cas d’utilisation spécifiques, nous vous recommandons d’effectuer vos propres tests avec des données et des requêtes représentatives afin de valider que S3 Vectors répond à vos exigences de rappel.

## En utilisant le AWS SDKs
<a name="querty-vectors-sdk"></a>

------
#### [ SDK for Python ]

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

------

# Suppression de vecteurs dans un index vectoriel
<a name="s3-vectors-delete"></a>

Vous pouvez supprimer des vecteurs spécifiques d'un index vectoriel en spécifiant leurs clés vectorielles à l'aide de l'[DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html)API. Cette opération est utile pour supprimer les données périmées ou incorrectes tout en préservant le reste de vos données vectorielles.

## En utilisant le AWS CLI
<a name="delete-vectors-cli"></a>

Pour supprimer des vecteurs, utilisez les exemples de commandes suivants. Remplacez les *user input placeholders* par vos propres informations.

```
aws s3vectors delete-vectors \
 --vector-bucket-name "amzn-s3-demo-vector-bucket" \
 --index-name "idx" \
 --keys '["vec2","vec3"]'
```

## En utilisant le AWS SDKs
<a name="s3-vectors-delete-sdk"></a>

------
#### [ SDK for Python ]

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Delete vectors in a vector index
response = s3vectors.delete_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    keys=["Star Wars", "Finding Nemo"])
```

------

# Filtrage de métadonnées
<a name="s3-vectors-metadata-filtering"></a>

Le filtrage des métadonnées vous permet de filtrer les résultats des requêtes en fonction d’attributs spécifiques attachés à vos vecteurs. Vous pouvez utiliser des filtres de métadonnées avec des opérations de requête pour trouver des vecteurs qui répondent à la fois à des critères de similarité et à des conditions de métadonnées spécifiques. 

S3 Vectors prend en charge deux types de métadonnées : les métadonnées filtrables et les métadonnées non filtrables. La principale différence réside dans le fait que les métadonnées filtrables peuvent être utilisées dans les filtres de requêtes, mais qu’elles sont soumises à des limites de taille plus strictes, tandis que les métadonnées non filtrables ne peuvent pas être utilisées dans les filtres mais peuvent stocker de plus grandes quantités de données dans les limites de taille fixées. Pour plus d’informations sur les limites relatives aux métadonnées, y compris la limite de taille des métadonnées par vecteur et le nombre maximal de clés de métadonnées par vecteur, consultez [Limites et restrictions](s3-vectors-limitations.md).

S3 Vectors effectue une recherche vectorielle et une évaluation des filtres en tandem. S3 Vectors recherche les vecteurs candidats de l’index pour trouver les 1 000 principaux vecteurs similaires tout en validant simultanément si chaque vecteur candidat correspond aux conditions de votre filtre de métadonnées. Par exemple, si vous recherchez des vectorisations de films similaires et que vous filtrez par genre=’mystery’, S3 Vectors renvoie uniquement des vectorisations de films similaires dont les métadonnées du genre correspondent à ’mystery’. Contrairement à l’application du filtre de métadonnées après la recherche vectorielle, cette approche de filtrage est plus susceptible de trouver des résultats correspondants. Remarque : les requêtes avec filtres peuvent renvoyer moins que les 1 000 premiers résultats lorsque l’index vectoriel contient très peu de résultats correspondants.

**Topics**
+ [Métadonnées filtrables](#s3-vectors-metadata-filtering-filterable)
+ [Exemples de métadonnées filtrables valides](#s3-vectors-metadata-filtering-examples)
+ [Métadonnées non filtrables](#s3-vectors-metadata-filtering-non-filterable)

## Métadonnées filtrables
<a name="s3-vectors-metadata-filtering-filterable"></a>

Les métadonnées filtrables vous permettent de filtrer les résultats des requêtes en fonction de valeurs de métadonnées spécifiques. Par défaut, tous les champs de métadonnées sont filtrables dans une requête de similarité, sauf s’ils sont explicitement spécifiés comme non filtrables lors de la création de l’index vectoriel. S3 Vectors prend en charge les types des métadonnées Chaîne, Nombre, Booléen et Liste avec une taille limite par vecteur. Le type de métadonnées est idéal pour les attributs que vous souhaitez filtrer, tels que les catégories, les horodatages ou les valeurs de statut.

Si la taille des métadonnées dépasse les limites prises en charge, l'opération d'[PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html)API renvoie une `400 Bad Request` erreur. Pour plus d’informations sur la limite de taille totale des métadonnées filtrables par vecteur, consultez [Limites et restrictions](s3-vectors-limitations.md). 

Les opérations suivantes peuvent être utilisées avec des métadonnées filtrables.


| Opérateur | Types d’entrée valides | Description | 
| --- | --- | --- | 
| \$1eq | Chaîne, Nombre, Booléen | Comparaison des correspondances exactes pour des valeurs uniques.Lors de la comparaison avec une valeur de métadonnées de table, renvoie true si la valeur d’entrée correspond à un élément de la table. Par exemple, `{"category": {"$eq": "documentary"}}` ferait correspondre un vecteur à des métadonnées `"category": ["documentary", "romance"]`. | 
| \$1ne | Chaîne, Nombre, Booléen | Comparaison N’est pas égal à | 
| \$1gt | Number | Comparaison Supérieur à | 
| \$1gte | Number | Comparaison Supérieur ou égal à | 
| \$1lt | Number | Comparaison Inférieur à | 
| \$1lte | Number | Comparaison Inférieur ou égal à | 
| \$1in | Tableau de primitives non vide | Correspond à n’importe quelle valeur du tableau | 
| \$1nin | Tableau de primitives non vide | Ne correspond à aucune des valeurs du tableau | 
| \$1exists | Booléen | Vérifier si le champ existe | 
| \$1and | Tableau de filtres non vide | ET logique de plusieurs conditions | 
| \$1or | Tableau de filtres non vide | OU logique de plusieurs conditions | 

## Exemples de métadonnées filtrables valides
<a name="s3-vectors-metadata-filtering-examples"></a>

**Égalité simple**  

```
{"genre": "documentary"}
```
Ce filtre correspond aux vecteurs dont la clé de métadonnées du genre est égale à « documentaire ». Lorsque vous ne spécifiez aucun opérateur, S3 Vectors utilise automatiquement l’opérateur \$1eq.

**Égalité explicite**  

```
// Example: Exact match
{"genre": {"$eq": "documentary"}}
```

```
// Example: Not equal to
{"genre": {"$ne": "drama"}}
```

**Comparaison numérique**  

```
{"year": {"$gt": 2019}}
```

```
{"year": {"$gte": 2020}}
```

```
{"year": {"$lt": 2020}}
```

```
{"year": {"$lte": 2020}}
```

**Opérations sur les réseaux**  

```
{"genre": {"$in": ["comedy", "documentary"]}}
```

```
{"genre": {"$nin": ["comedy", "documentary"]}}
```

**Vérification de l’existence**  

```
{"genre": {"$exists": true}}
```
Le filtre `$exists` fait correspondre les vecteurs dotés d’une clé de métadonnées « genre », quelle que soit la valeur stockée pour cette clé de métadonnées.

**Opérations logiques**  

```
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

```
{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

**Fourchette de prix (plusieurs conditions sur le même champ)**  

```
{"price": {"$gte": 10, "$lte": 50}}
```

Pour plus d’informations sur l’interrogations de vecteurs à l’aide du filtrage de métadonnées, consultez [Filtrage de métadonnées](s3-vectors.md#s3-vectors-filtering-metadata).

## Métadonnées non filtrables
<a name="s3-vectors-metadata-filtering-non-filterable"></a>

Les métadonnées non filtrables ne peuvent pas être utilisées dans les filtres de requête, mais elles peuvent stocker de plus grandes quantités de données contextuelles que les métadonnées filtrables. Elles sont idéales pour stocker de gros blocs de texte, des descriptions détaillées ou d’autres informations contextuelles qui n’ont pas besoin d’être consultables mais qui peuvent être renvoyées avec les résultats de la requête. Par exemple, vous pouvez stocker le texte complet du document, les descriptions d’images ou les spécifications détaillées des produits sous forme de métadonnées non filtrables.

Les clés de métadonnées non filtrables doivent être configurées de manière explicite lors de la création de l’index vectoriel. Une fois qu’une clé de métadonnées est désignée comme non filtrable lors de la création de l’index, elle ne peut pas être modifiée pour être filtrée ultérieurement. Vous pouvez configurer plusieurs clés de métadonnées comme non filtrables par index vectoriel, chaque nom de clé de métadonnées étant limité à 63 caractères. Pour plus d’informations sur le nombre maximal de clés de métadonnées non filtrables autorisées par index vectoriel, consultez [Limites et restrictions](s3-vectors-limitations.md).

Bien que vous ne puissiez pas filtrer les métadonnées non filtrables, vous pouvez les récupérer en même temps que les résultats des requêtes à l’aide du paramètre `return-metadata`. Vous pouvez utiliser des métadonnées non filtrables pour certains cas d’utilisation, comme suit.
+ Utilisez-les pour fournir un contexte à votre application sans analyser des sources de données distinctes.
+ Stockez des blocs de texte plus volumineux qui dépasseraient les limites de taille des métadonnées filtrables.
+ Incluez-le dans les exportations vectorielles à l'aide de l'opération [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html)API.

Pour plus d’informations sur les clés de métadonnées non filtrables, consultez [Création d’un index vectoriel dans un compartiment de vecteur](s3-vectors-create-index.md).