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

IVF_PQ

إن فهرس IVF_PQ هو خوارزمية فهرسة قائمة على التكميم للبحث التقريبي عن أقرب جار في المساحات عالية الأبعاد. على الرغم من أنها ليست بنفس سرعة بعض الأساليب القائمة على الرسم البياني، إلا أن IVF_PQ غالبًا ما تتطلب ذاكرة أقل بكثير، مما يجعلها خيارًا عمليًا لمجموعات البيانات الكبيرة.

نظرة عامة

يرمز IVF_PQ إلى الملف المقلوب مع تحديد كمية المنتج، وهو نهج هجين يجمع بين الفهرسة والضغط من أجل البحث الفعال عن المتجهات واسترجاعها. وهو يستفيد من مكونين أساسيين: الملف المقلوب (IVF) والتكميم الكمي للمنتج (PQ).

IVF

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

إليك كيفية عملها:

  1. التجميع: يتم تقسيم مجموعة البيانات المتجهة إلى عدد محدد من العناقيد باستخدام خوارزمية تجميع مثل k-means. تحتوي كل مجموعة على مركزية (متجه تمثيلي للمجموعة).

  2. التعيين: يتم تعيين كل متجه إلى المجموعة التي يكون متجهها المركزي الأقرب إليه.

  3. الفهرس المقلوب: يتم إنشاء فهرس يعيّن مركز كل مجموعة عنقودية إلى قائمة المتجهات المعينة لتلك المجموعة.

  4. بحث: عند البحث عن أقرب الجيران، تقارن خوارزمية البحث متجه الاستعلام الخاص بك مع مراكز المجموعات العنقودية وتختار المجموعة (المجموعات) الواعدة. ثم يتم تضييق نطاق البحث إلى المتجهات داخل تلك المجموعات المختارة.

لمعرفة المزيد حول تفاصيلها الفنية، راجع IVF_FLAT.

PQ

تكميمالمنتج (PQ) هي طريقة ضغط للمتجهات عالية الأبعاد تقلل بشكل كبير من متطلبات التخزين مع تمكين عمليات البحث عن التشابه السريع.

تتضمن عملية PQ هذه المراحل الرئيسية:

Ivf Pq 1 Ivf Pq 1

  1. تفكيك الأبعاد: تبدأ الخوارزمية بتحليل كل متجه عالي الأبعاد إلى m متجهات فرعية متساوية الحجم. يحول هذا التحلل الفضاء الأصلي ذا الأبعاد D إلى m فضاءات فرعية منفصلة، حيث يحتوي كل فضاء فرعي على أبعاد D/م. تتحكم المعلمة m في دقة التحلل وتؤثر بشكل مباشر على نسبة الضغط.

  2. توليد دفتر رموز الفضاء الفرعي: داخل كل فضاء فرعي، تطبق الخوارزمية تجميع k-means لتعلم مجموعة من المتجهات التمثيلية (مركزيات). وتشكل هذه المركزيات مجتمعةً كتاب رموز لهذا الفضاء الفرعي. يتم تحديد عدد المراكز في كل دفتر رموز بواسطة البارامتر nbits ، حيث يحتوي كل دفتر رموز على 2 نبتة من المراكز. على سبيل المثال، إذا كان nbits = 8 ، سيحتوي كل دفتر رموز على 256 مركزاً. يتم تعيين فهرس فريد لكل مركزية مع nbits بت.

  3. تكميمالمتجهات: بالنسبة لكل متجه فرعي في المتجه الأصلي، يحدد PQ أقرب نقطة مركزية له داخل الفضاء الفرعي المقابل باستخدام نوع مقياس معين. تقوم هذه العملية بفعالية بتعيين كل متجه فرعي إلى أقرب متجه تمثيلي له في دفتر الرموز. وبدلاً من تخزين إحداثيات المتجه الفرعي بالكامل، يتم الاحتفاظ فقط بفهرس المتجه المركزي المطابق.

  4. التمثيل المضغوط: يتألف التمثيل المضغوط النهائي من m مؤشر، واحد من كل فضاء فرعي، ويشار إليها مجتمعة برموز PQ. يقلل هذا الترميز من متطلبات التخزين من D × 32 بت (بافتراض أرقام الفاصلة العائمة 32 بت) إلى m × nbits بت، مما يحقق ضغطًا كبيرًا مع الحفاظ على القدرة على تقريب مسافات المتجهات.

لمزيد من التفاصيل حول ضبط المعلمات وتحسينها، راجع فهرس البارامترات.

ضع في اعتبارك متجهًا بأبعاد D = 128 بعدًا باستخدام أرقام الفاصلة العائمة 32 بت. باستخدام معلمات PQ m = 64 (متجهات فرعية) و nbits = 8 (وبالتالي k =28 = 256 مركزًا لكل مساحة فرعية)، يمكننا مقارنة متطلبات التخزين:

  • المتجه الأصلي: 128 بُعدًا × 32 بت = 4096 بت

  • متجه مضغوط PQ: 64 متجهًا فرعيًا × 8 بت = 512 بت

يمثل ذلك انخفاضًا بمقدار 8 أضعاف في متطلبات التخزين.

حساب المسافة باستخدام PQ

عند إجراء بحث التشابه مع متجه استعلام، يتيح PQ حساب المسافة بكفاءة من خلال الخطوات التالية:

  1. المعالجة المسبقة للاستعلام

    • يتحلل متجه الاستعلام إلى m متجهات فرعية، بما يتطابق مع بنية تحليل PQ الأصلية.

    • بالنسبة لكل متجه فرعي للاستعلام ودفتر الرموز المقابل له (يحتوي على مراكز 2nbits )، يتم حساب وتخزين المسافات إلى جميع المراكز.

    • يؤدي هذا إلى إنشاء m جداول بحث، حيث يحتوي كل جدول على مسافات 2nbits.

  2. تقريب المسافات

    بالنسبة إلى أي متجه قاعدة بيانات ممثلة برموز PQ، يتم حساب المسافة التقريبية إلى متجه الاستعلام على النحو التالي:

    • بالنسبة لكل متجه من المتجهات الفرعية m ، استرجع المسافة المحسوبة مسبقًا من جدول البحث المقابل باستخدام فهرس النواة المركزية المخزنة.

    • اجمع هذه المسافات m للحصول على المسافة التقريبية بناءً على نوع مقياس معين (مثل المسافة الإقليدية).

Ivf Pq 2 Ivf Pq 2

IVF + PQ

يجمع مؤشر IVF_PQ بين نقاط قوة IVF وPQ لتسريع عمليات البحث. تعمل العملية في خطوتين:

  1. التصفية الخشنة باستخدام IVF: يقسم IVF فضاء المتجه إلى مجموعات، مما يقلل من نطاق البحث. بدلاً من تقييم مجموعة البيانات بأكملها، تركز الخوارزمية فقط على المجموعات الأقرب إلى متجه الاستعلام.

  2. المقارنة الدقيقة مع PQ: داخل المجموعات المختارة، تستخدم PQ تمثيلات المتجهات المضغوطة والكمية لحساب المسافات التقريبية بسرعة.

يتأثر أداء فهرس IVF_PQ بشكل كبير بالمعلمات التي تتحكم في كل من خوارزميات IVF و PQ. يعد ضبط هذه المعلمات أمرًا بالغ الأهمية لتحقيق أفضل النتائج لمجموعة بيانات وتطبيق معينين. يمكن العثور على معلومات أكثر تفصيلاً حول هذه المعلمات وكيفية ضبطها في بارامز الفهرس.

إنشاء فهرس

لإنشاء فهرس IVF_PQ على حقل متجه في ميلفوس، استخدم طريقة 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_vector_field_name", # Name of the vector field to be indexed
    index_type="IVF_PQ", # Type of the index to create
    index_name="vector_index", # Name of the index to create
    metric_type="L2", # Metric type used to measure similarity
    params={
        "m": 4, # Number of sub-vectors to split eahc vector into
    } # Index building params
)

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

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

  • metric_type: الطريقة المستخدمة لحساب المسافة بين المتجهات. تتضمن القيم المدعومة COSINE و L2 و IP. لمزيد من التفاصيل، راجع أنواع المقاييس.

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

    • m: عدد المتجهات الفرعية المراد تقسيم المتجه إليها.

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

بمجرد تكوين معلمات الفهرس، يمكنك إنشاء الفهرس باستخدام الأسلوب 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="vector_field", # Vector field name
    data=[[0.1, 0.2, 0.3, 0.4, 0.5]],  # Query vector
    limit=3,  # TopK results to return
    search_params=search_params
)

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

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

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

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

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

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

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

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

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

عامل التجميع

nlist

عدد المجموعات المراد إنشاؤها باستخدام خوارزمية k-means أثناء بناء الفهرس.

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

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

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

PQ

m

عدد المتجهات الفرعية (المستخدمة في التكميم) لتقسيم كل متجه عالي الأبعاد إلى متجهات عالية الأبعاد أثناء عملية التكميم.

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

القيمة الافتراضية: لا يوجد

يمكن لقيمة m الأعلى أن تحسن الدقة، لكنها تزيد أيضًا من التعقيد الحسابي واستخدام الذاكرة. m يجب أن تكون القيمة قاسماً على البعد المتجه(D) لضمان التحلل الصحيح. القيمة الموصى بها عادةً هي m = D/2.

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

nbits

عدد البتات المستخدمة لتمثيل فهرس مركزية كل متجه فرعي في النموذج المضغوط. وهو يحدد مباشرةً حجم كل دفتر رموز. سيحتوي كل دفتر شفرات على 2 بت سنترويدات مركزية. على سبيل المثال، إذا تم تعيين nbits على 8، فسيتم تمثيل كل متجه فرعي بفهرس مركزية مكون من 8 بت. وهذا يسمح بوجود28 (256) مركزاً محتملاً في دفتر الرموز لهذا المتجه الفرعي.

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

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

تسمح القيمة الأعلى nbits بوجود دفاتر رموز أكبر، مما قد يؤدي إلى تمثيل أكثر دقة للمتجهات الأصلية. ومع ذلك، فهذا يعني أيضًا استخدام المزيد من البتات لتخزين كل فهرس، مما يؤدي إلى ضغط أقل. في معظم الحالات، نوصي بتعيين قيمة ضمن هذا النطاق: [1, 16].

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

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

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

عامل التهيئة

nprobe

عدد المجموعات للبحث عن المرشحين.

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

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

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

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

جرب Managed Milvus مجاناً

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

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

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