Comment migrer vos données vers Milvus en toute simplicité : un guide complet
Milvus est une base de données vectorielle open source robuste pour la recherche par similarité, capable de stocker, traiter et récupérer des milliards, voire des billions, de données vectorielles avec une latence minimale. Elle est également hautement évolutive, fiable, cloud-native et riche en fonctionnalités. La dernière version de Milvus introduit encore plus de fonctionnalités et d’améliorations intéressantes, notamment la prise en charge du GPU pour des performances plus de 10 fois plus rapides et MMap pour une plus grande capacité de stockage sur une seule machine.
En septembre 2023, Milvus a obtenu près de 23 000 étoiles sur GitHub et compte des dizaines de milliers d’utilisateurs issus de divers secteurs aux besoins variés. Il devient encore plus populaire à mesure que les technologies d’IA générative comme ChatGPT se généralisent. C’est un composant essentiel de diverses piles d’IA, en particulier le cadre de génération augmentée par récupération, qui répond au problème d’hallucination des grands modèles de langage.
Pour répondre à la demande croissante de nouveaux utilisateurs qui souhaitent migrer vers Milvus et d’utilisateurs existants qui souhaitent passer aux dernières versions de Milvus, nous avons développé Milvus Migration. Dans ce blog, nous explorerons les fonctionnalités de Milvus Migration et vous guiderons pour transférer rapidement vos données vers Milvus depuis Milvus 1.x, FAISS et Elasticsearch 7.0 et versions ultérieures.
Milvus Migration, un puissant outil de migration de données
Milvus Migration est un outil de migration de données écrit en Go. Il permet aux utilisateurs de déplacer leurs données de manière transparente depuis les anciennes versions de Milvus (1.x), FAISS et Elasticsearch 7.0 et versions ultérieures vers les versions Milvus 2.x.
Le schéma ci-dessous montre comment nous avons construit Milvus Migration et comment il fonctionne.
Comment Milvus Migration migre les données
De Milvus 1.x et FAISS vers Milvus 2.x
La migration des données depuis Milvus 1.x et FAISS implique l’analyse du contenu des fichiers de données d’origine, leur transformation dans le format de stockage des données de Milvus 2.x, puis l’écriture des données à l’aide de bulkInsert du SDK Milvus. Tout ce processus est basé sur des flux, théoriquement limité uniquement par l’espace disque, et stocke les fichiers de données sur votre disque local, S3, OSS, GCP ou Minio.
D’Elasticsearch vers Milvus 2.x
Dans la migration des données Elasticsearch, la récupération des données est différente. Les données ne sont pas obtenues à partir de fichiers, mais récupérées séquentiellement à l’aide de l’API scroll d’Elasticsearch. Les données sont ensuite analysées et transformées au format de stockage Milvus 2.x, puis écrites à l’aide de bulkInsert. En plus de migrer les vecteurs de type dense_vector stockés dans Elasticsearch, Milvus Migration prend également en charge la migration d’autres types de champs, notamment long, integer, short, boolean, keyword, text et double.
Ensemble de fonctionnalités de Milvus Migration
Milvus Migration simplifie le processus de migration grâce à son ensemble de fonctionnalités robuste :
Sources de données prises en charge :
Milvus 1.x vers Milvus 2.x
Elasticsearch 7.0 et versions ultérieures vers Milvus 2.x
FAISS vers Milvus 2.x
Plusieurs modes d’interaction :
Interface en ligne de commande (CLI) utilisant le framework Cobra
API Restful avec une interface Swagger UI intégrée
Intégration en tant que module Go dans d’autres outils
Prise en charge polyvalente des formats de fichiers :
Fichiers locaux
Amazon S3
Object Storage Service (OSS)
Google Cloud Platform (GCP)
Intégration flexible avec Elasticsearch :
Migration des vecteurs de type
dense_vectordepuis ElasticsearchPrise en charge de la migration d’autres types de champs tels que long, integer, short, boolean, keyword, text et double
Définitions des interfaces
Milvus Migration fournit les interfaces clés suivantes :
/start: Lance une tâche de migration (équivaut à une combinaison de dump et de load, ne prend actuellement en charge que la migration ES)./dump: Lance une tâche de dump (écrit les données source dans le support de stockage cible)./load: Lance une tâche de load (écrit les données depuis le support de stockage cible dans Milvus 2.x)./get_job: Permet aux utilisateurs de consulter les résultats d’exécution des tâches. (Pour plus de détails, consultez le fichier server.go du projet)
Ensuite, utilisons quelques données d’exemple pour découvrir comment utiliser Milvus Migration dans cette section. Vous pouvez trouver ces exemples ici sur GitHub.
Migration d’Elasticsearch vers Milvus 2.x
- Préparer les données Elasticsearch
Pour migrer les données Elasticsearch, vous devez déjà avoir configuré votre propre serveur Elasticsearch. Vous devez stocker les données vectorielles dans le champ dense_vector et les indexer avec d’autres champs. Les mappings d’index sont présentés ci-dessous.
- Compiler et construire
Tout d’abord, téléchargez le code source de Milvus Migration depuis GitHub. Ensuite, exécutez les commandes suivantes pour le compiler.
go get
go build
Cette étape générera un fichier exécutable nommé milvus-migration.
- Configurer
migration.yaml
Avant de démarrer la migration, vous devez préparer un fichier de configuration nommé migration.yaml qui inclut des informations sur la source de données, la cible et d’autres paramètres pertinents. Voici un exemple de configuration :
# Configuration for Elasticsearch to Milvus 2.x migration
dumper:
worker:
workMode: Elasticsearch
reader:
bufferSize: 2500
meta:
mode: config
index: test_index
fields:
- name: id
pk: true
type: long
- name: other_field
maxLen: 60
type: keyword
- name: data
type: dense_vector
dims: 512
milvus:
collection: "rename_index_test"
closeDynamicField: false
consistencyLevel: Eventually
shardNum: 1
source:
es:
urls:
- http://localhost:9200
username: xxx
password: xxx
target:
mode: remote
remote:
outputDir: outputPath/migration/test1
cloud: aws
region: us-west-2
bucket: xxx
useIAM: true
checkBucket: false
milvus2x:
endpoint: {yourMilvusAddress}:{port}
username: ******
password: ******
Pour une explication plus détaillée du fichier de configuration, consultez cette page sur GitHub.
- Exécuter la tâche de migration
Maintenant que vous avez configuré votre fichier migration.yaml, vous pouvez démarrer la tâche de migration en exécutant la commande suivante :
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Observez la sortie du journal. Lorsque vous voyez des journaux similaires à ce qui suit, cela signifie que la migration a réussi.
[task/load_base_task.go:94] ["[LoadTasker] Dec Task Processing-------------->"] [Count=0] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][task/load_base_task.go:76] ["[LoadTasker] Progress Task --------------->"] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][dbclient/cus_field_milvus2x.go:86] ["[Milvus2x] begin to ShowCollectionRows"][loader/cus_milvus2x_loader.go:66] ["[Loader] Static: "] [collection=test_mul_field4_rename1] [beforeCount=50000] [afterCount=100000] [increase=50000][loader/cus_milvus2x_loader.go:66] ["[Loader] Static Total"] ["Total Collections"=1] [beforeTotalCount=50000] [afterTotalCount=100000] [totalIncrease=50000][migration/es_starter.go:25] ["[Starter] migration ES to Milvus finish!!!"] [Cost=80.009174459][starter/starter.go:106] ["[Starter] Migration Success!"] [Cost=80.00928425][cleaner/remote_cleaner.go:27] ["[Remote Cleaner] Begin to clean files"] [bucket=a-bucket] [rootPath=testfiles/output/zwh/migration][cmd/start.go:32] ["[Cleaner] clean file success!"]
En plus de l’approche en ligne de commande, Milvus Migration prend également en charge la migration à l’aide d’une API Restful.
Pour utiliser l’API Restful, démarrez le serveur API à l’aide de la commande suivante :
./milvus-migration server run -p 8080
Une fois le service exécuté, vous pouvez lancer la migration en appelant l’API.
curl -XPOST http://localhost:8080/api/v1/start
Une fois la migration terminée, vous pouvez utiliser Attu, un outil d’administration de base de données vectorielle tout-en-un, pour consulter le nombre total de lignes migrées avec succès et effectuer d’autres opérations liées aux collections.
L’interface Attu
Migration de Milvus 1.x vers Milvus 2.x
- Préparer les données Milvus 1.x
Pour vous aider à découvrir rapidement le processus de migration, nous avons placé 10 000 enregistrements de données de test Milvus 1.x dans le code source de Milvus Migration. Cependant, dans des cas réels, vous devez exporter votre propre fichier meta.json depuis votre instance Milvus 1.x avant de démarrer le processus de migration.
- Vous pouvez exporter les données avec la commande suivante.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
Assurez-vous de :
Remplacer les espaces réservés par vos identifiants MySQL réels.
Arrêter le serveur Milvus 1.x ou interrompre les écritures de données avant d’effectuer cette exportation.
Copier le dossier
tablesde Milvus et le fichiermeta.jsondans le même répertoire.
Remarque : Si vous utilisez Milvus 2.x sur Zilliz Cloud (le service entièrement géré de Milvus), vous pouvez démarrer la migration à l’aide de Cloud Console.
- Compiler et construire
Tout d’abord, téléchargez le code source de Milvus Migration depuis GitHub. Ensuite, exécutez les commandes suivantes pour le compiler.
go get
go build
Cette étape générera un fichier exécutable nommé milvus-migration.
- Configurer
migration.yaml
Préparez un fichier de configuration migration.yaml, en précisant les détails concernant la source, la cible et les autres paramètres pertinents. Voici un exemple de configuration :
# Configuration for Milvus 1.x to Milvus 2.x migration
dumper:
worker:
limit: 2
workMode: milvus1x
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 16
meta:
mode: local
localFile: /outputDir/test/meta.json
source:
mode: local
local:
tablesDir: /db/tables/
target:
mode: remote
remote:
outputDir: "migration/test/xx"
ak: xxxx
sk: xxxx
cloud: aws
endpoint: 0.0.0.0:9000
region: ap-southeast-1
bucket: a-bucket
useIAM: false
useSSL: false
checkBucket: true
milvus2x:
endpoint: localhost:19530
username: xxxxx
password: xxxxx
Pour une explication plus détaillée du fichier de configuration, consultez cette page sur GitHub.
- Exécuter la tâche de migration
Vous devez exécuter les commandes dump et load séparément pour terminer la migration. Ces commandes convertissent les données et les importent dans Milvus 2.x.
Remarque : Nous simplifierons bientôt cette étape et permettrons aux utilisateurs de terminer la migration avec une seule commande. Restez à l’écoute.
Commande Dump :
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Commande Load :
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Après la migration, la collection générée dans Milvus 2.x contiendra deux champs : id et data. Vous pouvez consulter plus de détails avec Attu, un outil tout-en-un d’administration de bases de données vectorielles.
Migration de FAISS vers Milvus 2.x
- Préparer les données FAISS
Pour migrer des données Elasticsearch, vous devez disposer de vos propres données FAISS prêtes. Pour vous aider à découvrir rapidement le processus de migration, nous avons ajouté des données de test FAISS dans le code source de Milvus Migration.
- Compiler et construire
Tout d’abord, téléchargez le code source depuis GitHub de Milvus Migration. Ensuite, exécutez les commandes suivantes pour le compiler.
go get
go build
Cette étape générera un fichier exécutable nommé milvus-migration.
- Configurer
migration.yaml
Préparez un fichier de configuration migration.yaml pour la migration FAISS, en spécifiant les détails concernant la source, la cible et d’autres paramètres pertinents. Voici un exemple de configuration :
# Configuration for FAISS to Milvus 2.x migration
dumper:
worker:
limit: 2
workMode: FAISS
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 2
source:
mode: local
local:
FAISSFile: ./testfiles/FAISS/FAISS_ivf_flat.index
target:
create:
collection:
name: test1w
shardsNums: 2
dim: 256
metricType: L2
mode: remote
remote:
outputDir: testfiles/output/
cloud: aws
endpoint: 0.0.0.0:9000
region: ap-southeast-1
bucket: a-bucket
ak: minioadmin
sk: minioadmin
useIAM: false
useSSL: false
checkBucket: true
milvus2x:
endpoint: localhost:19530
username: xxxxx
password: xxxxx
Pour une explication plus détaillée du fichier de configuration, consultez cette page sur GitHub.
- Exécuter la tâche de migration
Comme pour la migration de Milvus 1.x vers Milvus 2.x, la migration FAISS nécessite l’exécution des commandes dump et load. Ces commandes convertissent les données et les importent dans Milvus 2.x.
Remarque : Nous simplifierons bientôt cette étape et permettrons aux utilisateurs de terminer la migration avec une seule commande. Restez à l’écoute.
Commande Dump :
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Commande Load :
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Vous pouvez consulter plus de détails avec Attu, un outil tout-en-un d’administration de bases de données vectorielles.
Restez à l’écoute pour les futurs plans de migration
À l’avenir, nous prendrons en charge la migration depuis davantage de sources de données et ajouterons plus de fonctionnalités de migration, notamment :
Prise en charge de la migration de Redis vers Milvus.
Prise en charge de la migration de MongoDB vers Milvus.
Prise en charge de la migration reprenable.
Simplification des commandes de migration en fusionnant les processus dump et load en un seul.
Prise en charge de la migration depuis d’autres sources de données courantes vers Milvus.
Conclusion
Milvus 2.3, la dernière version de Milvus, apporte de nouvelles fonctionnalités passionnantes et des améliorations de performances qui répondent aux besoins croissants de la gestion des données. Migrer vos données vers Milvus 2.x peut vous permettre de bénéficier de ces avantages, et le projet Milvus Migration rend le processus de migration simplifié et facile. Essayez-le, vous ne serez pas déçu.
Remarque : Les informations contenues dans ce blog sont basées sur l’état des projets Milvus et Milvus Migration en septembre 2023. Consultez la documentation Milvus officielle pour obtenir les informations et instructions les plus à jour.
Continuer à lire

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.



