قواعد بيانات المتجهات
داخل الدفع الهندسي لـ Alibaba لجعل pgvector يعمل على نطاق مليار متجه
تشرح Alibaba Cloud بالتفصيل كيف حولت pgvector من امتداد مفتوح المصدر إلى محرك متجهات من الدرجة الإنتاجية يدعم مليارات المتجهات مع أوقات استجابة بالميلي ثانية، من خلال التكميم وضبط الأداء وأدوات النظام البيئي والتوسع الموزع والتكامل العميق مع النواة.
Emmanuel Fabrice Omgbwa Yasse بمساعدة الذكاء الاصطناعي
2023-10-11 · آخر تحديث: 2026-07-30 · قراءة 3 دقائق

مرت قواعد بيانات المتجهات بثلاث مراحل منذ عام 2023: الأولى، دعم أنواع المتجهات وعوامل المسافة الأساسية. ثم جاءت فهارس الجيران الأقرب التقريبية مثل IVF و HNSW، مما قلص أوقات الاستجابة إلى أرقام أحادية الميلي ثانية. المرحلة الثالثة، الجاهزية للإنتاج على نطاق واسع، تبين أنها الأصعب. قام فريق PolarDB for PostgreSQL من Alibaba Cloud بتوثيق نهجهم في مقالة تقنية تشرح بالتفصيل ما تطلبه الأمر لتحويل امتداد pgvector مفتوح المصدر إلى محرك يمكنه تخزين مليارات المتجهات وإرجاع النتائج في ميلي ثانية.
التكميم: دمج متجهات أكبر في مساحات أصغر
الاختناق الأول هو تكلفة التخزين والحساب. متجه float32 واحد بأبعاد 768 يزن حوالي 3 كيلوبايت. اضرب ذلك في مليار لتحصل على 3 تيرابايت من البيانات الخام قبل الفهارس. تدعم PolarDB for PostgreSQL الآن ثلاثة مخططات تكميم إلى جانب فهارس IVF و HNSW: التكميم المنتج (PQ)، والتكميم العددي (SQ)، والتكميم العشوائي بالبت (RaBitQ). كل منها يضغط المتجه إلى ما بين ربع وواحد وستين من حجمه الأصلي، مع الحفاظ على إمكانية التحكم في الدقة. شدد الفريق على أنه لا يوجد مخطط واحد يناسب جميع السيناريوهات، فالاختيار الصحيح يعتمد على حجم مجموعة البيانات، وتركيز الميزات، والأبعاد. يقسم PQ المتجهات إلى أجزاء فرعية ويدرب قاموس رموز لكل جزء، مما يوفر ضغطًا عاليًا ولكن بتكلفة تدريب ثقيلة. يقوم SQ بتعيين كل بُعد float32 خطيًا إلى int8 أو int4، مما يجعله الخيار الأكثر فعالية من حيث التكلفة. يستخدم RaBitQ تحويلًا متعامدًا عشوائيًا بالإضافة إلى تكميم 1 بت، مع حد أدنى قابل للإثبات للدقة نظريًا.
تحسينات الأداء: إدارة الإدخال/الإخراج والمساحة الحرة على نطاق المليار
تتبع بنية الفهارس في pgvector القياسية مدير المخازن المؤقتة في PostgreSQL: كل صفحة مكتوبة تمر عبر المخزن المؤقت المشترك، وتكتسب قفلًا، وتولد سجلات الكتابة المسبقة، ويتم تفريغها بشكل غير متزامن. عندما تصل الفهارس إلى مئات الجيجابايتات، يصبح هذا المسار الاختناق الأساسي. قدمت PolarDB القراءة والكتابة الدفعية لبناء الفهارس ونافذة الجلب المسبق للاستعلامات. أظهرت الاختبارات الداخلية تحسنًا بمقدار 1.5 إلى 2 مرة في سرعة البناء والاستعلام على نطاق مليار متجه. ظهرت نقطة ألم ثانية في ظل الإدراج المستمر: عندما تظهر صفحات حرة في فهرس، كان على الإدراج الجديد فحص صفحات البيانات بالتسلسل للعثور على مساحة متاحة. قدم الفريق آلية فعالة لإدارة خريطة المساحة الحرة (FSM). في اختبارات الإدراج المستمر على نطاق مليار صف، انخفض التنافس على الإدخال/الإخراج بنسبة 90 بالمائة وأصبح زمن وصول الكتابة p99 أكثر استقرارًا بشكل ملحوظ. إلى جانب إطار عمل تنظيف فهرس مُعاد تصميمه ينقل الانتفاخ من النمو الخطي إلى حالة مستقرة، يحافظ النظام على استقرار طويل الأجل حتى تحت أعباء العمل ذات الكتابة العالية والحذف العالي.
تحسينات النظام البيئي: polar_vectorboost يقوم بأتمتة البحث المختلط
غالبًا ما كان على الفرق التي تتبنى استرجاع المتجهات كتابة كميات كبيرة من منطق استعلام الدمج يدويًا، وأعمدة التضمين، والترميز، وإعادة ملء البيانات، والتوصية بالفهارس، ثم التعامل مع المقاييس غير المتناسقة، وترتيب الدمج المفقود، واستقرار الاستدعاء. يقوم الامتداد الداخلي لـ PolarDB polar_vectorboost بضغط عمليات SQL عالية التردد هذه في استدعاء دالة واحد. يمكن لاستدعاء واحد إضافة عمود تضمين، وترميز النص تلقائيًا، وإعادة ملء البيانات، والتوصية بفهرس، وتسجيل البيانات الوصفية. بالنسبة للبحث المختلط، يدعم خوارزميتين للدمج: دمج الرتب التبادلي (RRF) الذي لا يتأثر بالمقياس، ونهج مرجح ومطبيع بالحد الأدنى-الأقصى. كما أنه يضم تلقائيًا شروط tsquery مع OR لتجنب انهيار الاستدعاء الذي قد يسببه الربط الافتراضي AND في plainto_tsquery. مجموعة من وظائف التشخيص، والتحقق من أنواع الأعمدة، واتساق الأبعاد، وحالة الفهرس، والمتجهات الفارغة أو ذات المعيار الصفري، تساعد المطورين على اكتشاف المشكلات قبل وصولها إلى الإنتاج.
السيناريوهات واسعة النطاق: pgvector الموزع لسعة PB
تخزين العقدة الواحدة يصل في النهاية إلى سقف، وإنتاجية الكتابة محدودة بوحدة معالجة مركزية واحدة. أكملت PolarDB for PostgreSQL التكيف الموزع لـ pgvector. يعتمد النهج الأساسي على ثلاث آليات: توزيع بيانات المتجهات عبر أجزاء، لكل منها فهرسها الخاص؛ التعامل مع الاستعلامات عبر الأجزاء بنمط التشتت والتجميع؛ ودعم إعادة توازن الأجزاء ديناميكيًا. والنتيجة هي ثلاثة تغييرات نوعية. يتوسع التخزين أفقيًا إلى نطاق البيتابايت. تتوسع إنتاجية الكتابة خطيًا تقريبًا مع عدد العقد. ويصبح استرداد الفشل على مستوى الجزء بدلاً من مستوى قاعدة البيانات بالكامل. لاحظ الفريق أنه في سيناريوهات المتجهات، فإن القدرة الموزعة لا تتعلق فقط بالسعة، بل تحدد ما إذا كان النظام يظل مستدامًا تحت النمو طويل الأجل.
القدرات الأساسية: ما الذي يجعله من الدرجة الإنتاجية
قدرات استرجاع المتجهات تغوص في طبقة أساس قاعدة البيانات. تتضمن حزمة الأساس لـ PolarDB for PostgreSQL تحسينًا عميقًا للنواة مع النسخ المادي، وشبكة RDMA عالية السرعة، وتخزين مشترك موزع. التوسع والتصغير على مستوى الثانية ممكن من خلال بنية كاتب واحد وقارئ متعدد مع سعة في نطاق التيرابايت. محرك استعلام متوازي عبر الأجهزة ينفذ SQL بشكل تعاوني عبر العقد لتسريع الاستعلامات التحليلية. بالنسبة لمخازن المتجهات بمقياس المليار، توجد الأجزاء الساخنة في طبقة عالية السرعة بينما تنتقل الأجزاء الباردة إلى تخزين الكائنات، لتحقيق التوازن بين التكلفة والأداء. جادل الفريق بأن قدرة المتجهات تركز بشكل أساسي على طبقة الاسترجاع، بينما يعتمد التوفر العام في الإنتاج على أساس قاعدة البيانات الأساسي. كل من الأبعاد الخمسة يعالج اختناقًا هندسيًا رئيسيًا بدلاً من مقياس أداء واحد، ومعًا يحولون pgvector من امتداد مفتوح المصدر إلى محرك متكامل يمكنه التعامل مع مليارات المتجهات بأوقات استجابة بالميلي ثانية.
- المصدر : Inside Alibaba's engineering push to make pgvector work at billion-vector scale — 2023-10-11
أهم أخبار التقنية في 3 دقائق كل صباح
بريد إلكتروني واحد، كل يوم عمل، بما يهم فعلاً في الذكاء الاصطناعي والتقنية.