تسريع البحث عن التشابه في البيانات الضخمة حقًا باستخدام فهرسة المتجهات
من الرؤية الحاسوبية إلى اكتشاف الأدوية الجديدة، تعمل محركات البحث عن التشابه المتجهي على تشغيل العديد من تطبيقات الذكاء الاصطناعي الشائعة. إن أحد المكونات الضخمة التي تجعل من الممكن الاستعلام بكفاءة عن مجموعات البيانات التي تبلغ مليون أو مليار أو حتى تريليون متجه التي تعتمد عليها محركات البحث عن التشابه هو الفهرسة، وهي عملية تنظيم البيانات التي تسرّع البحث في البيانات الضخمة بشكل كبير. يغطي هذا المقال الدور الذي تلعبه الفهرسة في جعل البحث عن التشابه المتجه فعالاً، وأنواع الفهرسة المختلفة للملفات المقلوبة المتجهة (IVF)، ونصائح حول الفهرس الذي يجب استخدامه في سيناريوهات مختلفة.
الانتقال إلى:
- تسريع البحث عن التشابه في البيانات الضخمة حقًا باستخدام الفهرسة المتجهة
- كيف تعمل فهرسة المتجهات على تسريع البحث عن التشابه والتعلم الآلي؟
- ما هي الأنواع المختلفة من فهارس الفهرسة المتجهة وما هي السيناريوهات الأنسب لها؟
- الفهرسة المسطحة: جيد للبحث في مجموعات البيانات الصغيرة نسبيًا (بمقياس مليون) عندما يكون الاستدعاء بنسبة 100%.
- IVF_FLAT: يحسن السرعة على حساب الدقة (والعكس صحيح).
- IVF_SQ8: أسرع وأقل استهلاكًا للموارد من IVF_FFLAT، ولكنه أيضًا أقل دقة.
- IVF_SQ8H: نهج هجين جديد لوحدة معالجة الرسومات/وحدة المعالجة المركزية أسرع من IVF_SQ8.
- تعرف على المزيد حول Milvus، منصة إدارة البيانات المتجهة واسعة النطاق.
- المنهجية
كيف تعمل فهرسة المتجهات على تسريع البحث عن التشابه والتعلم الآلي؟
تعمل محركات البحث عن التشابه من خلال مقارنة المدخلات بقاعدة بيانات للعثور على العناصر الأكثر تشابهًا مع المدخلات. الفهرسة هي عملية تنظيم البيانات بكفاءة، وتلعب دورًا رئيسيًا في جعل البحث عن التشابه مفيدًا من خلال تسريع الاستعلامات التي تستغرق وقتًا طويلاً على مجموعات البيانات الكبيرة بشكل كبير. بعد فهرسة مجموعة بيانات متجهة ضخمة، يمكن توجيه الاستعلامات إلى مجموعات أو مجموعات فرعية من البيانات التي من المرجح أن تحتوي على متجهات مشابهة لاستعلام الإدخال. من الناحية العملية، يعني هذا عمليًا التضحية بدرجة معينة من الدقة لتسريع الاستعلامات على البيانات المتجهة الضخمة حقًا.
يمكن تشبيه ذلك بقاموس، حيث يتم فرز الكلمات أبجديًا. عند البحث عن كلمة ما، من الممكن الانتقال بسرعة إلى قسم يحتوي فقط على كلمات تحمل نفس الحرف الأول من الكلمة - مما يسرّع بشكل كبير من عملية البحث عن تعريف الكلمة المدخلة.
ما هي الأنواع المختلفة من فهارس IVF وما هي السيناريوهات الأنسب لها؟
هناك العديد من الفهارس المصممة للبحث عن التشابه المتجهي عالي الأبعاد، ولكل منها مقايضات في الأداء والدقة ومتطلبات التخزين. تغطي هذه المقالة العديد من أنواع فهارس الفهرس المتجهية الشائعة ونقاط قوتها وضعفها، بالإضافة إلى نتائج اختبار الأداء لكل نوع من الفهارس. يقيس اختبار الأداء وقت الاستعلام ومعدلات الاستدعاء لكل نوع من أنواع الفهارس في Milvus، وهي منصة مفتوحة المصدر لإدارة البيانات المتجهة. للحصول على معلومات إضافية حول بيئة الاختبار، راجع قسم المنهجية في أسفل هذه المقالة.
مسطح: جيد للبحث في مجموعات البيانات الصغيرة نسبيًا (بمقياس مليون) عندما يكون الاستدعاء مطلوبًا بنسبة 100%.
بالنسبة لتطبيقات البحث عن تشابه المتجهات التي تتطلب دقة مثالية وتعتمد على مجموعات بيانات صغيرة نسبيًا (بمقياس مليون)، يعد فهرس FLAT خيارًا جيدًا. لا يقوم FLAT بضغط المتجهات، وهو الفهرس الوحيد الذي يمكن أن يضمن نتائج بحث دقيقة. يمكن أيضًا استخدام النتائج من FLAT كنقطة مقارنة للنتائج التي تنتجها الفهارس الأخرى التي لديها أقل من 100% من الاستدعاء.
يتميز FLAT بالدقة لأنه يتبع نهجًا شاملًا في البحث، مما يعني أنه لكل استعلام تتم مقارنة المدخلات المستهدفة بكل متجه في مجموعة البيانات. هذا يجعل من FLAT أبطأ فهرس في قائمتنا، وهو غير مناسب للاستعلام عن بيانات المتجهات الضخمة. لا توجد معلمات لفهرس FLAT في Milvus، ولا يتطلب استخدامه تدريبًا على البيانات أو تخزينًا إضافيًا.
نتائج اختبار أداء FLAT:
تم إجراء اختبار أداء وقت استعلام FLAT في Milvus باستخدام مجموعة بيانات مكونة من مليوني متجه ذي 128 بُعدًا.
مدونة_تسريع البحث عن التشابه على البيانات الضخمة حقًا باستخدام فهرسة المتجهات_2.png
الوجبات الرئيسية
- مع زيادة nq (عدد المتجهات المستهدفة للاستعلام)، يزداد وقت الاستعلام.
- باستخدام فهرس FLAT في Milvus، يمكننا أن نرى أن وقت الاستعلام يرتفع بشكل حاد بمجرد أن يتجاوز nq 200.
- بشكل عام، يكون فهرس FLAT أسرع وأكثر اتساقًا عند تشغيل Milvus على وحدة معالجة الرسومات مقابل وحدة المعالجة المركزية. ومع ذلك، تكون استعلامات FLAT على وحدة المعالجة المركزية أسرع عندما يكون nq أقل من 20.
IVF_FLAT: يحسن السرعة على حساب الدقة (والعكس صحيح).
تتمثل إحدى الطرق الشائعة لتسريع عملية البحث عن التشابه على حساب الدقة في إجراء بحث تقريبي لأقرب جار (ANN). تقلل خوارزميات ANN من متطلبات التخزين والحمل الحسابي من خلال تجميع المتجهات المتشابهة معًا، مما يؤدي إلى بحث أسرع عن المتجهات. IVF_FLAT هو نوع فهرس الملفات المقلوب الأساسي ويعتمد على شكل من أشكال بحث ANN.
يقسم IVF_FLAT بيانات المتجهات إلى عدد من الوحدات العنقودية (nlist)، ثم يقارن المسافات بين متجه الإدخال المستهدف ومركز كل مجموعة. اعتمادًا على عدد المجموعات التي تم تعيين النظام للاستعلام عنها (nprobe)، يتم إرجاع نتائج بحث التشابه بناءً على المقارنات بين المدخلات المستهدفة والمتجهات في المجموعة (المجموعات) الأكثر تشابهًا فقط - مما يقلل بشكل كبير من وقت الاستعلام.
من خلال ضبط nprobe، يمكن إيجاد توازن مثالي بين الدقة والسرعة لسيناريو معين. تُظهر نتائج اختبار أداء IVF_FLAT الخاص بنا أن وقت الاستعلام يزداد بشكل حاد مع زيادة عدد متجهات المدخلات المستهدفة (nq) وعدد المجموعات المطلوب البحث عنها (nprobe). لا يقوم IVF_FLAT بضغط بيانات المتجهات، ومع ذلك، تتضمن ملفات الفهرس بيانات وصفية تزيد بشكل هامشي من متطلبات التخزين مقارنةً بمجموعة بيانات المتجهات الخام غير المفهرسة.
نتائج اختبار أداء IVF_FLAT:
تم إجراء اختبار أداء وقت الاستعلام IVF_FLAT في Milvus باستخدام مجموعة بيانات SIFT العامة 1B SIFT، والتي تحتوي على مليار متجه ذي 128 بُعدًا.
مدونة_تسريع البحث عن التشابه على البيانات الضخمة حقاً باستخدام فهرسة المتجهات_3.png
الوجبات الرئيسية
- عند التشغيل على وحدة المعالجة المركزية، يزداد وقت الاستعلام عن فهرس IVF_FLAT في Milvus مع كل من nprobe و nq. هذا يعني أنه كلما زاد عدد متجهات الإدخال التي يحتويها الاستعلام، أو كلما زاد عدد المجموعات التي يبحث فيها الاستعلام، كلما زاد وقت الاستعلام.
- على GPU، يُظهر الفهرس تباينًا أقل في الوقت مقابل التغييرات في nq و nprobe. ويرجع ذلك إلى أن بيانات الفهرس كبيرة، كما أن نسخ البيانات من ذاكرة وحدة المعالجة المركزية إلى ذاكرة وحدة معالجة الرسومات يمثل معظم إجمالي وقت الاستعلام.
- في جميع السيناريوهات، باستثناء عندما يكون nq = 1,000 و nprobe = 32، يكون فهرس IVF_FLAT أكثر كفاءة عند تشغيله على وحدة المعالجة المركزية.
تم إجراء اختبار أداء استرجاع IVF_FLAT في Milvus باستخدام كل من مجموعة بيانات SIFT العامة 1M SIFT، والتي تحتوي على مليون متجه 128 بُعدًا، ومجموعة بيانات glove-200-angular-ular، والتي تحتوي على أكثر من مليون متجه 200 بُعد، لبناء الفهرس (nq = 16,384).
مدونة_تسريع البحث عن التشابه في البيانات الضخمة حقًا باستخدام فهرسة المتجهات_4.png
الوجبات الرئيسية:
- يمكن تحسين فهرس IVF_FLAT من أجل الدقة، وتحقيق معدل استرجاع أعلى من 0.99 على مجموعة بيانات SIFT 1M SIFT عندما يكون nprobe = 256.
IVF_SQ8: أسرع وأقل استهلاكًا للموارد من IVF_FLAT، ولكنه أيضًا أقل دقة.
لا يقوم IVF_SQLAT بإجراء أي ضغط، لذا فإن ملفات الفهرس التي ينتجها تكون بنفس حجم بيانات المتجه الأصلية غير المفهرسة تقريبًا. على سبيل المثال، إذا كان حجم مجموعة بيانات SIFT 1B الأصلية 476 جيجابايت، فإن ملفات فهرس IVF_FLAT الخاصة بها ستكون أكبر قليلاً (حوالي 470 جيجابايت). سيؤدي تحميل جميع ملفات الفهرس في الذاكرة إلى استهلاك 470 جيجابايت من مساحة التخزين.
عندما تكون موارد ذاكرة القرص أو وحدة المعالجة المركزية أو وحدة معالجة الرسومات محدودة، فإن IVF_SQ8 هو خيار أفضل من IVF_FLAT. يمكن لهذا النوع من الفهرس تحويل كل FLOAT (4 بايت) إلى UINT8 (1 بايت) عن طريق إجراء تكميم قياسي. يقلل هذا من استهلاك القرص ووحدة المعالجة المركزية وذاكرة وحدة معالجة الرسومات بنسبة 70-75%. بالنسبة لمجموعة بيانات SIFT 1B، تتطلب ملفات فهرس IVF_SQ8 مساحة تخزين 140 جيجابايت فقط.
نتائج اختبار أداء IVF_SQ8:
تم إجراء اختبار وقت الاستعلام IVF_SQ8 في Milvus باستخدام مجموعة بيانات 1B SIFT العامة، والتي تحتوي على مليار متجه 128 بُعدًا، لبناء الفهرس.
مدونة_تسريع البحث عن التشابه على البيانات الضخمة حقًا باستخدام فهرسة المتجهات_5.png
الوجبات الرئيسية
- من خلال تقليل حجم ملف الفهرس، يوفر IVF_SQ8 تحسينات ملحوظة في الأداء مقارنةً ب IVF_SQL8. يتبع IVF_SQ8 منحنى أداء مماثل لمنحنى أداء IVF_FLAT، مع زيادة وقت الاستعلام مع nq و nprobe.
- على غرار IVF_SQ8، يشهد IVF_SQ8 أداءً أسرع عند التشغيل على وحدة المعالجة المركزية وعندما يكون nq و nprobe أصغر.
تم إجراء اختبار أداء الاستدعاء IVF_SQ8 في Milvus باستخدام كلٍ من مجموعة بيانات SIFT العامة 1M SIFT، والتي تحتوي على مليون متجه ذي 128 بُعد، ومجموعة بيانات glove-200-angular، والتي تحتوي على أكثر من مليون متجه ذي 200 بُعد، لبناء الفهرس (nlist = 16,384).
مدونة_تسريع البحث عن التشابه على البيانات الضخمة حقًا باستخدام فهرسة المتجهات_6.png
الوجبات الرئيسية:
- على الرغم من ضغط البيانات الأصلية، لا يشهد IVF_SQ8 انخفاضًا كبيرًا في دقة الاستعلام. عبر إعدادات nprobe المختلفة، فإن IVF_SQ8 لديه معدل استرجاع أقل بنسبة 1% على الأكثر من IVF_FLAT.
IVF_SQ8H: نهج هجين جديد لوحدة معالجة الرسومات/وحدة المعالجة المركزية أسرع من IVF_SQ8.
IVF_SQ8H هو نوع فهرس جديد يعمل على تحسين أداء الاستعلام مقارنةً ب IVF_SQ8. عندما يتم الاستعلام عن فهرس IVF_SQ8 الذي يعمل على وحدة المعالجة المركزية، يتم قضاء معظم الوقت الإجمالي للاستعلام في العثور على مجموعات nprobe الأقرب إلى متجه الإدخال المستهدف. ولتقليل وقت الاستعلام، يقوم IVF_SQ8 بنسخ البيانات الخاصة بعمليات التكميم الخشنة، والتي تكون أصغر من ملفات الفهرس، إلى ذاكرة وحدة معالجة الرسومات، مما يسرع بشكل كبير من عمليات التكميم الخشنة. ثم يحدد gpu_search_threshold_threshold الجهاز الذي يقوم بتشغيل الاستعلام. عندما تكون nq >= gpu_search_threshold، تقوم وحدة معالجة الرسومات بتشغيل الاستعلام؛ وإلا فإن وحدة المعالجة المركزية تقوم بتشغيل الاستعلام.
IVF_SQ8H هو نوع فهرس هجين يتطلب أن تعمل وحدة المعالجة المركزية ووحدة معالجة الرسومات معًا. لا يمكن استخدامه إلا مع Milvus الممكّن لوحدة معالجة الرسومات.
نتائج اختبار أداء IVF_SQ8H:
تم إجراء اختبار أداء وقت الاستعلام IVF_SQ8H في Milvus باستخدام مجموعة بيانات SIFT العامة 1B SIFT، والتي تحتوي على مليار متجه 128 بُعدًا، لبناء الفهرس.
مدونة_تسريع البحث عن التشابه في البيانات الضخمة حقًا باستخدام فهرسة المتجهات_7.png
الوجبات الرئيسية
- عندما تكون nq أقل من أو تساوي 1,000، فإن IVF_SQ8H تشهد أزمنة استعلام أسرع من IVFSQ8 بضعف سرعة IVFSQ8 تقريبًا.
- عندما يكون nq = 2000، تكون أزمنة الاستعلام لـ IVFSQ8H و IVF_SQ8 هي نفسها. ومع ذلك، إذا كانت معلمة gpu_search_threshold_threshold أقل من 2000، سيتفوق IVF_SQ8H على IVF_SQ8.
- يتطابق معدل استدعاء الاستعلام في IVF_SQ8H مع IVF_SQ8، مما يعني تحقيق وقت استعلام أقل دون خسارة في دقة البحث.
تعرّف على المزيد حول Milvus، منصة إدارة بيانات المتجهات واسعة النطاق.
Milvus عبارة عن منصة إدارة بيانات المتجهات التي يمكنها تشغيل تطبيقات البحث عن التشابه في مجالات تشمل الذكاء الاصطناعي والتعلم العميق وحسابات المتجهات التقليدية وغيرها. للحصول على معلومات إضافية حول Milvus، اطلع على الموارد التالية:
- Milvus متاح بموجب ترخيص مفتوح المصدر على GitHub.
- أنواع الفهارس الإضافية، بما في ذلك الفهارس المستندة إلى الرسم البياني والشجرة، مدعومة في Milvus. للاطلاع على قائمة شاملة بأنواع الفهارس المدعومة، راجع وثائق الفهارس المتجهة في ملفوس.
- لمعرفة المزيد عن الشركة التي أطلقت Milvus، تفضل بزيارة Zilliz.com.
- دردش مع مجتمع Milvus أو احصل على المساعدة في حل مشكلة على Slack.
المنهجية
بيئة اختبار الأداء
تكوين الخادم المستخدم في اختبارات الأداء المشار إليها في هذه المقالة هو كما يلي:
- Intel ® Xeon ® Platinum 8163 @ 2.50 جيجا هرتز، 24 نواة
- GeForce GTX GTX 2080Ti × 4
- ذاكرة 768 جيجابايت
المفاهيم التقنية ذات الصلة
على الرغم من أنها ليست ضرورية لفهم هذه المقالة، إليك بعض المفاهيم التقنية المفيدة لتفسير نتائج اختبارات أداء الفهرس:
مدونة_تسريع البحث عن التشابه على البيانات الضخمة حقًا باستخدام فهرسة المتجهات_8.png
المصادر
تم استخدام المصادر التالية لهذه المقالة:
- "موسوعة أنظمة قواعد البيانات"، لينغ ليو و م. تامر أوزسو.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word