تقديم أداة ميلفوس لترحيل البيانات
ملاحظة مهمة: تم إهمال أداة ترحيل بيانات ميفوس. لترحيل البيانات من قواعد البيانات الأخرى إلى ميلفوس، نوصي باستخدام أداة ترحيل البيانات Milvus-migration Tool الأكثر تقدماً.
تدعم أداة Milvus-migration حاليًا:
- من Elasticsearch إلى Milvus 2.x
- من فايس إلى ميلفوس 2.x
- ميلفوس 1.x إلى ميلفوس 2.x
- من Milvus 2.3.x إلى Milvus 2.3.x أو أعلى
سندعم الترحيل من المزيد من مصادر البيانات المتجهة مثل Pinecone و Chroma و Qdrant. ترقبوا.
لمزيد من المعلومات، راجع وثائق Milvus-migration أو مستودع GitHub الخاص به.
--------------------------------- أداة ترحيل بيانات ميفوس تم إهمالها ----------------------
نظرة عامة
MilvusDM (Milvus Data Migration) هي أداة مفتوحة المصدر مصممة خصيصًا لاستيراد وتصدير ملفات البيانات باستخدام Milvus. يمكن لأداة MilvusDM تحسين كفاءة إدارة البيانات بشكل كبير وتقليل تكاليف DevOps بالطرق التالية:
من فايس إلى ملفوس: استيراد البيانات غير المضغوطة من فايس إلى ملفوس.
HDF5 إلى ملفوس: استيراد ملفات HDF5 إلى ملفوس.
Milvusإلى Milvus: ترحيل البيانات من مصدر Milvus إلى هدف Milvus مختلف.
ميلفوسإلى HDF5: حفظ البيانات في ميلفوس كملفات HDF5.
مدونة Milvusdm 1.png
MilvusDM مستضاف على Github ويمكن تثبيته بسهولة عن طريق تشغيل سطر الأوامر pip3 install pymilvusdm
. يسمح لك MilvusDM بترحيل البيانات في مجموعة أو قسم معين. سنشرح في الأقسام التالية كيفية استخدام كل نوع من أنواع ترحيل البيانات.
فايس إلى ملفوس
الخطوات
1- قم بتنزيل F2M.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2
2- قم بتعيين المعلمات التالية:
data_path
: مسار البيانات (المتجهات والمعرفات المقابلة لها) في فايس.dest_host
: عنوان خادم ميلفوس.dest_port
: منفذ خادم ميلفوس.mode
: يمكن استيراد البيانات إلى ميلفوس باستخدام الأوضاع التالية:تخطي: تجاهل البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
إلحاق: إلحاق البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
الكتابة فوق: حذف البيانات قبل الإدراج إذا كانت المجموعة أو القسم موجود بالفعل.
dest_collection_name
: اسم المجموعة المستقبلة لاستيراد البيانات.dest_partition_name
: اسم قسم الاستقبال لاستيراد البيانات.collection_parameter
: المعلومات الخاصة بالمجموعة مثل البعد المتجه وحجم ملف الفهرس ومقياس المسافة.
F2M:
milvus_version: 1.0.0
data_path: '/home/data/faiss.index'
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'append' # 'skip/append/overwrite'
dest_collection_name: 'test'
dest_partition_name: ''
collection_parameter:
dimension: 256
index_file_size: 1024
metric_type: 'L2'
3- تشغيل F2M.yaml:
$ milvusdm --yaml F2M.yaml
نموذج التعليمات البرمجية
1- قراءة ملفات فايس لاسترداد المتجهات والمعرفات المقابلة لها.
ids, vectors = faiss_data.read_faiss_data()
2- إدراج البيانات المسترجعة في ملف ميلفوس:
insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)
من HDF5 إلى ملفوس
الخطوات
1- قم بتنزيل H2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml
2- تعيين المعلمات التالية:
data_path
: المسار إلى ملفات HDF5.data_dir
: الدليل الذي يحتوي على ملفات HDF5.dest_host
: عنوان خادم ميلفوس.dest_port
: منفذ خادم ميلفوس.mode
: يمكن استيراد البيانات إلى ميلفوس باستخدام الأوضاع التالية:تخطي: تجاهل البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
إلحاق: إلحاق البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
الكتابة فوق: حذف البيانات قبل الإدراج إذا كانت المجموعة أو القسم موجود بالفعل.
dest_collection_name
: اسم المجموعة المستقبلة لاستيراد البيانات.dest_partition_name
: اسم قسم الاستقبال لاستيراد البيانات.collection_parameter
: المعلومات الخاصة بالمجموعة مثل البعد المتجه وحجم ملف الفهرس ومقياس المسافة.
قم بتعيين إما
data_path
أوdata_dir
. لا تقم بتعيين كليهما. استخدمdata_path
لتحديد مسارات ملفات متعددة، أوdata_dir
لتحديد الدليل الذي يحتوي على ملف البيانات.
H2M:
milvus-version: 1.0.0
data_path:
- /Users/zilliz/float_1.h5
- /Users/zilliz/float_2.h5
data_dir:
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'overwrite' # 'skip/append/overwrite'
dest_collection_name: 'test_float'
dest_partition_name: 'partition_1'
collection_parameter:
dimension: 128
index_file_size: 1024
metric_type: 'L2'
3- قم بتشغيل H2M.yaml:
$ milvusdm --yaml H2M.yaml
نموذج التعليمات البرمجية
1- اقرأ ملفات HDF5 لاسترداد المتجهات والمعرفات المقابلة لها:
vectors, ids = self.file.read_hdf5_data()
2- أدخل البيانات المسترجعة في ميلفوس:
ids = insert_milvus.insert_data(vectors, self.c_name, self.c_param, self.mode, ids,self.p_name)
ميلفوس إلى ميلفوس
الخطوات
1- قم بتنزيل M2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml
2- قم بتعيين المعلمات التالية:
source_milvus_path
: مسار عمل ميلفوس المصدر.mysql_parameter
: إعدادات مصدر Milvus MySQL. إذا لم يتم استخدام MySQL، قم بتعيين mysql_parameter كـ ''.source_collection
: أسماء المجموعة وأقسامها في المصدر ملفوس المصدر.dest_host
: عنوان خادم ميلفوس.dest_port
: منفذ خادم ميلفوس.mode
: يمكن استيراد البيانات إلى ميلفوس باستخدام الأوضاع التالية:تخطي: تجاهل البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
إلحاق: إلحاق البيانات إذا كانت المجموعة أو القسم موجود بالفعل.
الكتابة فوق: إذا كانت المجموعة أو القسم موجوداً بالفعل، احذف البيانات قبل إدراجها.حذف البيانات قبل الإدراج إذا كانت المجموعة أو القسم موجوداً بالفعل.
M2M:
milvus_version: 1.0.0
source_milvus_path: '/home/user/milvus'
mysql_parameter:
host: '127.0.0.1'
user: 'root'
port: 3306
password: '123456'
database: 'milvus'
source_collection:
test:
- 'partition_1'
- 'partition_2'
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'skip' # 'skip/append/overwrite'
3- تشغيل M2M.yaml.
$ milvusdm --yaml M2M.yaml
كود العينة
1- وفقًا للبيانات الوصفية للمجموعة أو القسم المحدد، اقرأ الملفات الموجودة ضمن milvus/db على محرك الأقراص المحلي لاسترداد المتجهات والمعرفات المقابلة لها من المصدر Milvus.
collection_parameter, _ = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)
2- أدخل البيانات التي تم استرجاعها في الميلفوس الهدف.
milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)
ميلفوس إلى HDF5
الخطوات
1- قم بتنزيل M2H.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml
2- قم بتعيين المعلمات التالية:
source_milvus_path
: مسار عمل ميلفوس المصدر.mysql_parameter
: إعدادات مصدر Milvus MySQL. إذا لم يتم استخدام MySQL، قم بتعيين mysql_parameter كـ ''.source_collection
: أسماء المجموعة وأقسامها في المصدر ملفوس المصدر.data_dir
: دليل لحفظ ملفات HDF5 المحفوظة.
M2H:
milvus_version: 1.0.0
source_milvus_path: '/home/user/milvus'
mysql_parameter:
host: '127.0.0.1'
user: 'root'
port: 3306
password: '123456'
database: 'milvus'
source_collection: # specify the 'partition_1' and 'partition_2' partitions of the 'test' collection.
test:
- 'partition_1'
- 'partition_2'
data_dir: '/home/user/data'
3- قم بتشغيل M2H.yaml:
$ milvusdm --yaml M2H.yaml
كود العينة
1- وفقًا للبيانات الوصفية للمجموعة أو القسم المحدد، اقرأ الملفات الموجودة ضمن milvus/db على محرك الأقراص المحلي لاسترداد المتجهات والمعرفات المقابلة لها.
collection_parameter, version = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)
2- احفظ البيانات المسترجعة كملفات HDF5.
data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)
بنية ملف MilvusDM
يوضح مخطط التدفق أدناه كيف يقوم MilvusDM بتنفيذ المهام المختلفة وفقًا لملف YAML الذي يتلقاه:
milvusdm blog 2.png
بنية ملف MilvusDM:
بيميلفوسدم
النواة
milvus_client.py: ينفذ عمليات العميل في ميلفوس.
read_data.py: يقرأ ملفات بيانات HDF5 على محرك الأقراص المحلي. (أضف الكود الخاص بك هنا لدعم قراءة ملفات البيانات بتنسيقات أخرى).
read_faiss_data.py: يقرأ ملفات البيانات في Faiss.
read_milvus_data.py: يقرأ ملفات البيانات في Milvus.
read_milvus_meta.py: يقرأ البيانات الوصفية في ميلفوس.
data_to_milvus.py: ينشئ مجموعات أو أقسام بناءً على معلمات في ملفات YAML ويستورد المتجهات ومعرفات المتجهات المقابلة إلى ملف Milvus.
save_data.py: يحفظ البيانات كملفات HDF5.
write_logs.py: يكتب السجلات أثناء وقت التشغيل.
faiss_to_milvus.py: يستورد البيانات من فايس إلى ملفوس.
hdf5_to_milvus.py: يستورد البيانات في ملفات HDF5 إلى ملف ميلفوس.
milvus_to_milvus.py: يقوم بترحيل البيانات من المصدر Milvus إلى الهدف Milvus.
milvus_to_hdf5.py: تصدير البيانات في ميلفوس وحفظها كملفات HDF5.
main.py: ينفذ المهام المقابلة وفقًا لملف YAML المستلم.
setting.py: الإعدادات المتعلقة بتشغيل كود MilvusDM.
setup.py: ينشئ حزم ملفات pymilvusdm ويرفعها إلى PyPI (فهرس حزم Python).
الخلاصة
تتعامل MilvusDM بشكل أساسي مع ترحيل البيانات من وإلى ميلفوس، والتي تشمل من فايس إلى ميلفوس، ومن HDF5 إلى ميلفوس، ومن ميلفوس إلى ميلفوس، ومن ميلفوس إلى ميلفوس، ومن ميلفوس إلى HDF5.
الميزات التالية مخطط لها في الإصدارات القادمة:
استيراد البيانات الثنائية من فايس إلى ميلفوس.
قائمة الكتل والسماح بترحيل البيانات بين المصدر ميلفوس المصدر وميلفوس الهدف.
دمج واستيراد البيانات من مجموعات أو أقسام متعددة في المصدر ميلفوس المصدر إلى مجموعة جديدة في الهدف ميلفوس.
النسخ الاحتياطي واستعادة بيانات ملفوس.
مشروع MilvusDM مفتوح المصدر على Github. نرحب بأي وجميع المساهمات في المشروع. امنحه نجمة 🌟، ولا تتردد في تقديم مشكلة أو إرسال التعليمات البرمجية الخاصة بك!
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word