مقارنة قواعد بيانات المتجهات ومكتبات البحث عن المتجهات ومكونات البحث عن المتجهات الإضافية
مرحبًا بكم مرة أخرى في قاعدة بيانات المتجهات 101!
لقد أدت الطفرة في ChatGPT ونماذج اللغات الكبيرة الأخرى (LLMs) إلى نمو تقنيات البحث المتجه، والتي تضم قواعد بيانات متجهات متخصصة مثل Milvus و Zilliz Cloud إلى جانب مكتبات مثل FAISS ومكونات البحث المتجه المدمجة في قواعد البيانات التقليدية.
في سلسلة منشوراتنا السابقة، تناولنا في منشورنا السابق أساسيات قواعد بيانات المتجهات. في هذا المنشور، سنواصل استكشاف عالم البحث المتجه المعقد، ومقارنة قواعد بيانات المتجهات، ومكونات البحث المتجهية، ومكتبات البحث المتجهية.
ما هو البحث المتجه؟
البحث عن المتجهات، والمعروف أيضًا باسم البحث عن تشابه المتجهات، هو تقنية لاسترجاع أفضل-ك من النتائج الأكثر تشابهًا أو ارتباطًا دلاليًا بمتجه استعلام معين من بين مجموعة واسعة من بيانات المتجهات الكثيفة. قبل إجراء عمليات البحث عن التشابه، نستفيد من الشبكات العصبية لتحويل البيانات غير المهيكلة، مثل النصوص والصور ومقاطع الفيديو والصوت، إلى متجهات رقمية عالية الأبعاد تسمى متجهات التضمين. بعد توليد متجهات التضمين، تقارن محركات البحث عن المتجهات المسافة المكانية بين متجه الاستعلام المدخلات والمتجهات في مخازن المتجهات. وكلما كانت متقاربة في الفضاء، كلما كانت أكثر تشابهًا.
تتوفر العديد من تقنيات البحث المتجهية في السوق، بما في ذلك مكتبات التعلم الآلي مثل NumPy من Python، ومكتبات البحث المتجهية مثل FAISS، ومكونات البحث المتجهية المبنية على قواعد البيانات التقليدية، وقواعد البيانات المتجهة المتخصصة مثل Milvus وZilliz Cloud.
قواعد بيانات المتجهات مقابل مكتبات البحث عن المتجهات
قواعد البيانات المتجهة المتخصصة ليست المكدس الوحيد لعمليات البحث عن التشابه. فقبل ظهور قواعد بيانات المتجهات، استُخدمت العديد من مكتبات البحث عن المتجهات، مثل FAISS و ScaNN و HNSW، لاسترجاع المتجهات.
يمكن أن تساعدك مكتبات البحث المتجهية في بناء نظام بحث متجهي نموذجي عالي الأداء بسرعة. إذا أخذنا FAISS كمثال، فهو مفتوح المصدر وتم تطويره بواسطة Meta للبحث الفعال عن التشابه وتجميع المتجهات الكثيفة بكفاءة. يمكن ل FAISS التعامل مع مجموعات المتجهات من أي حجم، حتى تلك التي لا يمكن تحميلها بالكامل في الذاكرة. بالإضافة إلى ذلك، يوفر FAISS أدوات للتقييم وضبط المعلمات. وعلى الرغم من أن FAISS مكتوب بلغة C++، إلا أنه يوفر واجهة Python/NumPy.
ومع ذلك، فإن مكتبات البحث المتجهية هي مجرد مكتبات ANN خفيفة الوزن وليست حلولاً مُدارة، ولها وظائف محدودة. إذا كانت مجموعة البيانات الخاصة بك صغيرة ومحدودة، يمكن أن تكون هذه المكتبات كافية لمعالجة البيانات غير المهيكلة، حتى بالنسبة للأنظمة التي تعمل في الإنتاج. ومع ذلك، مع زيادة أحجام مجموعات البيانات وزيادة عدد المستخدمين، تزداد صعوبة حل مشكلة الحجم. علاوة على ذلك، فهي لا تسمح بإجراء أي تعديلات على بيانات الفهرس الخاصة بها ولا يمكن الاستعلام عنها أثناء استيراد البيانات.
وعلى النقيض من ذلك، فإن قواعد البيانات المتجهة هي الحل الأمثل لتخزين البيانات غير المنظمة واسترجاعها. ويمكنها تخزين ملايين أو حتى مليارات المتجهات والاستعلام عنها مع توفير استجابات في الوقت الفعلي في الوقت نفسه؛ فهي قابلة للتطوير بدرجة كبيرة لتلبية احتياجات العمل المتزايدة للمستخدمين.
بالإضافة إلى ذلك، تتمتع قواعد البيانات المتجهة مثل Milvus بميزات أكثر سهولة في الاستخدام للبيانات المهيكلة/شبه المهيكلة: السحابة-السحابية، وتعدد الإيجارات، وقابلية التوسع، وما إلى ذلك. ستتضح هذه الميزات عندما نتعمق في هذا البرنامج التعليمي.
تعمل أيضًا في طبقة مختلفة تمامًا من التجريد عن مكتبات البحث المتجه - قواعد البيانات المتجهة هي خدمات متكاملة، بينما مكتبات الشبكة النانوية الوطنية تهدف إلى دمجها في التطبيق الذي تقوم بتطويره. وبهذا المعنى، فإن مكتبات الشبكات العصبية الاصطناعية هي أحد المكونات العديدة التي تُبنى قواعد البيانات المتجهة فوقها، على غرار كيفية بناء Elasticsearch فوق Apache Lucene.
لإعطاء مثال على سبب أهمية هذا التجريد، دعنا نلقي نظرة على إدراج عنصر بيانات جديد غير منظم في قاعدة بيانات متجهية. هذا سهل للغاية في ميلفوس:
from pymilvus import Collectioncollection = Collection('book')mr = collection.insert(data)
إنه حقًا بهذه السهولة - 3 أسطر من التعليمات البرمجية. مع مكتبة مثل FAISS أو ScaNN، للأسف، لا توجد طريقة سهلة للقيام بذلك دون إعادة إنشاء الفهرس بالكامل يدويًا عند نقاط تفتيش معينة. حتى لو استطعت، لا تزال مكتبات البحث المتجهية تفتقر إلى قابلية التوسع وتعدد الإيجار، وهما من أهم ميزات قواعد البيانات المتجهة.
قواعد البيانات المتجهة مقابل مكونات البحث المتجهة لقواعد البيانات التقليدية
عظيم، الآن بعد أن حددنا الفرق بين مكتبات البحث المتجه وقواعد البيانات المتجهة، دعونا نلقي نظرة على كيفية اختلاف قواعد البيانات المتجهة عن المكونات الإضافية للبحث المتجه.
هناك عدد متزايد من قواعد البيانات العلائقية التقليدية وأنظمة البحث مثل Clickhouse و Elasticsearch التي تتضمن مكونات إضافية مدمجة للبحث المتجه. يتضمن Elasticsearch 8.0، على سبيل المثال، وظيفة إدراج المتجهات ووظيفة البحث عن المتجهات التي يمكن استدعاؤها عبر نقاط نهاية واجهة برمجة التطبيقات المريحة. يجب أن تكون مشكلة ملحقات البحث المتجه واضحة وضوح الشمس في رابعة النهار، فهذه الحلول لا تتخذ نهجًا متكاملًا لإدارة التضمين والبحث المتجه. وبدلاً من ذلك، تهدف هذه المكونات الإضافية إلى أن تكون تحسينات فوق البنى الحالية، مما يجعلها محدودة وغير محسّنة. سيكون تطوير تطبيق بيانات غير مهيكلة فوق قاعدة بيانات تقليدية أشبه بمحاولة تركيب بطاريات الليثيوم والمحركات الكهربائية داخل إطار سيارة تعمل بالبنزين - ليست فكرة رائعة!
لتوضيح سبب ذلك، دعونا نعود إلى قائمة الميزات التي يجب أن تنفذها قاعدة بيانات المتجهات (من القسم الأول). تفتقد المكونات الإضافية للبحث المتجه إلى اثنتين من هذه الميزات - قابلية الضبط وواجهات برمجة التطبيقات/مجموعات تطوير البرمجيات سهلة الاستخدام. سأستمر في استخدام محرك ANN الخاص بـ Elasticsearch كمثال؛ تعمل إضافات البحث المتجه الأخرى بشكل مشابه جدًا لذا لن أخوض في التفاصيل أكثر من ذلك. يدعم Elasticsearch تخزين المتجهات عبر نوع حقل البيانات dense_vector
ويسمح بالاستعلام عبر knnsearch endpoint
:
PUT index
{
"mappings": {
"properties": {
"image-vector": {
"type": "dense_vector",
"dims": 128,
"index": true,
"similarity": "l2_norm"
}
}
}
}
PUT index/_doc
{
"image-vector": [0.12, 1.34, ...]
}
GET index/_knn_search
{
"knn": {
"field": "image-vector",
"query_vector": [-0.5, 9.4, ...],
"k": 10,
"num_candidates": 100
}
}
يدعم المكون الإضافي ANN في Elasticsearch خوارزمية فهرسة واحدة فقط: العوالم الصغيرة القابلة للتنقل الهرمي القابلة للتنقل والمعروفة أيضًا باسم HNSW (أحب أن أعتقد أن مبتكرها كان متقدمًا على مارفل عندما يتعلق الأمر بتعميم الأكوان المتعددة). علاوة على ذلك، فإن المسافة L2/Euclidean هي الوحيدة المدعومة كمقياس للمسافة. هذه بداية جيدة، لكن دعنا نقارنها بـ Milvus، قاعدة بيانات متجهة كاملة. باستخدام pymilvus
:
>>> field1 = FieldSchema(name='id', dtype=DataType.INT64, description='int64', is_primary=True)
>>> field2 = FieldSchema(name='embedding', dtype=DataType.FLOAT_VECTOR, description='embedding', dim=128, is_primary=False)
>>> schema = CollectionSchema(fields=[field1, field2], description='hello world collection')
>>> collection = Collection(name='my_collection', data=None, schema=schema)
>>> index_params = {
'index_type': 'IVF_FLAT',
'params': {'nlist': 1024},
"metric_type": 'L2'}
>>> collection.create_index('embedding', index_params)
>>> search_param = {
'data': vector,
'anns_field': 'embedding',
'param': {'metric_type': 'L2', 'params': {'nprobe': 16}},
'limit': 10,
'expr': 'id_field > 0'
}
>>> results = collection.search(**search_param)
بينما يمتلك كل من Elasticsearch و Milvus طرقًا لإنشاء الفهارس وإدراج متجهات التضمين وإجراء البحث الأقرب للجار، يتضح من هذه الأمثلة أن Milvus لديه واجهة برمجة تطبيقات بحث متجهات أكثر سهولة (واجهة برمجة تطبيقات أفضل للمستخدم) ودعم أوسع لفهرس المتجهات + دعم مقياس المسافة (قابلية ضبط أفضل). تخطط Milvus أيضًا لدعم المزيد من مؤشرات المتجهات والسماح بالاستعلام عبر عبارات شبيهة بعبارات SQL في المستقبل، مما يزيد من تحسين قابلية الضبط وسهولة الاستخدام.
لقد استغرقنا الكثير من المحتوى. كان هذا القسم طويلًا إلى حد ما باعتراف الجميع، لذا بالنسبة لأولئك الذين قاموا بتصفحه، إليكم خلاصة سريعة: ميلفوس أفضل من ملحقات البحث المتجه لأن ميلفوس تم بناؤه من الألف إلى الياء كقاعدة بيانات متجهة، مما يسمح بمجموعة أكثر ثراءً من الميزات وبنية أكثر ملاءمة للبيانات غير المنظمة.
كيف تختار من بين تقنيات البحث المتجه المختلفة؟
لا يتم إنشاء جميع قواعد بيانات المتجهات على قدم المساواة، فكل منها يمتلك سمات فريدة تلبي احتياجات تطبيقات محددة. تعد مكتبات البحث عن المتجهات والمكونات الإضافية سهلة الاستخدام ومثالية للتعامل مع بيئات الإنتاج صغيرة الحجم التي تحتوي على ملايين المتجهات. إذا كان حجم بياناتك صغيرًا وكنت تحتاج فقط إلى وظيفة البحث عن المتجهات الأساسية، فإن هذه التقنيات كافية لعملك.
ومع ذلك، يجب أن تكون قاعدة بيانات المتجهات المتخصصة هي خيارك الأفضل للشركات كثيفة البيانات التي تتعامل مع مئات الملايين من المتجهات وتتطلب استجابات في الوقت الفعلي. على سبيل المثال، تدير شركة Milvus مليارات المتجهات دون عناء، وتوفر سرعات استعلام فائقة ووظائف غنية. علاوة على ذلك، تُثبت الحلول المُدارة بالكامل مثل Zilliz أنها أكثر فائدة، حيث تحررك من التحديات التشغيلية وتتيح لك التركيز الحصري على أنشطة عملك الأساسية.
ألقِ نظرة أخرى على دورات قاعدة بيانات Vector 101 التدريبية
- مقدمة في البيانات غير المهيكلة
- ما هي قاعدة البيانات المتجهة؟
- المقارنة بين قواعد بيانات المتجهات ومكتبات البحث في المتجهات ومكونات البحث في المتجهات
- مقدمة إلى ميلفوس
- البداية السريعة لملفوس
- مقدمة في البحث عن تشابه المتجهات
- أساسيات فهرس المتجهات وفهرس الملفات المقلوب
- التكمية العددية والتكمية الكمية للمنتج
- العوالم الصغيرة القابلة للملاحة الهرمية (HNSW)
- أقرب الجيران التقريبي أوه نعم (ANNOY)
- اختيار الفهرس المتجه المناسب لمشروعك
- ديسكان وخوارزمية فامانا
- ما هو البحث المتجه؟
- قواعد بيانات المتجهات مقابل مكتبات البحث عن المتجهات
- قواعد البيانات المتجهة مقابل مكونات البحث المتجهة لقواعد البيانات التقليدية
- كيف تختار من بين تقنيات البحث المتجه المختلفة؟
- ألقِ نظرة أخرى على دورات قاعدة بيانات Vector 101 التدريبية
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