يعيد نوع البيانات QBit تنظيم تخزين المتجهات لتسريع عمليات البحث التقريبي. فبدلاً من تخزين عناصر كل متجه معًا، يجمع مواقع البت نفسها عبر جميع المتجهات.
يتيح ذلك تخزين المتجهات بالدقة الكاملة مع تمكينك من اختيار مستوى التكميم الدقيق وقت البحث: اقرأ عددًا أقل من البتات لتقليل I/O وتسريع العمليات الحسابية، أو عددًا أكبر من البتات للحصول على دقة أعلى. وهكذا تستفيد من مزايا السرعة الناتجة عن تقليل نقل البيانات والحسابات بفضل التكميم، مع بقاء جميع البيانات الأصلية متاحة عند الحاجة.
للتصريح بعمود من النوع QBit، استخدم الصياغة التالية:
element_type – نوع كل عنصر من عناصر المتجه. الأنواع المسموح بها هي Int8 وBFloat16 وFloat32 وFloat64
dimension – بُعد كل متجه
باستخدام النوع QBit في تعريف عمود الجدول:
تُحوَّل المصفوفات إلى QBit عندما يتطابق طول المصفوفة مع بُعد QBit. ولا يلزم أن يتطابق نوع عنصر المصفوفة مع نوع عنصر QBit. ويُحوَّل إليه تلقائيًا أي نوع عناصر رقمي. يتيح لك ذلك نقل عمود تضمينات موجود مباشرةً إلى عمود QBit:
يمكن أيضًا إجراء التحويل بشكل صريح باستخدام CAST، على سبيل المثال CAST(embedding AS QBit(Float32, 8)).
تعيد عملية التحويل العكسي بناء المتجه الأصلي انطلاقًا من التمثيل المنقول على مستوى البت، لذا فإن تحويل QBit إلى Array يعيد القيم المخزنة. وهذا هو عكس تحويل المصفوفات إلى QBit:
تستخدم المصفوفة المُعاد إنشاؤها نوع العنصر الخاص بـ QBit، ثم تُحوَّل عناصرها بعد ذلك إلى نوع عنصر المصفوفة المطلوب. لذلك، يعمل أيضًا cast يغيّر نوع العنصر أيضًا، مثل التحويل من QBit(Float32, N) إلى Array(Float64).
تكون دورة التحويل Array -> QBit -> Array بلا فقدان بالنسبة إلى Int8 وFloat32 وFloat64. أما BFloat16، فهو يطابق تحويلًا مباشرًا إلى BFloat16 — والفقد الوحيد في الدقة هو دقة BFloat16 نفسها.
عندما لا تكون قيمة dimension مضاعفًا للعدد 8، تُحذف عناصر الحشو اللاحقة الموجودة في التمثيل الداخلي، لذلك تكون النتيجة دائمًا مكوّنة من dimension عنصرًا بالضبط.
يوفّر QBit نمط وصول عبر الأعمدة الفرعية يتيح لك الوصول إلى طبقات البِت الفردية في المتجهات المخزّنة. ويمكن الوصول إلى كل موضع بِت باستخدام الصيغة .N، حيث إن N هو موضع البِت:
يعتمد عدد الأعمدة الفرعية المتاحة على نوع العنصر:
Int8: 8 أعمدة فرعية (1-8)
BFloat16: 16 عمودًا فرعيًا (1-16)
Float32: 32 عمودًا فرعيًا (1-32)
Float64: 64 عمودًا فرعيًا (1-64)
هذه هي دوال المسافة المستخدمة في البحث عن التشابه المتجهي والتي تستخدم نوع البيانات QBit:
آخر تعديل في ١ يوليو ٢٠٢٦