Filtrage de métadonnées - Amazon Simple Storage Service

Filtrage de métadonnées

Note

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

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 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.

Métadonnées filtrables

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 ces limites, l’opération d’API PutVectors renvoie une erreur 400 Bad Request. Pour plus d’informations sur la limite de taille totale des métadonnées filtrables par vecteur, consultez Limites et restrictions.

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

Opérateur Types d’entrée valides Description
$eq 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"].

$ne Chaîne, Nombre, Booléen Comparaison N’est pas égal à
$gt Nombre Comparaison Supérieur à
$gte Nombre Comparaison Supérieur ou égal à
$lt Nombre Comparaison Inférieur à
$lte Nombre Comparaison Inférieur ou égal à
$in Tableau de primitives non vide Correspond à n’importe quelle valeur du tableau
$nin Tableau de primitives non vide Ne correspond à aucune des valeurs du tableau
$exists Booléen Vérifier si le champ existe
$and Tableau de filtres non vide ET logique de plusieurs conditions
$or Tableau de filtres non vide OU logique de plusieurs conditions

Exemples de métadonnées filtrables valides

É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 $eq.

É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 tableaux
{"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.

Métadonnées non filtrables

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.

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-les dans les exportations vectorielles à l’aide de l’opération d’API ListVectors.

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.