• نبذة عن ميلفوس
  • ابدأ الآن
  • المفاهيم
  • دليل المستخدم
  • استيراد البيانات
  • أدوات الذكاء الاصطناعي
  • دليل الإدارة
  • الأدوات
  • عمليات الدمج
  • البرامج التعليمية
  • الأسئلة الشائعة
  • API Reference

الفهرسة على القرص

تقدم هذه المقالة خوارزمية الفهرسة على القرص DiskANN، وهي خوارزمية فهرسة على القرص لعمليات البحث المتجهة المحسّنة على القرص. استنادًا إلى الرسوم البيانية Vamana، يعمل DiskANN على تشغيل عمليات بحث متجهية فعالة على القرص ضمن مجموعات البيانات الكبيرة.

لتحسين أداء الاستعلام، يمكنك تحديد نوع فهرس لكل حقل متجه.

يدعم الحقل المتجه حاليًا نوع فهرس واحد فقط. يقوم Milvus تلقائيًا بحذف الفهرس القديم عند تبديل نوع الفهرس.

المتطلبات الأساسية

لاستخدام DiskANN في ملفوس، لاحظ ما يلي

  • يعمل مثيل Milvus على Ubuntu 18.04.6 أو إصدار أحدث.
  • يجب تثبيت مسار بيانات Milvus على محرك أقراص NVMe SSD للحصول على أداء كامل:
    • بالنسبة لمثيل Milvus Standalone، يجب أن يكون مسار البيانات هو /var/lib/milvus/data في الحاوية التي يعمل فيها المثيل.
    • بالنسبة إلى مثيل Milvus Cluster، يجب أن يكون مسار البيانات /var/lib/milvus/data في الحاويات التي يتم فيها تشغيل QueryNodes و IndexNodes.

الحدود

لاستخدام DiskANN، تأكد من أنك

  • استخدم فقط المتجهات العائمة ذات الأبعاد 1 على الأقل في بياناتك.
  • استخدم فقط المسافة الإقليدية (L2) أو الضرب الداخلي (IP) أو COSINE لقياس المسافة بين المتجهات.

إعدادات الفهرس والبحث

  • معلمات بناء الفهرس

    عند إنشاء فهرس DiskANN، استخدم DISKANN كنوع الفهرس. لا توجد معلمات فهرس ضرورية.

  • معلمات البحث

    المعلمةالوصفالنطاقالقيمة الافتراضية
    search_listحجم القائمة المرشحة، الحجم الأكبر يوفر معدل استرجاع أعلى مع أداء متدهور.[topk, int32_max]16

DiskANN قابل للضبط. يمكنك تعديل المعلمات المتعلقة بـ DiskANN في ${MILVUS_ROOT_PATH}/configs/milvus.yaml لتحسين أدائه.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBudgetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
المعلمةالوصفنطاق القيمةالقيمة الافتراضية
MaxDegreeالدرجة القصوى للرسم البياني لفامانا.
توفر القيمة الأكبر معدل استرجاع أعلى ولكنها تزيد من حجم الفهرس والوقت اللازم لبناء الفهرس.
[1, 512]56
SearchListSizeحجم القائمة المرشحة.
تزيد القيمة الأكبر من الوقت المستغرق في بناء الفهرس ولكنها توفر معدل استدعاء أعلى.
اضبطه على قيمة أصغر من MaxDegree إلا إذا كنت بحاجة إلى تقليل وقت بناء الفهرس.
[1, int32_max]100
PQCodeBudgetGBRatioالحد الأقصى لحجم رمز PQ.
توفر القيمة الأكبر معدل استدعاء أعلى ولكنها تزيد من استخدام الذاكرة.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioنسبة أرقام العقد المخزنة مؤقتاً إلى البيانات الأولية.
تؤدي القيمة الأكبر إلى تحسين أداء بناء الفهرس مع زيادة استخدام الذاكرة.
[0.0, 0.3)0.10
BeamWidthRatioالنسبة بين الحد الأقصى لعدد طلبات الإدخال والإخراج لكل تكرار بحث ورقم وحدة المعالجة المركزية.[1، الحد الأقصى (128 / رقم وحدة المعالجة المركزية، 16)]4.0

استكشاف الأخطاء وإصلاحها

  • كيفية التعامل مع الخطأ io_setup() failed; returned -11, errno=11:Resource temporarily unavailable ؟

    يوفر Linux kernel ميزة الإدخال/الإخراج غير المتزامن غير المحظور (AIO) التي تسمح للعملية ببدء عمليات إدخال/إخراج متعددة في وقت واحد دون الحاجة إلى انتظار اكتمال أي منها. يساعد ذلك على تعزيز الأداء للتطبيقات التي يمكن أن تتداخل فيها المعالجة مع الإدخال/الإخراج.

    يمكن ضبط الأداء باستخدام الملف الظاهري /proc/sys/fs/aio-max-nr في نظام الملفات proc. تحدد المعلمة aio-max-nr الحد الأقصى لعدد الطلبات المتزامنة المسموح بها.

    يتم تعيين aio-max-nr افتراضيًا على 65535 ، ويمكنك ضبطه حتى 10485760.

جرب Managed Milvus مجاناً

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

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

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