🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • المفاهيم
  • Home
  • Docs
  • المفاهيم

  • مؤشر المتجهات

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

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

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

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

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

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

لاستخدام DiskANN، لاحظ أن

  • يتم تعطيل DiskANN افتراضيًا. إذا كنت تفضل الفهرس داخل الذاكرة على الفهرس على القرص، يُنصح بتعطيل هذه الميزة للحصول على أداء أفضل.
    • لتعطيلها، يمكنك تغيير queryNode.enableDisk إلى false في ملف تكوين ميلفوس الخاص بك.
    • لتمكينها مرة أخرى، يمكنك تعيين queryNode.enableDisk إلى true.
  • يعمل مثيل 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
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
المعلمةالوصفنطاق القيمةالقيمة الافتراضية
MaxDegreeالدرجة القصوى للرسم البياني لفامانا.
توفر القيمة الأكبر معدل استرجاع أعلى ولكنها تزيد من حجم الفهرس والوقت اللازم لبناء الفهرس.
[1, 512]56
SearchListSizeحجم القائمة المرشحة.
تزيد القيمة الأكبر من الوقت المستغرق في بناء الفهرس ولكنها توفر معدل استدعاء أعلى.
اضبطه على قيمة أصغر من MaxDegree إلا إذا كنت بحاجة إلى تقليل وقت بناء الفهرس.
[1, int32_max]100
PQCodeBugetGBRatioالحد الأقصى لحجم رمز 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 أضعاف.

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

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