Utilisez Object Storage Service (OSS) pour la construction initiale complète de l'index à partir de fichiers HA3 ou JSON stockés dans un bucket, puis utilisez l'API pour les mises à jour incrémentielles une fois l'index actif.
| Méthode | Rôle | Cas d'utilisation |
|---|---|---|
| Importation complète depuis OSS | Charge tous les enregistrements en une seule fois lors de la création de l'index | Construction initiale ou reconstruction complète de l'index |
| Mise à jour incrémentielle via API | Ajoute, modifie ou supprime des enregistrements une fois l'index actif | Modifications continues des données |
OSS et votre instance OpenSearch Edition Vector Search doivent se trouver dans la même région. Une différence de région entraînera l'échec de la connexion à la source de données.
La configuration comprend deux parties : la préparation d'OSS, puis sa connexion en tant que source de données lors de la création d'une table.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un compte Alibaba Cloud avec le service OSS activé
Une instance Edition Vector Search achetée (voir Achat d'une instance Edition Vector Search)
Des fichiers de données encodés en UTF-8, au format HA3 ou JSON
Étape 1 : Préparation d'OSS
Activation d'OSS
Activez OSS dans la même région que votre instance OpenSearch.
Création d'un bucket
-
Accédez à la Console de gestion OSS > Buckets > Create Bucket.
Dans le volet de navigation de gauche de la Console de gestion OSS, cliquez sur Buckets, puis sur Create Bucket.
-
Une fois le bucket créé, ajoutez un tag OpenSearch : accédez à Bucket Settings > Bucket Tagging > Create Tag.
Définissez la clé du tag (Key) et la valeur du tag (Value) sur
opensearch.
Préparation des fichiers de données
Les fichiers doivent respecter les exigences suivantes avant le téléchargement :
| Exigence | Détail |
|---|---|
| Encodage | UTF-8 |
| Format | HA3 ou JSON |
| Emplacement | Doit se trouver dans un dossier, pas à la racine du bucket |
Format JSON
Chaque ligne correspond à un document JSON. Le JSON multiligne n'est pas pris en charge.
| Règle | Détail |
|---|---|
| Un enregistrement par ligne | Chaque objet JSON doit tenir sur une seule ligne |
| Séparateur de ligne | \n entre les enregistrements ; \n ne peut pas apparaître à l'intérieur d'une valeur JSON |
| Pas de fichiers mixtes | Le répertoire ne doit contenir que des fichiers de données JSON |
| Types de valeurs | Toutes les valeurs JSON sont des chaînes de caractères ; le schéma les convertit aux types corrects lors de la construction de l'index |
Exemple :
{"field_double": ["100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300"], "title": "Huawei Mate 9 Kirin 960 chip Leica dual camera", "color": "Red", "empty_int32": "", "price": "3599", "CMD": "add", "nid": "1", "gather_cn_str": "", "desc": ["str1", "str2", "str3"], "brand": "Huawei", "size": "5.9","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
{"field_double": ["100.0", "221.123", "500.3333333", "100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300", "100", "200", "300"], "title": "Huawei/Huawei P10 Plus full network phone", "color": "Blue", "empty_int32": "", "price": "4388", "CMD": "add", "nid": "2", "gather_cn_str": "colorBlue", "desc": ["str1", "str2", "str3", "str1", "str2", "str3"], "brand": "Huawei", "size": "5.5","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
Format HA3
Les fichiers HA3 utilisent des séparateurs binaires. Chaque fichier contient une séquence de commandes add et delete.
Séparateurs de fichiers
| Encodage C++ | Hexadécimal ASCII | Description | Affichage (emacs/vi) | Saisie dans emacs | Saisie dans vi |
|---|---|---|---|---|---|
"\x1F\n" |
1F0A | Séparateur clé-valeur | ^_ (suivi d'un saut de ligne) |
C-q C-7 | C-v C-7 |
"\x1E\n" |
1E0A | Séparateur de commande | ^^ (suivi d'un saut de ligne) |
C-q C-6 | C-v C-6 |
"\x1D" |
1D | Séparateur de valeurs multiples | ^] |
C-q C-5 | C-v C-5 |
"\x1C" |
1C | Indicateur de poids de section | ^\ |
C-q C-4 | C-v C-4 |
"\x1D" |
1D | Séparateur de section | ^] |
C-q C-5 | C-v C-5 |
"\x03" |
03 | Séparateur de champ de sous-document | ^C |
C-q C-c | C-v C-c |
Format de commande
-
Commande d'ajout : La première ligne doit être
CMD=add. Incluez tous les champs définis dans le schéma, dans n'importe quel ordre.CMD=add^_ PK=12345321^_ url=http://www.aliyun.com/index.html^_ title=Alibaba Cloud Computing Co., Ltd.^_ body=xxxxxx xxx^_ time=3123423421^_ multi_value_field=1234^]324^]342^_ bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_ ^^ -
Commande de suppression : La première ligne doit être
CMD=delete. Incluez le champ de clé primaire et le champ de hachage de partition. Si les deux correspondent au même champ, incluez-le une seule fois.CMD=delete^_ PK=12345321^_ ^^
Téléchargement des fichiers vers le bucket
Placez vos fichiers de données dans un dossier à l'intérieur du bucket, et non dans le répertoire racine. La structure du bucket doit ressembler à ceci :
<your-bucket-name>/
└── <your-data-folder>/
├── data_file_1.json
├── data_file_2.json
└── ...
Pour télécharger les fichiers :
Dans la Console de gestion OSS, ouvrez votre bucket.
Dans le volet de navigation de gauche, accédez à Object Management > Objects.
-
Cliquez sur Upload Object, sélectionnez vos fichiers et confirmez.
Une fois le téléchargement terminé, le statut du fichier dans le panneau Task List indique Upload Successful.
Étape 2 : Ajout d'une source de données OSS + API
Configuration des informations de base de la table
Dans la Liste des instances, localisez votre instance Edition Vector Search et cliquez sur Manage dans la colonne Actions.
Dans le volet de navigation de gauche, accédez à Table Management > Add Table.
-
Remplissez les informations de base de la table et cliquez sur Next.
Champ Description Table Name Nom personnalisé pour cette table Number of Data Shards Entier positif, maximum 256. Un plus grand nombre de shards améliore la vitesse de construction complète et les performances des requêtes uniques. Number of Data Update Resources Ressources utilisées pour les mises à jour incrémentielles des données. Chaque index inclut par défaut deux ressources de mise à jour gratuites de 4 cœurs et 8 Go. Les ressources supplémentaires sont facturées. Voir Facturation de l'Edition Vector Search. Scenario Template Choisissez l'une des options suivantes : General Template, Vector: Image Search Template ou Vector: Text Semantic Search Template Après avoir sélectionné le modèle Vector: Image Search, choisissez une méthode de récupération : Dense Vector Retrieval ou Dense & Sparse Vector Hybrid Retrieval.
Configuration de la synchronisation des données
Pour Full Data Source, sélectionnez Object Storage Service (OSS) + API.
-
Remplissez les détails de connexion OSS et cliquez sur Data Source Verification.
Champ Description OSS Path Chemin d'accès au dossier contenant vos fichiers de données. Doit commencer par /. Ne peut pas contenir?,=ou&. Les fichiers doivent se trouver dans un dossier ; le répertoire racine n'est pas pris en charge.OSS Bucket Nom du bucket OSS Data Format Sélectionnez HA3 ou JSON pour correspondre à vos fichiers téléchargés -
Une fois la vérification réussie, cliquez sur Next.
Si la vérification échoue, vérifiez que le chemin OSS pointe vers un dossier (et non vers la racine), que le nom du bucket est correct, que le format des données correspond à vos fichiers et qu'OSS se trouve dans la même région que votre instance OpenSearch.
Configuration des champs
L'Edition Vector Search pré-remplit les champs à partir de votre modèle de scénario et importe les définitions de champs depuis la source de données.
-
Passez en revue les champs prédéfinis. Pour le modèle Image Search Template, les champs par défaut sont :
Champ Description idClé primaire source_imageImage source namespaceNamespace source_image_vectorVecteur de l'image source -
Configurez les types et propriétés des champs :
Clé primaire (obligatoire) : Définissez le Type sur un type entier ou
STRING, puis sélectionnez l'option Primary Key.Champ vectoriel (obligatoire) : Définissez le Type sur
FLOATet cochez la case Vector Field. Les champs vectoriels sont par défaut des valeurs multiplesFLOATavec une virgule comme délimiteur. Saisissez un délimiteur personnalisé si nécessaire.Default values : Lorsqu'un champ est manquant ou vide dans les données, le système renseigne une valeur par défaut :
0pour les types numériques, une chaîne vide pour les typesSTRING. Personnalisez les valeurs par défaut selon vos besoins.
-
Pour les champs nécessitant un prétraitement (comme
source_image), cliquez sur Configure dans la colonne Data Preprocessing. Dans la configuration du prétraitement :Data Source : Sélectionnez OSS Object Storage pour importer directement les images depuis OSS (indiquez le chemin OSS), ou Base64 Encoding pour fournir des données d'image encodées via l'API.
-
Pre-processing Template : Sélectionnez le modèle correspondant à votre type de données. Pour les images, les modèles disponibles sont :
Image Vectorization
OCR Image Text Recognition
OCR Image Text Recognition + Image Vectorization
-
Service List : Après avoir sélectionné un modèle, examinez les modèles utilisés. Choisissez parmi :
Built-in Models : Gratuit, avec une sélection plus restreinte de types de modèles.
Valeurs de configuration pour cet exemple :
OSS Endpoint :
oss-cn-shenzhen-internal.aliyuncs.comOSS Bucket :
zhyq-szDans la liste des services, sélectionnez le modèle Built-in General Image Embedding Model - 512D CLIP, avec le champ de sortie défini sur
source_image_vector.
Cliquez sur OK pour confirmer.
Cliquez sur Next.
Configuration du schéma d'index
-
Définissez les champs inclus et les paramètres d'index, puis cliquez sur Next.
Paramètre Description Included Fields La clé primaire et le champ vectoriel sont obligatoires. Le champ namespace est facultatif. Vector Dimension Nombre de dimensions de vos embeddings vectoriels Real-time Indexing Activer ou désactiver les mises à jour d'index en temps réel Distance Type Métrique de distance pour la recherche de similarité vectorielle Vector Index Algorithm Algorithme utilisé pour construire l'index vectoriel Exemple de configuration d'index vectoriel :
Nom de l'index :
source_image_vectorRécupération hybride : Disabled
Clé primaire :
id, Champ vectoriel :source_image_vectorDimensions :
512Type de distance : SquaredEuclidean
Index en temps réel :
trueAlgorithme : Qc
-
Cliquez sur More Advanced Configuration pour développer les champs de paramètres avancés :
Real-time Index Parameters
Index Build Parameters
Index Search Parameters
Linear Build Threshold
Minimum Recall Candidate Set Size
Recall Metric Reporting
Ignore Problematic Vector Data
Pour la référence complète des paramètres, voir Configuration générale de l'index vectoriel.
Confirmation et vérification
Sur la page Confirm Creation, passez en revue vos paramètres et cliquez sur Confirm.
Revenez à la Liste des instances. Le statut de l'instance passe à Normal en environ 2 minutes.
Lorsque le statut est Normal, utilisez Actions > Query Test pour exécuter des requêtes de test et vérifier que l'index fonctionne correctement.