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

الفهرس_المتفرق_المقلوب_الفهرس

الفهرس SPARSE_INVERTED_INDEX هو نوع فهرس يستخدمه Milvus لتخزين المتجهات المتفرقة والبحث فيها بكفاءة. يستفيد هذا النوع من الفهرس من مبادئ الفهرسة المقلوبة لإنشاء بنية بحث عالية الكفاءة للبيانات المتفرقة. لمزيد من المعلومات، راجع INVERTED.

إنشاء فهرس

لإنشاء فهرس SPARSE_INVERTED_INDEX على حقل متجه متناثر في ميلفوس، استخدم الطريقة 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_sparse_vector_field_name", # Name of the vector field to be indexed
    index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
    index_name="sparse_inverted_index", # Name of the index to create
    metric_type="IP", # Metric type used to measure similarity
    params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)

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

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

  • metric_type: المقياس المستخدم لحساب التشابه بين المتجهات المتفرقة. قيم صالحة:

    • IP (الضرب الداخلي): يقيس التشابه باستخدام الضرب النقطي.

    • BM25: يستخدم عادةً للبحث في النص الكامل، مع التركيز على التشابه النصي.

      لمزيد من التفاصيل، راجع أنواع القياس والبحث في النص الكامل.

  • params.inverted_index_algo: الخوارزمية المستخدمة لبناء الفهرس والاستعلام عنه. قيم صالحة:

    • "DAAT_MAXSCORE" (افتراضي): معالجة استعلام المستند في الوقت المحسن (DAAT) باستخدام خوارزمية MaxScore. يوفر MaxScore أداءً أفضل لقيم k العالية أو الاستعلامات التي تحتوي على العديد من المصطلحات عن طريق تخطي المصطلحات والمستندات التي من المحتمل أن يكون لها تأثير ضئيل. وهي تحقق ذلك من خلال تقسيم المصطلحات إلى مجموعات أساسية وغير أساسية بناءً على درجات التأثير القصوى، مع التركيز على المصطلحات التي يمكن أن تساهم في أعلى k من النتائج.

    • "DAAT_WAND": معالجة استعلام DAAT الأمثل باستخدام خوارزمية WAND. تقوم WAND بتقييم عدد أقل من المستندات التي تم الوصول إليها من خلال الاستفادة من درجات التأثير القصوى لتخطي المستندات غير المنافسة، ولكن لديها نفقات أعلى لكل ضربة. وهذا يجعل WAND أكثر كفاءة للاستعلامات ذات القيم k الصغيرة أو الاستعلامات القصيرة، حيث يكون التخطي أكثر جدوى.

    • "TAAT_NAIVE": معالجة استعلام المصطلح الأساسي في الوقت (TAAT). على الرغم من أنها أبطأ مقارنةً بـ DAAT_MAXSCORE و DAAT_WAND ، إلا أن TAAT_NAIVE تقدم ميزة فريدة. على عكس خوارزميات DAAT، التي تستخدم درجات التأثير القصوى المخزنة مؤقتًا والتي تظل ثابتة بغض النظر عن التغييرات التي تطرأ على معلمة التجميع العالمية (avgdl)، يتكيف TAAT_NAIVE ديناميكيًا مع هذه التغييرات.

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

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

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

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

# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field",  # Vector field name
    data=query_vector,  # Query vector
    limit=3,  # TopK results to return
)

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

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

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

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

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

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

inverted_index_algo

الخوارزمية المستخدمة لبناء الفهرس والاستعلام عنه. وهي تحدد كيفية معالجة الفهرس للاستعلامات.

"DAAT_MAXSCORE" (افتراضي)، "DAAT_WAND", "TAAT_NAIVE"

استخدم "DAAT_MAXSCORE" للسيناريوهات ذات القيم k العالية أو الاستعلامات التي تحتوي على العديد من المصطلحات، والتي يمكن أن تستفيد من تخطي المستندات غير التنافسية.

اختر "DAAT_WAND" للاستعلامات ذات القيم k الصغيرة أو الاستعلامات القصيرة للاستفادة من التخطي الأكثر كفاءة.

استخدم "TAAT_NAIVE" إذا كان التعديل الديناميكي لتغيرات المجموعة (على سبيل المثال، avgdl) مطلوبًا.

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

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

المعلمة

الوصف

نطاق القيمة

اقتراح الضبط

drop_ratio_search

نسبة أصغر القيم المراد تجاهلها أثناء البحث، مما يساعد على تقليل التشويش.

الكسر بين 0.0 و1.0 (على سبيل المثال، 0.2 يتجاهل أصغر 20% من القيم)

اضبط هذه المعلمة استنادًا إلى مستوى التشتت والتشويش في متجهات الاستعلام لديك.

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

جرب Managed Milvus مجاناً

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

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

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