BITMAP
فهرسة الصور النقطية هي تقنية فهرسة فعالة مصممة لتحسين أداء الاستعلام على الحقول ذات العددية المنخفضة. تشير الكاردينالية إلى عدد القيم المميزة في الحقل. تعتبر الحقول التي تحتوي على عدد أقل من العناصر المميزة منخفضة الكاردينالية.
يساعد هذا النوع من الفهرس على تقليل وقت استرجاع الاستعلامات العددية من خلال تمثيل قيم الحقل بتنسيق ثنائي مضغوط وإجراء عمليات فعالة على هذه القيم. وبالمقارنة مع الأنواع الأخرى من الفهارس، عادةً ما تتمتع الفهارس النقطية بكفاءة مساحة أعلى وسرعات استعلام أسرع عند التعامل مع الحقول ذات البطاقات المنخفضة.
نظرة عامة
يجمع مصطلح الصورة النقطية بين كلمتين: بت وخريطة. يمثل البت أصغر وحدة بيانات في الكمبيوتر، والتي يمكن أن تحتوي فقط على قيمة 0 أو 1. تشير الخريطة، في هذا السياق، إلى عملية تحويل البيانات وتنظيمها وفقًا للقيمة التي يجب تعيينها لـ 0 و1.
يتكون فهرس الصورة النقطية من مكونين رئيسيين: الخرائط النقطية والمفاتيح. تمثل المفاتيح القيم الفريدة في الحقل المفهرس. لكل قيمة فريدة، هناك صورة نقطية مقابلة لها. طول هذه الصور النقطية يساوي عدد السجلات في المجموعة. يتوافق كل بت في الصورة النقطية مع سجل في المجموعة. إذا كانت قيمة الحقل المفهرس في السجل تتطابق مع المفتاح، يتم تعيين البت المقابل إلى 1، وإلا يتم تعيينه إلى 0.
انظر إلى مجموعة من المستندات التي تحتوي على حقلي الفئة والعام. نريد استرداد المستندات التي تندرج ضمن الفئة التقنية والمفتوحة للجمهور. في هذه الحالة، تكون مفاتيح فهارس الصور النقطية لدينا هي التقنية والعامة.
فهرسة الصور النقطية
كما هو موضح في الشكل، فهارس الصور النقطية للفئة والعام هي
تقني: [1، 0، 0، 1، 0، 0]، مما يدل على أن المستندين الأول والثالث فقط يقعان في الفئة التقنية.
عام: [1، 0، 0، 0، 1، 0]، وهو ما يوضح أن المستندين الأول والرابع فقط متاحان للعامة.
للعثور على المستندات التي تطابق كلا المعيارين، نقوم بإجراء عملية توافق بت على هاتين الخريطتين النقطيتين.
- تقني وعام: [1, 0, 0, 0, 0]
تشير الصورة النقطية الناتجة [1، 0، 0، 0، 0، 0] إلى أن المستند الأول فقط(المعرف 1) يستوفي كلا المعيارين. باستخدام الفهارس النقطية والعمليات النقطية الفعالة، يمكننا تضييق نطاق البحث بسرعة، مما يلغي الحاجة إلى مسح مجموعة البيانات بأكملها.
إنشاء فهرس نقطي
لإنشاء فهرس صورة نقطية في ميلفوس، استخدم الطريقة create_index()
وقم بتعيين المعلمة index_type
إلى "BITMAP"
.
from pymilvus import MilvusClient
index_params = client.create_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters
index_params.add_index(
field_name="category", # Name of the scalar field to be indexed
index_type="BITMAP", # Type of index to be created
index_name="category_bitmap_index" # Name of the index to be created
)
client.create_index(
collection_name="my_collection", # Specify the collection name
index_params=index_params
)
في هذا المثال، نقوم في هذا المثال بإنشاء فهرس صورة نقطية على الحقل category
في المجموعة my_collection
. يُستخدم الأسلوب add_index()
لتحديد اسم الحقل ونوع الفهرس واسم الفهرس.
بمجرد إنشاء فهرس الصورة النقطية، يمكنك استخدام المعلمة filter
في عمليات الاستعلام لإجراء تصفية عددية استنادًا إلى الحقل المفهرس. يتيح لك ذلك تضييق نطاق نتائج البحث بكفاءة باستخدام الفهرس النقطي. لمزيد من المعلومات، راجع تصفية البيانات الوصفية.
الحدود
الفهارس النقطية مدعومة فقط للحقول القياسية التي ليست مفاتيح أساسية.
يجب أن يكون نوع بيانات الحقل أحد ما يلي.
BOOL
،INT8
،INT16
، ،INT32
،INT64
،VARCHAR
ARRAY
(يجب أن تكون العناصر واحدة من:BOOL
،INT8
، ،INT16
،INT32
،INT64
،VARCHAR
)
لا تدعم فهارس الصور النقطية أنواع البيانات التالية.
FLOAT
،DOUBLE
: أنواع الفاصلة العائمة غير متوافقة مع الطبيعة الثنائية لفهارس الصور النقطية.JSON
: أنواع بيانات JSON لها بنية معقدة لا يمكن تمثيلها بكفاءة باستخدام فهارس الصور النقطية.
فهارس الصور النقطية غير مناسبة للحقول ذات الكمية الكبيرة (أي الحقول التي تحتوي على عدد كبير من القيم المميزة).
كمبدأ توجيهي عام، تكون فهارس الصور النقطية أكثر فعالية عندما تكون قيمة الحقل أقل من 500.
عندما تزيد الكاردينالية عن هذا الحد، تتضاءل مزايا أداء الفهارس النقطية، وتصبح نفقات التخزين الزائدة كبيرة.
بالنسبة للحقول ذات الكاردينالية العالية، فكر في استخدام تقنيات فهرسة بديلة مثل الفهارس المقلوبة، اعتمادًا على حالة الاستخدام المحددة ومتطلبات الاستعلام.