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

milvus-logo
LFAI
  • Home
  • Blog
  • بناء قاعدة بيانات المتجهات للبحث عن التشابه القابل للتطوير

بناء قاعدة بيانات المتجهات للبحث عن التشابه القابل للتطوير

  • Engineering
March 14, 2022
Xiaofan Luan

Cover image صورة الغلاف

هذا المقال بقلم شياوفان لوان وأعدته أنجيلا ني وكلير يو.

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

الانتقال إلى:

تتطلب البيانات غير المهيكلة حزمة برمجيات أساسية كاملة

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

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

The workflow of processing unstructured data. سير عمل معالجة البيانات غير المنظمة.

المتجهات والكميات القياسية

الكمية القياسية هي الكمية التي توصف بقياس واحد فقط - المقدار. يمكن تمثيل الكمية القياسية كعدد. على سبيل المثال، تسير سيارة بسرعة 80 كم/ساعة. هنا، السرعة (80 كم/ساعة) هي كمية قياسية. في حين أن المتجه هو كمية توصف بمقياسين على الأقل، وهما المقدار والاتجاه. إذا كانت سيارة تتحرَّك باتجاه الغرب بسرعة 80 كم/ساعة، فإن السرعة (80 كم/ساعة غربًا) هنا كمية متجهة. الصورة أدناه مثال على الكميات القياسية والمتجهات الشائعة.

Scalars vs. Vectors الكميات القياسية مقابل المتجهات

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

لمعرفة المزيد حول الفهارس، راجع فهرس المتجهات.

من محرك بحث المتجهات إلى قاعدة بيانات المتجهات

منذ البداية، تم تصميم ميلفوس 2.0 ليس فقط ليكون محرك بحث، ولكن الأهم من ذلك أنه قاعدة بيانات متجهات قوية.

تتمثل إحدى الطرق لمساعدتك على فهم الفرق هنا في رسم تشابه بين InnoDB وMySQL، أو Lucene وElasticsearch.

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

  • التجزئة والتقسيم
  • النسخ المتماثل
  • التعافي من الكوارث
  • موازنة التحميل
  • محلل الاستعلام أو المُحسِّن

Vector database قاعدة البيانات المتجهة

للحصول على فهم أشمل لماهية قاعدة البيانات المتجهة، اقرأ المدونة هنا.

النهج الأول السحابي الأصلي

Could-native approach نهج يمكن أن يكون أصلياً

من اللاشيء المشترك، إلى التخزين المشترك، ثم إلى شيء مشترك

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

بصرف النظر عن بنية "الشيء المشترك"، تدعم Milvus التوسع المرن لكل مكون باستخدام Kubernetes لإدارة محرك التنفيذ وفصل خدمات القراءة والكتابة والخدمات الأخرى مع الخدمات المصغرة.

قاعدة البيانات كخدمة (DBaaS)

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

التآزر مع النظام البيئي الأوسع مفتوح المصدر

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

في المستقبل، نأمل أن نبني Milvus على رأس البنى التحتية للذكاء الاصطناعي مثل Spark أو Tensorflow، ودمج Milvus مع محركات البث حتى نتمكن من دعم البث الموحد والمعالجة المجمعة بشكل أفضل لتلبية الاحتياجات المختلفة لمستخدمي Milvus.

مبادئ التصميم الخاصة ب Milvus 2.0

بصفتها الجيل التالي من قاعدة بياناتنا السحابية المتجهة الأصلية، تم تصميم Milvus 2.0 حول المبادئ الثلاثة التالية.

السجل كبيانات

يسجل السجل في قاعدة البيانات بشكل تسلسلي جميع التغييرات التي تم إجراؤها على البيانات. كما هو موضح في الشكل أدناه، من اليسار إلى اليمين "البيانات القديمة" و"البيانات الجديدة". والسجلات بالترتيب الزمني. لدى ميلفوس آلية توقيت عالمية تعين طابعاً زمنياً فريداً عالمياً وتلقائياً متزايداً.

Logs السجلات

في Milvus 2.0، يعمل وسيط السجلات كعمود فقري للنظام: يجب أن تمر جميع عمليات إدراج البيانات وتحديثها عبر وسيط السجلات، وتنفذ العقد العاملة عمليات CRUD من خلال الاشتراك في السجلات واستهلاكها.

ازدواجية الجدول والسجل

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

ثبات السجل

يعد ثبات السجل إحدى المشكلات الصعبة التي تواجهها العديد من قواعد البيانات. عادةً ما يعتمد تخزين السجلات في نظام موزع على خوارزميات النسخ المتماثل.

وعلى عكس قواعد البيانات مثل Aurora و HBase و Cockroach DB و TiDB، فإن Milvus يتخذ نهجًا رائدًا ويقدم نظام نشر/فرعي (pub/sub) لتخزين السجلات واستمرارها. نظام pub/sub مشابه لقائمة انتظار الرسائل في كافكا أو بولسار. يمكن لجميع العقد داخل النظام استهلاك السجلات. في ميلفوس، يُطلق على هذا النوع من النظام اسم وسيط السجل. وبفضل وسيط السجلات، تنفصل السجلات عن الخادم، مما يضمن أن ميلفوس نفسه عديم الحالة وفي وضع أفضل للتعافي بسرعة من فشل النظام.

Log broker وسيط السجل

تم تصميم Milvus على رأس مكتبات البحث عن المتجهات الشائعة بما في ذلك Faiss وANNOY وHNSW وغيرها، وقد صُمم Milvus للبحث عن التشابه في مجموعات بيانات المتجهات الكثيفة التي تحتوي على ملايين أو مليارات أو حتى تريليونات المتجهات.

مستقل وعنقودي

يقدم ميلفوس طريقتين للنشر - مستقل أو عنقودي. في ميلفوس المستقلة، حيث يتم نشر جميع العقد معًا، يمكننا أن نرى ميلفوس كعملية واحدة. حاليًا، يعتمد ميلفوس المستقل حاليًا على MinIO و etcd لاستمرار البيانات وتخزين البيانات الوصفية. في الإصدارات المستقبلية، نأمل أن نتخلص في الإصدارات المستقبلية من هاتين التبعيتين الخارجيتين لضمان بساطة نظام Milvus. تشتمل مجموعة Milvus على ثمانية مكونات للخدمات المصغرة وثلاث تبعيات لجهات خارجية: MinIO و etcd وPulsar. يعمل Pulsar كوسيط للسجل ويوفر خدمات السجل pub / sub.

Standalone and cluster مستقل وتجميعي

هيكل عظمي مكشوف لبنية ميلفوس

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

Milvus architecture بنية ميلفوس

طبقة الوصول

تعمل طبقة الوصول كواجهة للنظام، حيث تعرض نقطة نهاية اتصال العميل إلى العالم الخارجي. وهي مسؤولة عن معالجة اتصالات العميل، وإجراء التحقق الثابت، والفحوصات الديناميكية الأساسية لطلبات المستخدم، وإعادة توجيه الطلبات، وجمع النتائج وإعادتها إلى العميل. الوكيل نفسه عديم الحالة ويوفر عناوين وخدمات وصول موحدة إلى العالم الخارجي من خلال مكونات موازنة التحميل (Nginx، و Kubernetess Ingress، و NodePort، و LVS). يستخدم ميلفوس بنية معالجة متوازية على نطاق واسع (MPP)، حيث يقوم البروكسي بإرجاع النتائج المجمعة من العقد العاملة بعد التجميع العالمي والمعالجة اللاحقة.

خدمة المنسق

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

العقد العاملة

تعمل العقدة العاملة، أو عقدة التنفيذ، كأطراف للنظام، حيث تقوم بتنفيذ التعليمات الصادرة عن خدمة المنسق وأوامر لغة معالجة البيانات (DML) التي يبدأها الوكيل. العقدة العاملة في ميلفوس تشبه عقدة البيانات في Hadoop، أو خادم المنطقة في HBase. يتوافق كل نوع من العقدة العاملة مع خدمة منسق. للحصول على شرح مفصل لوظيفة كل عقدة عاملة، اقرأ وثائق ميلفوس التقنية.

التخزين

التخزين هو حجر الزاوية في ميلفوس، وهو المسؤول عن ثبات البيانات. تنقسم طبقة التخزين إلى ثلاثة أجزاء:

  • مخزن التعريف: مسؤول عن تخزين لقطات من البيانات الوصفية مثل مخطط المجموعة، وحالة العقدة، ونقاط التحقق من استهلاك الرسائل، وما إلى ذلك. يعتمد ميلفوس على إلخd لهذه الوظائف، ويتولى Etcd أيضًا مسؤولية تسجيل الخدمة والتحقق من صحتها.
  • وسيط السجل: نظام pub/فرعي يدعم التشغيل وهو مسؤول عن استمرار البيانات المتدفقة، وتنفيذ الاستعلام غير المتزامن الموثوق به، وإشعارات الأحداث، وإرجاع نتائج الاستعلام. عندما تقوم العقد باسترداد وقت التعطل، يضمن وسيط السجل سلامة البيانات الإضافية من خلال تشغيل وسيط السجل. تستخدم مجموعة ميلفوس العنقودية Pulsar كوسيط سجل، بينما يستخدم الوضع المستقل RocksDB. يمكن أيضًا استخدام خدمات التخزين المتدفقة مثل Kafka و Pravega كوسيط سجلات.
  • تخزين الكائنات: يخزن ملفات لقطات من السجلات، وملفات الفهرس القياسي/المتجه ونتائج معالجة الاستعلام الوسيطة. يدعم Milvus خدمة AWS S3 وAzure Blob، بالإضافة إلى MinIO، وهي خدمة تخزين كائنات خفيفة الوزن ومفتوحة المصدر. نظرًا لارتفاع زمن الوصول والفواتير لكل استعلام لخدمات تخزين الكائنات، ستدعم Milvus قريبًا مجمعات التخزين المؤقت القائمة على الذاكرة/الأقراص المدمجة وفصل البيانات الساخنة/الباردة لتحسين الأداء وتقليل التكاليف.

نموذج البيانات

ينظم نموذج البيانات البيانات البيانات في قاعدة البيانات. في Milvus، يتم تنظيم جميع البيانات في Milvus حسب المجموعة والجزء والجزء والقسم والجزء والكيان.

Data model 1 نموذج البيانات 1

التجميع

يمكن تشبيه المجموعة في ملفوس بجدول في نظام تخزين علائقي. المجموعة هي أكبر وحدة بيانات في ميلفوس.

شارد

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

التقسيم

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

بالمقارنة، فإن التجزئة هي أكثر من قدرات التوسع عند كتابة البيانات، في حين أن التقسيم هو أكثر من تعزيز أداء النظام عند قراءة البيانات.

Data model 2 نموذج البيانات 2

التقسيمات

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

للوصول إلى البيانات في الوقت الفعلي، يقرأ النظام البيانات في كل من المقاطع المتنامية والمقاطع المغلقة.

الكيان

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

حول سلسلة الغوص العميق

مع الإعلان الرسمي عن التوفر العام لـ Milvus 2.0، قمنا بتنظيم سلسلة مدونة Milvus Deep Dive هذه لتقديم تفسير متعمق لبنية Milvus ورمز المصدر. تشمل الموضوعات التي تتناولها سلسلة المدونات هذه ما يلي:

Like the article? Spread the word

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