في هذا الدليل، ستتعرّف على ما يلي:
- مقدمة موجزة عن البحث المتجهي
- مفهوم أقرب الجيران التقريبي (ANN) والعالم الصغير الهرمي القابل للتنقّل (HNSW)
- Quantised Bit (QBit)
- استخدام QBit لإجراء بحث متجهي باستخدام مجموعة بيانات DBPedia
تمهيد في البحث المتجهي
فهم التضمينات
أقرب الجيران التقريبيون (ANN)
التكميم
- الاحتفاظ بالنسخة المكمَّمة إلى جانب العمود الأصلي - يضاعف هذا مساحة التخزين، لكنه آمن لأننا نستطيع دائماً الرجوع إلى الدقة الكاملة
- استبدال القيم الأصلية بالكامل (عن طريق تحويلها إلى نوع أصغر عند الإدراج) - يوفر هذا المساحة وعمليات الإدخال/الإخراج، لكنه خيار لا رجعة فيه
العالم الصغير الهرمي القابل للتنقّل (HNSW)
مقارنة الأساليب
نظرة متعمقة على QBit
البت المُكمَّم (QBit)
BFloat16 وFloat32 وFloat64 بالاستفادة من طريقة تمثيل الأعداد ذات الفاصلة العائمة، أي على شكل بتات.
وبدلًا من تخزين كل عدد كقيمة كاملة، تقسّم QBit القيم إلى طبقات بتات: كل بت أول، وكل بت ثانٍ، وكل بت ثالث، وهكذا.
يعالج هذا النهج القيد الرئيسي في أساليب التكميم التقليدية. فلا حاجة إلى تخزين بيانات مكررة أو المخاطرة بأن تصبح القيم بلا معنى. كما أنه يتجنب اختناقات RAM في HNSW، لأن QBit تعمل مباشرة على البيانات المخزنة بدلًا من الاحتفاظ بفهرس داخل الذاكرة.
القيدعلى الرغم من أن QBit تُسرّع البحث المتجهي، فإن تعقيدها الحسابي يظل O(n). وبعبارة أخرى: إذا كانت مجموعة بياناتك صغيرة بما يكفي ليتسع فهرس HNSW داخل RAM بسهولة، فسيظل هذا هو الخيار الأسرع.
نوع البيانات
FixedString(N) منفصل: سلاسل نصية ثابتة الطول بحجم N بايت، تُخزَّن بشكل متتالٍ في الذاكرة من دون أي فواصل بينها. ثم تُضم جميع هذه المجموعات معًا في Tuple واحد، وهو ما يشكّل البنية الأساسية لـ QBit.
مثال: إذا بدأنا بمتجه من 8 عناصر من النوع Float64، فستحتوي كل مجموعة على 8 بتات. وبما أن Float64 يتكوّن من 64 بتًا، فسينتهي بنا الأمر إلى 64 مجموعة (واحدة لكل بت). لذلك، يبدو التخطيط الداخلي لـ QBit(Float64, 8) كأنه Tuple مكوَّن من 64 عمودًا من النوع FixedString(1).
حساب المسافة
L2DistanceTransposed مع معلَمة الدقة:
تحسين عمليات I/O
تحسين العمليات الحسابية
تحسين BFloat16
تعقيد Float64
مثال باستخدام DBpedia
التهيئة
استعلام البحث
قارن الأداء مع البحث بالقوة الغاشمة
قارن الأداء مع البحث بالقوة الغاشمة
الفكرة الجوهرية
الخلاصة
مقتبس بتصرّف من مقالة المدونة بقلم Raufs Dunamalijevs، والمنشورة في 28 أكتوبر 2025