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 :
-
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
-
-
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é | Attitude |
---|---|
Split/Shrink/Cloneindice |
Ils APIs échouent lorsqu'ils sont utilisés avec un index configuré avec le |
Instantanés |
Les indices utilisant
NoteBien que les instantanés ne soient pas pris en charge pour la point-in-time restauration, le |
UltraWarm niveau |
Les indices configurés avec |
Réplication inter-clusters (CCR) |
Les indices configurés avec le |
Protection contre les suppressions accidentelles |
Comme les instantanés ne sont pas pris en charge pour les index utilisant le |
Recherche radiale |
Les requêtes avec recherche radiale ne sont pas prises en charge sur les champs utilisant |
Indexation de documents
Après avoir créé un index avec le moteur vectoriel S3, vous pouvez ingérer des documents à l'aide de l'_bulk
API 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è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
.