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

BIN_IVF_FLAT

فهرس BIN_IVF_FLAT هو متغير من فهرس IVF_FLAT حصريًا للتضمينات الثنائية. وهو يحسّن كفاءة الاستعلام من خلال تقسيم بيانات المتجه أولاً إلى مجموعات متعددة (وحدات قائمة ن) ثم مقارنة متجه الإدخال المستهدف بمركز كل مجموعة. يعمل BIN_IVF_FLAT على تقليل وقت الاستعلام بشكل كبير مع السماح للمستخدمين بضبط التوازن بين الدقة والسرعة. لمزيد من المعلومات، راجع IVF_FLAT.

إنشاء فهرس

لإنشاء فهرس BIN_IVF_FLAT على حقل متجه في ميلفوس، استخدم طريقة add_index() ، مع تحديد index_type و metric_type ومعلمات إضافية للفهرس.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_binary_vector_field_name", # Name of the vector field to be indexed
    index_type="BIN_IVF_FLAT", # Type of the index to create
    index_name="vector_index", # Name of the index to create
    metric_type="HAMMING", # Metric type used to measure similarity
    params={
        "nlist": 64, # Number of clusters for the index
    } # Index building params
)

في هذا التكوين

  • index_type: نوع الفهرس المراد إنشاؤه. في هذا المثال، اضبط القيمة على BIN_IVF_FLAT.

  • metric_type: الطريقة المستخدمة لحساب المسافة بين المتجهات. تتضمن القيم المدعومة للتضمينات الثنائية HAMMING (افتراضي) و JACCARD. للحصول على التفاصيل، راجع أنواع المقاييس.

  • params: خيارات التكوين الإضافية لبناء الفهرس.

    • nlist: عدد المجموعات لتقسيم مجموعة البيانات.

    لمعرفة المزيد من معلمات البناء المتوفرة للفهرس BIN_IVF_FLAT ، راجع بارامز بناء الفهرس.

بمجرد تكوين معلمات الفهرس، يمكنك إنشاء الفهرس باستخدام الأسلوب create_index() مباشرةً أو تمرير بارامترات الفهرس في الأسلوب create_collection. لمزيد من التفاصيل، راجع إنشاء مجموعة.

البحث في الفهرس

بمجرد إنشاء الفهرس وإدراج الكيانات، يمكنك إجراء عمليات بحث عن التشابه على الفهرس.

search_params = {
    "params": {
        "nprobe": 10, # Number of clusters to search
    }
}

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="binary_vector_field",  # Binary vector field
    data=[query_binary_vector],  # Query binary vector
    limit=3,  # TopK results to return
    search_params=search_params
)

في هذا التكوين

  • params: خيارات التكوين الإضافية للبحث على الفهرس.

    • nprobe: عدد المجموعات المطلوب البحث عنها.

    لمعرفة المزيد من معلمات البحث المتوفرة للفهرس BIN_IVF_FLAT ، راجع باراميات البحث الخاصة بالفهرس.

بارامترات الفهرس

يقدم هذا القسم نظرة عامة على المعلمات المستخدمة لبناء الفهرس وإجراء عمليات البحث على الفهرس.

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

يسرد الجدول التالي المعلمات التي يمكن تكوينها في params عند إنشاء فهرس.

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

nlist

عدد العناقيد المراد إنشاؤها باستخدام خوارزمية k-means أثناء بناء الفهرس. يخزن كل عنقود، ممثلاً بنقطة مركزية، قائمة من المتجهات. تؤدي زيادة هذه المعلمة إلى تقليل عدد المتجهات في كل مجموعة، مما يؤدي إلى إنشاء أقسام أصغر وأكثر تركيزًا.

النوع: عدد صحيح المدى: [1, 65536]

القيمة الافتراضية: 128

تعمل القيم الأكبر nlist على تحسين الاستدعاء من خلال إنشاء مجموعات أكثر دقة ولكنها تزيد من وقت بناء الفهرس. قم بالتحسين بناءً على حجم مجموعة البيانات والموارد المتاحة. في معظم الحالات، نوصي بتعيين قيمة ضمن هذا النطاق: [32, 4096].

بارامترات البحث الخاصة بالفهرس

يسرد الجدول التالي المعلمات التي يمكن تكوينها في search_params.params عند البحث في الفهرس.

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

nprobe

عدد التجمعات للبحث عن المرشحين. تسمح القيم الأعلى بالبحث عن المزيد من التجمعات مما يحسن الاستدعاء من خلال توسيع نطاق البحث ولكن على حساب زيادة زمن انتقال الاستعلام.

النوع: عدد صحيح المدى: [1, nlist]

القيمة الافتراضية: 8

تؤدي زيادة هذه القيمة إلى تحسين الاستدعاء ولكنها قد تؤدي إلى إبطاء البحث. قم بتعيين nprobe بشكل متناسب مع nlist لتحقيق التوازن بين السرعة والدقة.

في معظم الحالات، نوصي بتعيين قيمة ضمن هذا النطاق: [1، nlist].

جرب Managed Milvus مجاناً

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

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

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