ما هو ميلفوس؟

Milvus هو طائر جارح ينتمي إلى جنس Milvus من عائلة الصقور Accipaitridae، ويشتهر بسرعته في الطيران، وبصره الحاد، وقدرته الرائعة على التكيف.

تتبنى Zilliz اسم Milvus لقاعدة بياناتها المتجهة مفتوحة المصدر عالية الأداء والقابلة للتوسع بشكل كبير، والتي تعمل بكفاءة عبر مجموعة واسعة من البيئات، بدءًا من أجهزة الكمبيوتر المحمولة وصولًا إلى الأنظمة الموزعة واسعة النطاق. وهي متاحة كبرنامج مفتوح المصدر وكخدمة سحابية.

تم تطوير Milvus بواسطة Zilliz وسيتم التبرع به قريبًا إلى مؤسسة LF AI & Data التابعة لمؤسسة Linux، وقد أصبح أحد المشاريع الرائدة عالميًا في مجال قواعد البيانات المتجهة مفتوحة المصدر. يتم توزيعه بموجب ترخيص Apache 2.0، ومعظم المساهمين هم خبراء من مجتمع الحوسبة عالية الأداء (HPC)، متخصصون في بناء أنظمة واسعة النطاق وتحسين الكود المراعي لخصائص الأجهزة. ومن بين المساهمين الرئيسيين محترفون من Zilliz وARM وNVIDIA وAMD وIntel وMeta وIBM وSalesforce وAlibaba وMicrosoft.

ومن المثير للاهتمام أن كل مشروع مفتوح المصدر من Zilliz يحمل اسم طائر، وهي قاعدة تسمية ترمز إلى الحرية والبصيرة والتطور السريع للتكنولوجيا.

البيانات غير المنظمة، والتضمينات، وMilvus

تتنوع البيانات غير المنظمة، مثل النصوص والصور والمقاطع الصوتية، في تنسيقاتها وتحمل دلالات أساسية غنية، مما يجعل تحليلها أمرًا صعبًا. ولإدارة هذه التعقيدات، تُستخدم التضمينات لتحويل البيانات غير المنظمة إلى متجهات عددية تلتقط خصائصها الأساسية. ثم يتم تخزين هذه المتجهات في قاعدة بيانات متجهة، مما يتيح إجراء عمليات بحث وتحليلات سريعة وقابلة للتوسع.

يوفر Milvus إمكانيات قوية لنمذجة البيانات، مما يتيح لك تنظيم بياناتك غير المنظمة أو متعددة الوسائط في مجموعات منظمة. وهو يدعم مجموعة واسعة من أنواع البيانات لنمذجة السمات المختلفة، بما في ذلك الأنواع الرقمية وأنواع الأحرف الشائعة، وأنواع المتجهات المختلفة، والمصفوفات، والمجموعات، وJSON، مما يوفر عليك عناء صيانة أنظمة قواعد بيانات متعددة.

Untructured data, embeddings, and Milvus البيانات غير المنظمة، والتضمينات، وMilvus

يقدم Milvus ثلاثة أوضاع للنشر، تغطي نطاقًا واسعًا من أحجام البيانات — بدءًا من إنشاء النماذج الأولية المحلية في Jupyter Notebooks وصولًا إلى مجموعات Kubernetes الضخمة التي تدير عشرات المليارات من المتجهات:

  • Milvus Lite هي مكتبة Python يمكن دمجها بسهولة في تطبيقاتك. وباعتبارها نسخة خفيفة الوزن من Milvus، فهي مثالية لإنشاء النماذج الأولية بسرعة في Jupyter Notebooks أو للتشغيل على أجهزة الحافة ذات الموارد المحدودة. تعرف على المزيد.
  • Milvus Standalone هو نشر خادم على جهاز واحد، حيث يتم تجميع جميع المكونات في صورة Docker واحدة لتسهيل عملية النشر. تعرف على المزيد.
  • يمكن نشر Milvus Distributed على مجموعات Kubernetes، ويتميز بهيكلية سحابية أصلية مصممة لسيناريوهات بمليارات أو حتى أكبر من ذلك. تضمن هذه الهيكلية التكرار في المكونات الحيوية. تعرف على المزيد.

ما الذي يجعل Milvus سريعًا جدًّا؟

صُمم Milvus منذ البداية ليكون نظام قاعدة بيانات متجهة عالي الكفاءة. في معظم الحالات، يتفوق Milvus على قواعد البيانات المتجهة الأخرى بمقدار 2 إلى 5 أضعاف (انظر نتائج VectorDBBench). ويأتي هذا الأداء العالي نتيجة لعدة قرارات تصميمية رئيسية:

التحسين المراعي لخصائص الأجهزة: لتكييف Milvus مع بيئات الأجهزة المختلفة، قمنا بتحسين أدائه خصيصًا للعديد من البنى والمنصات المادية، بما في ذلك AVX512 وSIMD ووحدات معالجة الرسومات (GPUs) ومحركات الأقراص الصلبة SSD من نوع NVMe.

خوارزميات بحث متقدمة: يدعم Milvus مجموعة واسعة من خوارزميات الفهرسة/البحث في الذاكرة وعلى القرص، بما في ذلك IVF وHNSW وDiskANN وغيرها، وقد تم تحسينها جميعًا بشكل عميق. مقارنةً بالتطبيقات الشائعة مثل FAISS وHNSWLib، يقدم Milvus أداءً أفضل بنسبة 30% إلى 70%.

محرك بحث بلغة C++: يتحدد أكثر من 80% من أداء قاعدة البيانات المتجهة من خلال محرك البحث الخاص بها. يستخدم Milvus لغة C++ لهذا المكون الحيوي نظرًا للأداء العالي لهذه اللغة، والتحسين على المستوى المنخفض، والإدارة الفعالة للموارد. والأهم من ذلك، يدمج Milvus العديد من تحسينات الكود التي تراعي خصائص الأجهزة، بدءًا من التحويل إلى صيغة متجهة على مستوى التجميع وصولًا إلى التوازي متعدد الخيوط والجدولة، وذلك للاستفادة الكاملة من قدرات الأجهزة.

موجهة للأعمدة: Milvus هو نظام قاعدة بيانات متجهة للأعمدة. وتكمن المزايا الرئيسية في أنماط الوصول إلى البيانات. عند تنفيذ الاستعلامات، لا تقرأ قاعدة البيانات الموجهة للأعمدة سوى الحقول المحددة التي يشملها الاستعلام، بدلاً من الصفوف بأكملها، مما يقلل بشكل كبير من كمية البيانات التي يتم الوصول إليها. بالإضافة إلى ذلك، يمكن تحويل العمليات التي تُجرى على البيانات القائمة على الأعمدة إلى متجهات بسهولة، مما يسمح بتطبيق العمليات على الأعمدة بأكملها دفعة واحدة، مما يعزز الأداء بشكل أكبر.

ما الذي يجعل Milvus قابلة للتوسع إلى هذا الحد

في عام 2022، دعم Milvus متجهات بمليارات الوحدات، وفي عام 2023، توسع إلى عشرات المليارات مع استقرار ثابت، مما دعم سيناريوهات واسعة النطاق لأكثر من 300 مؤسسة كبرى، بما في ذلك Salesforce وPayPal وShopee وAirbnb وeBay وNVIDIA و IBM وAT&T وLINE وROBLOX وInflection وغيرها.

تضمن بنية نظام Milvus السحابية الأصلية وعالية الفصل أن النظام يمكنه التوسع باستمرار مع نمو البيانات:

Highly decoupled system architecture of Milvus بنية نظام Milvus عالية الفصل

يتميز Milvus نفسه بأنه خالٍ تمامًا من الحالة (stateless)، مما يتيح توسيع نطاقه بسهولة بمساعدة Kubernetes أو السحابات العامة. بالإضافة إلى ذلك، تتميز مكونات Milvus بفصل جيد، حيث تم تصميم المهام الثلاث الأكثر أهمية — البحث، وإدخال البيانات، والفهرسة/الضغط — كعمليات يمكن تشغيلها بالتوازي بسهولة، مع فصل المنطق المعقد عنها. وهذا يضمن أن عقدة الاستعلام وعقدة البيانات وعقدة الفهرس المقابلة يمكن توسيع نطاقها عموديًا وأفقيًا بشكل مستقل، مما يؤدي إلى تحسين الأداء والكفاءة من حيث التكلفة.

أنواع عمليات البحث التي يدعمها Milvus

يدعم Milvus أنواعًا متنوعة من وظائف البحث لتلبية متطلبات حالات الاستخدام المختلفة:

مجموعة ميزات شاملة

بالإضافة إلى ميزات البحث الرئيسية المذكورة أعلاه، يوفر Milvus أيضًا مجموعة من الميزات التي تم تنفيذها حول عمليات البحث باستخدام الشبكات العصبية الاصطناعية (ANN) حتى تتمكن من الاستفادة الكاملة من قدراته.

واجهة برمجة التطبيقات (API) ومجموعة أدوات تطوير البرامج (SDK)

  • واجهة برمجة التطبيقات (API) RESTful (رسمية)
  • PyMilvus (حزمة تطوير البرامج لـ Python) (رسمية)
  • Go SDK (رسمي)
  • Java SDK (رسمي)
  • Node.js (JavaScript) SDK (رسمي)
  • C# (بمساهمة من Microsoft)
  • C++ SDK (رسمي)
  • Rust SDK (قيد التطوير)

أنواع البيانات المتقدمة

بالإضافة إلى أنواع البيانات الأولية، يدعم Milvus أنواعًا متنوعة من البيانات المتقدمة ومقاييس المسافة القابلة للتطبيق الخاصة بكل منها.

لماذا Milvus؟

  • أداء عالٍ على نطاق واسع وتوافر عالٍ

    يتميز Milvus بهيكلية موزعة تفصل بين الحوسبة والتخزين. يمكن لـ Milvus التوسع أفقيًا والتكيف مع أنماط حركة المرور المتنوعة، مما يحقق الأداء الأمثل من خلال زيادة عقد الاستعلام بشكل مستقل لأحمال العمل التي تعتمد بشكل كبير على القراءة، وعقد البيانات لأحمال العمل التي تعتمد بشكل كبير على الكتابة. تسمح الخدمات الصغيرة غير المرتبطة بالحالة على K8s بالاستعادة السريعة بعد الفشل، مما يضمن التوافر العالي. كما يعزز دعم النسخ المتماثلة من تحمل الأعطال والإنتاجية عن طريق تحميل شرائح البيانات على عدة عقد استعلام. انظر معيار الأداء لمقارنة الأداء.

  • دعم أنواع مختلفة من فهارس المتجهات وتسريع الأجهزة

    يفصل Milvus بين النظام ومحرك البحث المتجهي الأساسي، مما يتيح له دعم جميع أنواع الفهارس المتجهة الرئيسية المُحسَّنة لمختلف السيناريوهات، بما في ذلك HNSW وIVF وFLAT (القوة الغاشمة) وSCANN وDiskANN، مع الاختلافات القائمة على التكمية وmmap. يقوم Milvus بتحسين البحث المتجهي من أجل الميزات المتقدمة مثل تصفية البيانات الوصفية والبحث عن النطاق. بالإضافة إلى ذلك، يطبق Milvus تسريع الأجهزة لتحسين أداء البحث المتجهي ويدعم الفهرسة باستخدام وحدة معالجة الرسومات (GPU)، مثل CAGRA من NVIDIA.

  • مرونة في الاستخدام المتعدد والتخزين الساخن/البارد

    يدعم Milvus الاستخدام المتعدد من خلال العزل على مستوى قاعدة البيانات أو المجموعة أو القسم أو مفتاح القسم. تتيح الاستراتيجيات المرنة لمجموعة واحدة التعامل مع مئات إلى ملايين المستخدمين، كما تضمن أداء بحث مُحسّنًا وتحكمًا مرنًا في الوصول. يعزز Milvus الفعالية من حيث التكلفة من خلال التخزين الساخن/البارد. يمكن تخزين البيانات الساخنة التي يتم الوصول إليها بشكل متكرر في الذاكرة أو على محركات أقراص SSD لتحقيق أداء أفضل، بينما يتم الاحتفاظ بالبيانات الباردة التي يتم الوصول إليها بشكل أقل على وحدات تخزين أبطأ وفعالة من حيث التكلفة. يمكن لهذه الآلية أن تقلل التكاليف بشكل كبير مع الحفاظ على أداء عالٍ للمهام الحرجة.

  • المتجه المتفرق للبحث عن النص الكامل والبحث الهجين

    بالإضافة إلى البحث الدلالي من خلال المتجهات الكثيفة، يدعم Milvus أيضًا بشكل أصلي البحث عن النص الكامل باستخدام BM25 بالإضافة إلى التضمين المتفرق المُتعلَّم مثل SPLADE وBGE-M3. يمكن للمستخدمين تخزين المتجهات المتفرقة والمتجهات الكثيفة في نفس المجموعة، وتحديد وظائف لإعادة ترتيب النتائج من طلبات بحث متعددة. انظر أمثلة على البحث الهجين باستخدام البحث الدلالي + البحث عن النص الكامل.

  • أمن البيانات والتحكم الدقيق في الوصول

    يضمن Milvus أمن البيانات من خلال تطبيق المصادقة الإلزامية للمستخدمين، وتشفير TLS، والتحكم في الوصول القائم على الأدوار (RBAC). تضمن مصادقة المستخدمين أن المستخدمين المصرح لهم الذين يمتلكون بيانات اعتماد صالحة هم فقط من يمكنهم الوصول إلى قاعدة البيانات، بينما يعمل تشفير TLS على تأمين جميع الاتصالات داخل الشبكة. بالإضافة إلى ذلك، يتيح نظام RBAC التحكم الدقيق في الوصول من خلال تعيين أذونات محددة للمستخدمين بناءً على أدوارهم. تجعل هذه الميزات من Milvus خيارًا قويًا وآمنًا لتطبيقات المؤسسات، حيث تحمي البيانات الحساسة من الوصول غير المصرح به والانتهاكات المحتملة.

تكاملات الذكاء الاصطناعي

  • تكامل نماذج التضمين تعمل نماذج التضمين على تحويل البيانات غير المنظمة إلى تمثيلها الرقمي في فضاء البيانات عالي الأبعاد بحيث يمكنك تخزينها في Milvus. حاليًا، يدمج PyMilvus، وهو SDK لـ Python، عدة نماذج تضمين حتى تتمكن من تحضير بياناتك بسرعة في شكل تضمينات متجهة. لمزيد من التفاصيل، راجع نظرة عامة على التضمين.

  • تكامل نماذج إعادة الترتيب في مجال استرجاع المعلومات والذكاء الاصطناعي التوليدي، يُعد أداة إعادة الترتيب أداة أساسية تعمل على تحسين ترتيب نتائج عمليات البحث الأولية. كما يدمج PyMilvus أيضًا العديد من نماذج إعادة الترتيب لتحسين ترتيب النتائج التي يتم إرجاعها من عمليات البحث الأولية. لمزيد من التفاصيل، راجع «نظرة عامة على أدوات إعادة الترتيب».

  • تكامل LangChain وأدوات الذكاء الاصطناعي الأخرى في عصر الذكاء الاصطناعي التوليدي (GenAI)، تحظى أدوات مثل LangChain باهتمام كبير من مطوري التطبيقات. وباعتباره مكونًا أساسيًا، يعمل Milvus عادةً كمخزن للمتجهات في مثل هذه الأدوات. لمعرفة كيفية دمج Milvus في أدوات الذكاء الاصطناعي المفضلة لديك، راجع قسم «التكاملات والبرامج التعليمية».

الأدوات والنظام البيئي

  • Attu Attu هي واجهة مستخدم رسومية (GUI) شاملة وسهلة الاستخدام تساعدك على إدارة Milvus والبيانات التي يخزنها. لمزيد من التفاصيل، راجع مستودع Attu.

  • Birdwatcher Birdwatcher هي أداة تصحيح أخطاء لـ Milvus. باستخدامها للاتصال بـ etcd، يمكنك التحقق من حالة نظام Milvus الخاص بك أو تهيئته على الفور. لمزيد من التفاصيل، راجع BirdWatcher.

  • تكاملات Prometheus و Grafana Prometheus هي مجموعة أدوات مفتوحة المصدر لمراقبة النظام وإرسال التنبيهات لـ Kubernetes. Grafana هي منصة تصور مفتوحة المصدر يمكنها الاتصال بجميع مصادر البيانات. يمكنك استخدام Prometheus و Grafana كمزود خدمة المراقبة لمراقبة أداء Milvus الموزع بصريًا. لمزيد من التفاصيل، راجع «نشر خدمات المراقبة».

  • النسخ الاحتياطي في Milvus النسخ الاحتياطي في Milvus هو أداة تتيح للمستخدمين إجراء النسخ الاحتياطي لبيانات Milvus واستعادتها. ويوفر كل من واجهة سطر الأوامر (CLI) وواجهة برمجة التطبيقات (API) لتناسب سيناريوهات التطبيق المختلفة. لمزيد من التفاصيل، راجع النسخ الاحتياطي في Milvus.

  • Milvus Capture Data Change (CDC) يمكن لـ Milvus CDC نسخ تغييرات البيانات من مجموعة Milvus إلى أخرى من أجل الاستعادة بعد الكوارث بين النظام الأساسي والنظام الاحتياطي. لمزيد من التفاصيل، راجع Milvus CDC.

  • موصلات Milvus أعدت Milvus مجموعة من الموصلات لتتمكن من دمج Milvus بسلاسة مع أدوات الجهات الخارجية، مثل Apache Spark. حاليًا، يمكنك استخدام موصل Spark الخاص بنا لتغذية بيانات Milvus الخاصة بك إلى Apache Spark لمعالجتها باستخدام التعلم الآلي. لمزيد من التفاصيل، راجع موصل Spark-Milvus.

  • خدمات نقل المتجهات (VTS) يوفر Milvus مجموعة من الأدوات لنقل بياناتك بين مثيل Milvus ومجموعة من مصادر البيانات، بما في ذلك مجموعات Zilliz وElasticsearch وPostgres (PgVector) ومثيل Milvus آخر. لمزيد من التفاصيل، راجع VTS.