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

milvus-logo
LFAI
الصفحة الرئيسية
  • المفاهيم

مجموعة البتات

يقدم هذا الموضوع آلية مجموعة البتات التي تساعد على تمكين الوظائف الرئيسية مثل تصفية السمات وعمليات الحذف في ميلفوس.

نظرة عامة

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

تُجرى العمليات على مجموعات البت باستخدام المنطق المنطقي، والتي بموجبها تكون قيمة الخرج إما صالحة أو غير صالحة، ويُشار إليها أيضًا بـ 1 و 0 على التوالي. على سبيل المثال، يمكن استخدام المشغل المنطقي AND للمقارنة بين مجموعتي بتات استنادًا إلى عنصرين في نفس مواضع الفهرس وإنتاج مجموعة بتات جديدة بالنتائج. إذا كان عنصران في موضع ما متماثلين، فسيتم كتابة مجموعة البتات الجديدة 1 في ذلك الموضع؛ 0 إذا كانا مختلفين.

التنفيذ

Bitset هي آلية بسيطة لكنها قوية تساعد ميلفوس على تنفيذ تصفية السمات وحذف البيانات والاستعلام مع السفر عبر الزمن.

تصفية السمات

بما أن مجموعات البت تحتوي على قيمتين محتملتين فقط، فهي مثالية لتخزين نتائج تصفية السمات. يتم تمييز البيانات التي تفي بمتطلبات مرشح سمة معينة بـ 1.

حذف البيانات

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

أمثلة

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

  • يتم إدراج أربعة من الكيانات، التي تكون primary_keys [1، 2، 3، 4] على التوالي، عندما يساوي الطابع الزمني ts 100.
  • يتم إدراج الكيانات الأربعة الباقية، التي primary_keys هي [5، 6، 7، 8]، عندما يساوي الطابع الزمني ts 200.
  • يتم حذف الكيانات التي primary_keys هي [7، 8] عندما يساوي الطابع الزمني ts 300.
  • الكيانات التي تكون primary_keys [1، 3، 5، 7] هي فقط الكيانات التي تكون s [1، 3، 5، 7] التي تستوفي شروط تصفية السمات.

Order of DML events ترتيب أحداث DML

الحالة الأولى

في هذه الحالة، يقوم المستخدم بتعيين time_travel على أنه 150، مما يعني أن المستخدم يجري استعلامًا عن البيانات التي تفي ts = 150. يوضح الشكل 1 عملية توليد مجموعة البتات.

أثناء مرحلة التصفية الأولية، يجب أن يكون filter_bitset [1, 0, 1, 0, 1, 0, 1, 0] ، حيث يتم تمييز الكيانات [1، 3، 5، 7] على أنها 1 لأنها نتائج تصفية صالحة.

ومع ذلك، لم يتم إدراج الكيانات [4، 5، 6، 7] في قاعدة بيانات المتجهات عندما ts يساوي 150. لذلك، يجب تمييز هذه الكيانات الأربعة على أنها 0 بغض النظر عن شرط التصفية. الآن يجب أن تكون نتيجة مجموعة البتات [1, 0, 1, 0, 0, 0, 0, 0].

كما تمت مناقشته في حذف البيانات، يتم تجاهل الكيانات التي تم تمييزها بـ 1 أثناء البحث أو الاستعلام. يجب الآن قلب نتيجة مجموعة البتات لكي يتم دمجها مع الصورة النقطية للحذف، مما يعطينا [0, 1, 0, 1, 1, 1, 1, 1].

أما بالنسبة لمجموعة بتات الحذف del_bitset ، فيجب أن تكون القيمة الأولية [0, 0, 0, 0, 0, 0, 1, 1]. ومع ذلك، لا يتم حذف الكيانين 7 و 8 حتى ts هو 300. لذلك، عندما يكون ts هو 150، فإن الكيانين 7 و 8 لا يزالان صالحين. ونتيجة لذلك، فإن القيمة del_bitset بعد السفر عبر الزمن هي [0, 0, 0, 0, 0, 0, 0, 0].

لدينا الآن مجموعتا بت بعد السفر عبر الزمن وتصفية السمة: filter_bitset [0, 1, 0, 1, 1, 1, 1, 1] و del_bitset [0, 0, 0, 0, 0, 0, 0, 0] . اجمع بين مجموعتي البت هاتين مع عامل المنطق الثنائي OR. القيمة النهائية لـ result_bitset هي [0, 1, 0, 1, 1, 1, 1, 1] ، مما يعني أنه سيتم حساب الكيانين 1 و 3 فقط في مرحلة البحث أو الاستعلام التالية.

Figure 1. Search with Time Travel = 150. الشكل 1. البحث مع السفر عبر الزمن = 150.

الحالة الثانية

في هذه الحالة، يضبط المستخدم time_travel على 250. يوضح الشكل 2 عملية توليد مجموعة البتات.

كما في الحالة الأولى، تكون مجموعة البتات الأولية filter_bitset هي [1, 0, 1, 0, 1, 0, 1, 0].

تكون جميع الكيانات في قاعدة بيانات المتجهات عندما يكون ts = 250. ولذلك، يبقى filter_bitset كما هو عندما نحلل الطابع الزمني. مرة أخرى، نحتاج إلى قلب النتيجة والحصول على [0, 1, 0, 1, 0, 1, 0, 1].

أما بالنسبة لمجموعة البتات المحذوفة del_bitset ، فإن القيمة الأولية هي [0, 0, 0, 0, 0, 0, 1, 1]. ومع ذلك، لم يتم حذف الكيانين 7 و 8 حتى ts هو 300. لذلك، عندما يكون ts هو 250، فإن الكيانين 7 و 8 لا يزالان صالحين. ونتيجة لذلك، فإن del_bitset بعد السفر عبر الزمن هو [0, 0, 0, 0, 0, 0, 0, 0].

الآن لدينا مجموعتا بت بعد السفر عبر الزمن وتصفية السمة: filter_bitset [0, 1, 0, 1, 0, 1, 0, 1] و del_bitset [0, 0, 0, 0, 0, 0, 0, 0] . اجمع بين مجموعتي البت هاتين مع عامل المنطق الثنائي OR. مجموعة_البتات الناتجة هي [0, 1, 0, 1, 0, 1, 0, 1]. وهذا يعني أنه لن يتم احتساب سوى العناصر [1، 3، 5، 7] في مرحلة البحث أو الاستعلام التالية.

Figure 2. Search with Time Travel = 250. الشكل 2. البحث مع السفر عبر الزمن = 250.

الحالة الثالثة

في هذه الحالة، يضبط المستخدم time_travel على 350. يوضح الشكل 3 عملية توليد مجموعة البتات.

كما هو الحال مع الحالات السابقة، تكون مجموعة البتات الأولية filter_bitset هي [0, 1, 0, 1, 0, 1, 0, 1].

تكون جميع الكيانات في قاعدة بيانات المتجهات عندما يكون ts= 350. وبالتالي، فإن مجموعة البتات النهائية المقلوبة filter_bitset هي [0, 1, 0, 1, 0, 1, 0, 1] ، كما في الحالة الثانية.

أما بالنسبة إلى مجموعة البتات المحذوفة del_bitset ، نظرًا لأن الكيانين 7 و 8 قد تم حذفهما بالفعل عند ts = 350 ، وبالتالي، فإن نتيجة del_bitset هي [0, 0, 0, 0, 0, 0, 1, 1].

الآن لدينا مجموعتا بت بعد السفر عبر الزمن وتصفية السمات: filter_bitset [0, 1, 0, 1, 0, 1, 0, 1] و del_bitset [0, 0, 0, 0, 0, 0, 1, 1] . اجمع بين مجموعتي البت هاتين مع عامل المنطق الثنائي OR. النهائي result_bitset هو [0, 1, 0, 1, 0, 1, 1, 1]. وهذا يعني أنه سيتم حساب الكيانات [1، 3، 5] فقط في مرحلة البحث أو الاستعلام التالية.

Figure 3. Search with Time Travel = 350. الشكل 3. البحث مع السفر عبر الزمن = 350.

ما التالي

الآن بعد أن عرفت كيف تعمل مجموعات البتات في ميلفوس، قد ترغب أيضًا بـ

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟