كيفية ترحيل بياناتك إلى ميلفوس بسلاسة: دليل شامل
Milvus هي قاعدة بيانات متجهية قوية مفتوحة المصدر للبحث عن التشابه يمكنها تخزين ومعالجة واسترجاع مليارات بل وتريليونات من البيانات المتجهة بأقل زمن انتقال. كما أنها قابلة للتطوير بشكل كبير وموثوق بها وموثوقة وسحابة أصلية وغنية بالميزات. يقدم الإصدار الأحدث من Milvus المزيد من الميزات والتحسينات المثيرة، بما في ذلك دعم وحدة معالجة الرسومات (GPU) لأداء أسرع 10 مرات، وخريطة MMap لسعة تخزين أكبر على جهاز واحد.
اعتبارًا من سبتمبر 2023، حازت Milvus على ما يقرب من 23,000 نجمة على GitHub ولديها عشرات الآلاف من المستخدمين من مختلف الصناعات ذات الاحتياجات المتنوعة. وقد أصبحت أكثر شعبية مع انتشار تكنولوجيا الذكاء الاصطناعي التوليدي مثل ChatGPT. وهي مكون أساسي لمختلف حزم الذكاء الاصطناعي، خاصةً إطار الجيل المعزز الاسترجاعي، الذي يعالج مشكلة الهلوسة في النماذج اللغوية الكبيرة.
لتلبية الطلب المتزايد من المستخدمين الجدد الذين يرغبون في الترحيل إلى Milvus والمستخدمين الحاليين الذين يرغبون في الترقية إلى أحدث إصدارات Milvus، قمنا بتطوير Milvus Migration. في هذه المدونة، سنستكشف في هذه المدونة ميزات Milvus Migration ونرشدك خلال نقل بياناتك بسرعة إلى Milvus من Milvus 1.x وFaISS وElasticsearch 7.0 وما بعده.
Milvus Migration، أداة قوية لترحيل البيانات
Milvus Migration هي أداة ترحيل بيانات مكتوبة بلغة Go. وهي تُمكّن المستخدمين من نقل بياناتهم بسلاسة من الإصدارات القديمة من Milvus (1.x) و FAISS و Elasticsearch 7.0 وما بعده إلى إصدارات Milvus 2.x.
يوضح الرسم البياني أدناه كيف قمنا ببناء Milvus Migration وكيف يعمل.
كيف يقوم برنامج Milvus Migration بترحيل البيانات
من Milvus 1.x و FAISS إلى Milvus 2.x
تتضمن عملية ترحيل البيانات من Milvus 1.x و FAISS تحليل محتوى ملفات البيانات الأصلية، وتحويلها إلى تنسيق تخزين البيانات في Milvus 2.x، وكتابة البيانات باستخدام Milvus SDK الخاص بـ Milvus bulkInsert
. تعتمد هذه العملية بأكملها على الدفق، وهي محدودة نظريًا بمساحة القرص فقط، وتخزن ملفات البيانات على القرص المحلي أو S3 أو OSS أو GCP أو Minio.
من Elasticsearch إلى ميلفوس 2.x
في ترحيل بيانات Elasticsearch، يكون استرجاع البيانات مختلفًا. لا يتم الحصول على البيانات من الملفات ولكن يتم جلبها بالتتابع باستخدام واجهة برمجة تطبيقات التمرير الخاصة بـ Elasticsearch. يتم بعد ذلك تحليل البيانات وتحويلها إلى تنسيق تخزين Milvus 2.x، ثم كتابتها باستخدام bulkInsert
. إلى جانب ترحيل متجهات من نوع dense_vector
المخزنة في Elasticsearch، يدعم Milvus Migration أيضًا ترحيل أنواع الحقول الأخرى، بما في ذلك الطويل والصحيح والقصير والمنطقي والمنطقي والكلمة المفتاحية والنص والمزدوج.
مجموعة ميزات Milvus Migration
يبسط Milvus Migration عملية الترحيل من خلال مجموعة ميزاته القوية:
مصادر البيانات المدعومة:
من Milvus 1.x إلى Milvus 2.x
من Elasticsearch 7.0 وما بعده إلى Milvus 2.x
من FAISS إلى Milvus 2.x
أوضاع تفاعل متعددة:
واجهة سطر الأوامر (CLI) باستخدام إطار عمل كوبرا
واجهة برمجة التطبيقات المريحة مع واجهة مستخدم Swagger المدمجة
التكامل كوحدة نمطية Go في أدوات أخرى
دعم تنسيق ملف متعدد الاستخدامات:
الملفات المحلية
أمازون S3
خدمة تخزين الكائنات (OSS)
منصة جوجل السحابية (GCP)
تكامل مرن مع Elasticsearch:
ترحيل متجهات
dense_vector
من نوع من Elasticsearchدعم لترحيل أنواع الحقول الأخرى مثل الطويل والصحيح والقصير والمنطقي والمنطقي والكلمة المفتاحية والنص والمزدوج
تعريفات الواجهة
يوفر Milvus Migration الواجهات الرئيسية التالية:
/start
: بدء مهمة الترحيل (ما يعادل مزيجًا من التفريغ والتحميل، ويدعم حاليًا ترحيل ES فقط)./dump
: بدء مهمة تفريغ (كتابة بيانات المصدر في وسيط التخزين الهدف)./load
: : بدء مهمة تحميل (كتابة البيانات من وسيط التخزين الهدف إلى Milvus 2.x)./get_job
: يسمح للمستخدمين بعرض نتائج تنفيذ المهمة. (لمزيد من التفاصيل، راجع الخادم الخاص بالمشروع)
بعد ذلك، دعنا نستخدم بعض الأمثلة على البيانات لاستكشاف كيفية استخدام Milvus Migration في هذا القسم. يمكنك العثور على هذه الأمثلة هنا على GitHub.
الترحيل من Elasticsearch إلى ميلفوس 2.x
- إعداد بيانات Elasticsearch
لترحيل بيانات Elasticsearch، يجب عليك بالفعل إعداد خادم Elasticsearch الخاص بك. يجب عليك تخزين البيانات المتجهة في الحقل dense_vector
وفهرستها مع الحقول الأخرى. تعيينات الفهرس كما هو موضح أدناه.
- التجميع والبناء
أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم، قم بتشغيل الأوامر التالية لتجميعها.
go get
go build
ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration
.
- التهيئة
migration.yaml
قبل بدء الترحيل، يجب إعداد ملف تهيئة باسم migration.yaml
يتضمن معلومات حول مصدر البيانات والهدف والإعدادات الأخرى ذات الصلة. إليك مثال على التكوين:
# 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: ******
للحصول على شرح أكثر تفصيلاً لملف التكوين، راجع هذه الصفحة على GitHub.
- تنفيذ مهمة الترحيل
الآن بعد أن قمت بتكوين ملف migration.yaml
، يمكنك بدء مهمة الترحيل عن طريق تشغيل الأمر التالي:
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
راقب مخرجات السجل. عندما ترى سجلات مشابهة لما يلي، فهذا يعني أن الترحيل كان ناجحًا.
[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!"]
بالإضافة إلى نهج سطر الأوامر، تدعم Milvus Migration أيضًا الترحيل باستخدام واجهة برمجة التطبيقات المريحة.
لاستخدام واجهة برمجة التطبيقات المريحة، ابدأ تشغيل خادم واجهة برمجة التطبيقات باستخدام الأمر التالي:
./milvus-migration server run -p 8080
بمجرد تشغيل الخدمة، يمكنك بدء الترحيل عن طريق استدعاء واجهة برمجة التطبيقات.
curl -XPOST http://localhost:8080/api/v1/start
عند اكتمال عملية الترحيل، يمكنك استخدام Attu، وهي أداة إدارة قاعدة البيانات المتجهة الشاملة، لعرض العدد الإجمالي للصفوف الناجحة التي تم ترحيلها بنجاح وتنفيذ عمليات أخرى متعلقة بالتجميع.
واجهة Attu
الترحيل من Milvus 1.x إلى Milvus 2.x
- إعداد بيانات Milvus 1.x
لمساعدتك على تجربة عملية الترحيل بسرعة، قمنا بوضع 10,000 سجل بيانات اختبار Milvus 1.x في الكود المصدري لـ Milvus Migration. ومع ذلك، في الحالات الحقيقية، يجب عليك تصدير ملف meta.json
الخاص بك من مثيل Milvus 1.x الخاص بك قبل بدء عملية الترحيل.
- يمكنك تصدير البيانات باستخدام الأمر التالي.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
تأكد من:
استبدال العناصر النائبة ببيانات اعتماد MySQL الفعلية الخاصة بك.
أوقف خادم Milvus 1.x أو أوقف كتابة البيانات قبل تنفيذ عملية التصدير هذه.
انسخ مجلد Milvus
tables
والملفmeta.json
إلى نفس الدليل.
ملاحظة: إذا كنت تستخدم Milvus 2.x على Zilliz Cloud (الخدمة المدارة بالكامل من Milvus)، يمكنك بدء الترحيل باستخدام وحدة التحكم السحابية.
- التجميع والبناء
أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم قم بتشغيل الأوامر التالية لتجميعها.
go get
go build
ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration
.
- التهيئة
migration.yaml
قم بإعداد ملف تكوين migration.yaml
، مع تحديد تفاصيل حول المصدر والهدف والإعدادات الأخرى ذات الصلة. فيما يلي مثال على التكوين:
# 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
للحصول على شرح أكثر تفصيلاً لملف التكوين، راجع هذه الصفحة على GitHub.
- تنفيذ مهمة الترحيل
يجب عليك تنفيذ الأمرين dump
و load
بشكل منفصل لإنهاء الترحيل. تقوم هذه الأوامر بتحويل البيانات واستيرادها إلى Milvus 2.x.
ملحوظة: سنقوم بتبسيط هذه الخطوة وتمكين المستخدمين من إنهاء الترحيل باستخدام أمر واحد فقط قريبًا. ترقبوا ذلك.
أمر التفريغ:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
أمر التحميل:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
بعد الترحيل، ستحتوي المجموعة التي تم إنشاؤها في Milvus 2.x على حقلين: id
و data
. يمكنك عرض المزيد من التفاصيل باستخدام Attu، وهي أداة إدارة قاعدة بيانات المتجهات الشاملة.
الترحيل من FAISS إلى ملفوس 2.x
- إعداد بيانات FAISS
لترحيل بيانات Elasticsearch، يجب أن تكون بيانات FAISS الخاصة بك جاهزة. لمساعدتك على تجربة عملية الترحيل بسرعة، قمنا بوضع بعض بيانات FAISS الاختبارية في الكود المصدري لـ Milvus Migration.
- التجميع والبناء
أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم قم بتشغيل الأوامر التالية لتجميعها.
go get
go build
ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration
.
- التهيئة
migration.yaml
قم بإعداد ملف تكوين migration.yaml
لترحيل FAISS، مع تحديد تفاصيل حول المصدر والهدف والإعدادات الأخرى ذات الصلة. فيما يلي مثال على التكوين:
# 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
للحصول على شرح أكثر تفصيلاً لملف التكوين، راجع هذه الصفحة على GitHub.
- تنفيذ مهمة الترحيل
على غرار ترحيل Milvus 1.x إلى Milvus 2.x، يتطلب ترحيل FAISS تنفيذ الأمرين dump
و load
. تقوم هذه الأوامر بتحويل البيانات واستيرادها إلى Milvus 2.x.
ملحوظة: سنقوم بتبسيط هذه الخطوة وتمكين المستخدمين من إنهاء الترحيل باستخدام أمر واحد فقط قريبًا. ترقبوا ذلك.
أمر التفريغ:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
أمر التحميل:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
يمكنك عرض المزيد من التفاصيل باستخدام Attu، أداة إدارة قاعدة البيانات المتجهة الشاملة.
ترقبوا خطط الترحيل المستقبلية
سنقوم في المستقبل بدعم الترحيل من المزيد من مصادر البيانات وإضافة المزيد من ميزات الترحيل، بما في ذلك:
دعم الترحيل من Redis إلى Milvus.
دعم الترحيل من MongoDB إلى Milvus.
دعم الترحيل القابل للاستئناف.
تبسيط أوامر الترحيل من خلال دمج عمليتي التفريغ والتحميل في عملية واحدة.
دعم الترحيل من مصادر البيانات الرئيسية الأخرى إلى ميلفوس.
الخاتمة
يجلب الإصدار الأخير من Milvus 2.3، وهو أحدث إصدار من Milvus، ميزات جديدة مثيرة وتحسينات في الأداء تلبي الاحتياجات المتزايدة لإدارة البيانات. يمكن أن يؤدي ترحيل بياناتك إلى الإصدار 2.x من Milvus 2.x إلى إطلاق هذه الفوائد، ويجعل مشروع Milvus Migration عملية الترحيل مبسطة وسهلة. جربه، ولن يخيب أملك.
ملاحظة: تستند المعلومات الواردة في هذه المدونة إلى حالة مشروعي Milvus وMilvus Migration اعتبارًا من سبتمبر 2023. راجع وثائق Milvus الرسمية للحصول على أحدث المعلومات والتعليمات.
- Milvus Migration، أداة قوية لترحيل البيانات
- الترحيل من Elasticsearch إلى ميلفوس 2.x
- الترحيل من Milvus 1.x إلى Milvus 2.x
- الترحيل من FAISS إلى ملفوس 2.x
- ترقبوا خطط الترحيل المستقبلية
- الخاتمة
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word