(Aperçu) Capacités de recherche avancées avec un moteur vectoriel Amazon S3 - Amazon OpenSearch 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.

(Aperçu) Capacités de recherche avancées avec un moteur vectoriel Amazon S3

Important

L'intégration d'Amazon S3 Vectors au OpenSearch service est en version préliminaire et est sujette à modification.

Amazon OpenSearch Service permet d'utiliser Amazon S3 comme moteur vectoriel pour les index vectoriels. Cette fonctionnalité vous permet de transférer des données vectorielles vers Amazon S3 tout en conservant des fonctionnalités de recherche vectorielle en moins d'une seconde à moindre coût.

Cette fonctionnalité permet de OpenSearch stocker les intégrations vectorielles dans un index vectoriel Amazon S3 tout en conservant les autres champs du document dans le stockage du OpenSearch cluster. Cette architecture offre les avantages suivants :

  • Durabilité : Les données écrites sur des vecteurs S3 sont stockées sur S3, qui est conçu pour une durabilité des données de 11 à 9 s.

  • Évolutivité : déchargez de grands ensembles de données vectoriels vers S3 sans consommer de stockage en cluster.

  • Rentabilité : optimisez les coûts de stockage pour les charges de travail à forte charge vectorielle.

OpenSearch présente les exigences suivantes pour utiliser les index vectoriels S3 :

  • OpenSearch version 2.19 ou ultérieure

  • OpenSearch Instances optimisées

  • Dernière version du correctif pour votre OpenSearch version

Activation des vecteurs S3

Lorsque vous créez un nouveau domaine ou que vous mettez à jour un domaine existant, vous pouvez choisir l'option Activer les vecteurs S3 en tant que moteur dans la section Fonctionnalités avancées. Ce paramètre permet OpenSearch de créer un compartiment vectoriel S3 lorsque vous utilisez S3 Vectors comme moteur. Lorsque vous activez cette option, OpenSearch configurez les vecteurs S3 pour votre domaine en :

  1. Création de deux nouvelles autorisations sur la AWS KMS clé configurée avec votre domaine :

    • Une subvention pour les tâches d'indexation en arrière-plan de S3 Vectors avec privilèges de déchiffrement

    • Une subvention pour OpenSearch créer des buckets de vecteurs S3 avec des autorisations GenerateDataKey

  2. Configuration de la clé KMS utilisée par votre OpenSearch domaine comme clé CMK pour le chiffrement du reste de toutes les données d'index vectoriel.

Création d'index avec le moteur vectoriel S3

Après avoir configuré un domaine, vous pouvez créer un ou plusieurs index K-nn avec des champs à utiliser s3vector comme moteur vectoriel principal dans les mappages d'index. Vous pouvez configurer différents champs vectoriels avec différents types de moteurs en fonction de votre cas d'utilisation.

Important

Vous ne pouvez utiliser le s3vector moteur que pour mapper une définition de champ lors de la création d'un index. Vous ne pouvez pas ajouter ou mettre à jour le mappage avec le s3vector moteur après la création de l'index.

Voici quelques exemples permettant de créer des index de moteurs vectoriels S3.

Exemple : création d'un index K-nn avec le moteur vectoriel S3

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }

Exemple : création d'un index k-NN avec le vecteur S3 et les moteurs FAISS

Cet exemple met en évidence le fait que vous pouvez utiliser plusieurs moteurs vectoriels dans le même index.

PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }

Exemple non pris en charge : ajout du moteur vectoriel S3 après la création de l'index

L'approche suivante n'est pas prise en charge et échouera.

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }

Limitations fonctionnelles

Tenez compte des limites suivantes avant d'utiliser le s3vector moteur dans un index :

Fonctionnalités et comportements non pris en charge par le moteur s3vector
Fonctionnalité Attitude

Split/Shrink/Cloneindice

Ils APIs échouent lorsqu'ils sont utilisés avec un index configuré avec le s3vector moteur knn_vector sur le terrain.

Instantanés

Les indices utilisant s3vector le moteur ne prennent pas en charge les instantanés. Pour les domaines gérés :

  • Les instantanés automatisés incluent uniquement les index n'utilisant pas de s3vector moteur.

  • Les demandes d'instantanés manuelles pour s3vector les index échouent.

Note

Bien que les instantanés ne soient pas pris en charge pour la point-in-time restauration, le s3vector moteur, associé aux instances OpenSearch optimisées, offre une durabilité de 11 neuf ans.

UltraWarm niveau

Les indices configurés avec s3vector le moteur ne peuvent pas migrer vers le UltraWarm niveau.

Réplication inter-clusters (CCR)

Les indices configurés avec le s3vector moteur ne prennent pas en charge la réplication entre clusters.

Protection contre les suppressions accidentelles

Comme les instantanés ne sont pas pris en charge pour les index utilisant le s3vector moteur, la protection contre les suppressions accidentelles n'est pas disponible. Vous pouvez toujours restaurer les autres index du domaine.

Recherche radiale

Les requêtes avec recherche radiale ne sont pas prises en charge sur les champs utilisant s3vector le moteur.

Indexation de documents

Après avoir créé un index avec le moteur vectoriel S3, vous pouvez ingérer des documents à l'aide de l'_bulkAPI standard. OpenSearch télécharge automatiquement les données vectorielles des knn_vector champs à l'aide s3vector du moteur vers l'index vectoriel S3 en temps réel. Les données appartenant à d'autres knn_vector champs ou à des champs utilisant différents moteurs seront conservées OpenSearch dans leur propre couche de stockage.

Pour toutes les demandes groupées reconnues, OpenSearch garantit la durabilité de toutes les données (vectorielles et non vectorielles). Si une demande reçoit un accusé de réception négatif, il n'y a aucune garantie quant à la durabilité des documents contenus dans cette demande groupée. Vous devez réessayer de telles demandes.

Exemple d'indexation en bloc

POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }

Recherche de documents

Vous pouvez effectuer une recherche dans votre index à l'aide de _search l'API standard pour exécuter des requêtes textuelles, K-nn ou hybrides. Pour les requêtes sur knn_vector des champs configurés avec le s3vector moteur, télécharge OpenSearch automatiquement la requête vers l'index de vecteurs S3 correspondant.

Note

Avec s3vector le moteur, la sémantique d'actualisation s'applique uniquement aux champs n'utilisant s3vector pas le moteur. Toutefois, vos données vectorielles déchargées s3vector seront visibles immédiatement après l'indexation réussie d'un document.

Exemple de requête de recherche

GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }

Paramètres de mappage pris en charge

Avec le s3vector moteur, le knn_vector champ prend en charge les paramètres suivants dans les mappages.

Paramètres du champ vectoriel
Paramètre Obligatoire Description Valeurs prises en charge
type Oui Type de champ présent dans le document. knn_vector
dimension Oui Dimension de chaque vecteur qui sera intégré à l'index. >0, <=4096
space_type Non L'espace vectoriel utilisé pour calculer la distance entre les vecteurs. l2, cosinesimil
method.engine Oui Le moteur K-nn approximatif à utiliser pour l'indexation et la recherche. s3vector
method.name Non La méthode du voisin le plus proche ""
Important

Les types de knn_vector champs imbriqués ne sont pas pris en charge par le moteur s3vector

Comptage et facturation

Jusqu'à ce que le comptage soit annoncé, cette fonctionnalité ne sera pas facturée.

Désactivation du moteur s3vector

Avant de désactiver le s3vector moteur, supprimez tous les index qui l'utilisent actuellement. Dans le cas contraire, toute tentative de désactivation du moteur échoue.

Notez également que l'activation ou la désactivation du s3vector moteur déclenche un déploiement bleu/vert sur votre domaine.

Pour désactiver le s3vector moteur, modifiez la configuration de votre domaine et configurezS3VectorsEngine.Enabled: false.