🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • كيفية ترحيل بياناتك إلى ميلفوس بسلاسة: دليل شامل

كيفية ترحيل بياناتك إلى ميلفوس بسلاسة: دليل شامل

  • Engineering
December 01, 2023
Wenhui Zhang

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

  1. إعداد بيانات Elasticsearch

لترحيل بيانات Elasticsearch، يجب عليك بالفعل إعداد خادم Elasticsearch الخاص بك. يجب عليك تخزين البيانات المتجهة في الحقل dense_vector وفهرستها مع الحقول الأخرى. تعيينات الفهرس كما هو موضح أدناه.

  1. التجميع والبناء

أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم، قم بتشغيل الأوامر التالية لتجميعها.

go get
go build

ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration.

  1. التهيئة 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.

  1. تنفيذ مهمة الترحيل

الآن بعد أن قمت بتكوين ملف 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، وهي أداة إدارة قاعدة البيانات المتجهة الشاملة، لعرض العدد الإجمالي للصفوف الناجحة التي تم ترحيلها بنجاح وتنفيذ عمليات أخرى متعلقة بالتجميع.

The Attu interface واجهة Attu

الترحيل من Milvus 1.x إلى Milvus 2.x

  1. إعداد بيانات 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)، يمكنك بدء الترحيل باستخدام وحدة التحكم السحابية.

  1. التجميع والبناء

أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم قم بتشغيل الأوامر التالية لتجميعها.

go get
go build

ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration.

  1. التهيئة 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.

  1. تنفيذ مهمة الترحيل

يجب عليك تنفيذ الأمرين 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

  1. إعداد بيانات FAISS

لترحيل بيانات Elasticsearch، يجب أن تكون بيانات FAISS الخاصة بك جاهزة. لمساعدتك على تجربة عملية الترحيل بسرعة، قمنا بوضع بعض بيانات FAISS الاختبارية في الكود المصدري لـ Milvus Migration.

  1. التجميع والبناء

أولاً، قم بتنزيل الكود المصدري لـ Milvus Migration من GitHub. ثم قم بتشغيل الأوامر التالية لتجميعها.

go get
go build

ستؤدي هذه الخطوة إلى إنشاء ملف قابل للتنفيذ باسم milvus-migration.

  1. التهيئة 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.

  1. تنفيذ مهمة الترحيل

على غرار ترحيل 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 الرسمية للحصول على أحدث المعلومات والتعليمات.

Like the article? Spread the word

استمر في القراءة