الفهرس داخل الذاكرة
يسرد هذا الموضوع أنواع مختلفة من الفهارس داخل الذاكرة التي يدعمها ملفوس، والسيناريوهات التي تناسب كل منها، والمعلمات التي يمكن للمستخدمين تكوينها لتحقيق أداء بحث أفضل. بالنسبة للفهارس على القرص، راجع الفهرسة على القرص.
الفهرسة هي عملية تنظيم البيانات بكفاءة، وتلعب دورًا رئيسيًا في جعل البحث عن التشابه مفيدًا من خلال تسريع الاستعلامات التي تستغرق وقتًا طويلاً على مجموعات البيانات الكبيرة بشكل كبير.
لتحسين أداء الاستعلام، يمكنك تحديد نوع فهرس لكل حقل متجه.
فهارس المتجهات ANNS
تستخدم معظم أنواع الفهارس المتجهة التي يدعمها Milvus خوارزميات البحث التقريبي الأقرب للجيران (ANNS). وبالمقارنة مع الاسترجاع الدقيق، الذي عادةً ما يستغرق وقتًا طويلاً، فإن الفكرة الأساسية لـ ANNS لم تعد تقتصر على إرجاع النتيجة الأكثر دقة، بل البحث عن جيران الهدف فقط. تعمل ANNS على تحسين كفاءة الاسترجاع من خلال التضحية بالدقة ضمن نطاق مقبول.
وفقًا لطرق التنفيذ، يمكن تصنيف فهرس متجه ANNS إلى أربعة أنواع: قائم على الشجرة وقائم على الرسم البياني وقائم على التجزئة وقائم على التجزئة الكمية.
الفهارس المدعومة في ميلفوس
تدعم Milvus أنواعًا مختلفة من الفهارس، والتي يتم تصنيفها حسب نوع التضمينات المتجهة التي تتعامل معها: تضمينات الف اصلة العائمة (المعروفة أيضًا باسم متجهات النقطة العائمة أو المتجهات الكثيفة)، والتضمينات الثنائية (المعروفة أيضًا باسم المتجهات الثنائية)، والتضمينات المتفرقة (المعروفة أيضًا باسم المتجهات المتفرقة).
فهارس لتضمينات الفاصلة العائمة
بالنسبة للتضمينات ذات الفاصلة العائمة ذات 128 بُعدًا (المتجهات)، فإن مساحة التخزين التي تشغلها هي 128 * حجم العوامة = 512 بايت. ومقاييس المسافة المستخدمة لتضمينات الفاصلة العائمة هي المسافة الإقليدية (L2
) والمنتج الداخلي (IP
).
وتتضمن هذه الأنواع من الفهارس FLAT
و IVF_FLAT
و و IVF_PQ
و IVF_SQ8
و HNSW
و HNSW_SQ
و HNSW_PQ
و HNSW_PRQ
و SCANN
لعمليات البحث في الشبكة العنكبوتية القائمة على وحدة المعالجة المركزية.
فهارس التضمينات الثنائية
بالنسبة للتضمينات الثنائية ذات 128 بُعدًا، تبلغ مساحة التخزين التي تشغلها 128 / 8 = 16 بايت. ومقاييس المسافة المستخدمة للتضمينات الثنائية هي JACCARD
و HAMMING
.
يتضمن هذا النوع من الفهارس BIN_FLAT
و BIN_IVF_FLAT
.
فهارس التضمينات المتفرقة
تدعم فهارس التضمينات المتفرقة مقاييس IP
و BM25
(للبحث في النص الكامل) فقط.
نوع الفهرس المدعوم للتضمينات المتفرقة: SPARSE_INVERTED_INDEX
.
من الإصدار Milvus 2.5.4 فصاعدًا، تم إهمال SPARSE_WAND
. بدلاً من ذلك، يوصى باستخدام "inverted_index_algo": "DAAT_WAND"
للمعادلة مع الحفاظ على التوافق. لمزيد من المعلومات، راجع متجه متناثر.
الفهرس المدعوم | التصنيف | السيناريو |
---|---|---|
مسطح | غير متاح |
|
IVF_FLAT | غير متاح |
|
IVF_SQ8 | الفهرس القائم على التكميم |
|
IVF_PQ | الفهرس المستند إلى التقدير الكمي |
|
HNSW | فهرس قائم على الرسم البياني |
|
HNSW_SQ | فهرس قائم على القياس الكمي |
|
HNSW_PQ | الفهرس المستند إلى القياس الكمي |
|
HNSW_PRQ | الفهرس المستند إلى القياس الكمي |
|
SCANN | فهرس قائم على تحديد الكميات |
|
الفهرس المدعوم | التصنيف | السيناريو |
---|---|---|
BIN_FLAT | فهرس قائم على التحويل الكمي |
|
BIN_IVF_FLAT | فهرس قائم على التكميم |
|
الفهرس المدعوم | التصنيف | السيناريو |
---|---|---|
الفهرس_المقلوب_المتفرق | فهرس مقلوب |
|
FLAT
بالنسبة لتطبيقات البحث عن تشابه المتجهات التي تتطلب دقة مثالية وتعتمد على مجموعات بيانات صغيرة نسبيًا (بمقياس مليون)، يعد الفهرس المسطح خيارًا جيدًا. لا يقوم FLAT بضغط المتجهات، وهو الفهرس الوحيد الذي يمكن أن يضمن نتائج بحث دقيقة. يمكن أيضًا استخدام النتائج من FLAT كنقطة مقارنة للنتائج التي تنتجها الفهارس الأخرى التي لديها أقل من 100% من الاستدعاء.
يتميز فهرس FLAT بالدقة لأنه يتبع نهجًا شاملًا للبحث، مما يعني أنه لكل استعلام تتم مقارنة المدخلات المستهدفة بكل مجموعة من المتجهات في مجموعة البيانات. هذا يجعل FLAT أبطأ فهرس في قائمتنا، وهو غير مناسب للاستعلام عن بيانات المتجهات الضخمة. لا توجد معلمات مطلوبة لفهرس FLAT في Milvus، ولا يحتاج استخدامه إلى تدريب على البيانات.
معلمات البحث
المعلمة الوصف النطاق metric_type
[اختياري] مقياس المسافة المختار. انظر المقاييس المدعومة.
IVF_FLAT
يقسم IVF_FLAT بيانات المتجهات إلى nlist
وحدات عنقودية، ثم يقارن المسافات بين متجه الإدخال الهدف ومركز كل مجموعة. اعتمادًا على عدد المجموعات التي تم تعيين النظام للاستعلام عنها (nprobe
)، يتم إرجاع نتائج بحث التشابه بناءً على المقارنات بين المدخلات المستهدفة والمتجهات في المجموعة (المجموعات) الأكثر تشابهًا فقط - مما يقلل وقت الاستعلام بشكل كبير.
من خلال ضبط nprobe
، يمكن إيجاد توازن مثالي بين الدقة والسرعة لسيناريو معين. تُظهر نتائج اختبار أداء IVF_FLAT أن وقت الاستعلام يزداد بشكل حاد مع زيادة عدد متجهات المدخلات المستهدفة (nq
)، وعدد المجموعات المطلوب البحث عنها (nprobe
).
إن IVF_FLAT هو فهرس IVF_FLAT الأساسي، والبيانات المشفرة المخزنة في كل وحدة متسقة مع البيانات الأصلية.
معلمات بناء الفهرس
المعلمة الوصف النطاق القيمة الافتراضية nlist
عدد وحدات المجموعة [1, 65536] 128 معلمات البحث
بحث مشترك
المعلمة الوصف النطاق القيمة الافتراضية nprobe
عدد الوحدات المطلوب الاستعلام عنها [1، ن ليست] 8 بحث النطاق
المعلمة الوصف النطاق القيمة الافتراضية max_empty_result_buckets
الحد الأقصى لعدد الدلاء التي لا ترجع أي نتائج بحث.
هذه معلمة بحث نطاق وتنهي عملية البحث عندما يصل عدد الدلاء الفارغة المتتالية إلى القيمة المحددة.
يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاستدعاء على حساب زيادة وقت البحث.[1, 65535] 2
IVF_SQ8
لا يقوم IVF_FFLAT بإجراء أي ضغط، لذا فإن ملفات الفهرس التي ينتجها تكون تقريبًا بنفس حجم بيانات المتجه الأصلية غير المفهرسة. على سبيل المثال، إذا كان حجم مجموعة بيانات SIFT 1B الأصلية 476 جيجابايت، فإن ملفات فهرس IVF_SQ8_FLAT الخاصة بها ستكون أصغر قليلاً (حوالي 470 جيجابايت). سيؤدي تحميل جميع ملفات الفهرس في الذاكرة إلى استهلاك 470 جيجابايت من مساحة التخزين.
عندما تكون موارد ذاكرة القرص أو وحدة المعالجة المركزية أو وحدة معالجة الرسومات محدودة، فإن IVF_SQ8 هو خيار أفضل من IVF_FLAT. يمكن لنوع الفهرس هذا تحويل كل FLOAT (4 بايت) إلى UINT8 (1 بايت) عن طريق إجراء التكميم الكمي Scalar Quantization (SQ). يقلل هذا من استهلاك القرص ووحدة المعالجة المركزية وذاكرة وحدة معالجة الرسومات بنسبة 70-75%. بالنسبة لمجموعة بيانات SIFT 1B، تتطلب ملفات فهرس IVF_SQ8 مساحة تخزين 140 جيجابايت فقط.
معلمات بناء الفهرس
المعلمة الوصف النطاق nlist
عدد وحدات التجميع [1, 65536] معلمات البحث
بحث مشترك
المعلمة الوصف النطاق القيمة الافتراضية nprobe
عدد الوحدات المطلوب الاستعلام عنها [1، ن ليست] 8 بحث النطاق
المعلمة الوصف النطاق القيمة الافتراضية max_empty_result_buckets
الحد الأقصى لعدد الدلاء التي لا ترجع أي نتائج بحث.
هذه معلمة بحث نطاق وتنهي عملية البحث عندما يصل عدد الدلاء الفارغة المتتالية إلى القيمة المحددة.
يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاستدعاء على حساب زيادة وقت البحث.[1, 65535] 2
IVF_PQ
PQ
(التكميم الكمي للمنتج) تحلل بشكل موحد الفضاء المتجه الأصلي عالي الأبعاد إلى نواتج ديكارتية من m
مساحات متجهة منخفضة الأبعاد، ثم تقوم بتكميم المساحات المتجهة منخفضة الأبعاد المتحللة. وبدلاً من حساب المسافات بين المتجه الهدف ومركز جميع الوحدات، يتيح التكميم الكمي للمنتج حساب المسافات بين المتجه الهدف ومركز التجميع لكل فضاء منخفض الأبعاد ويقلل بشكل كبير من تعقيد الوقت وتعقيد المساحة للخوارزمية.
يقوم IVF_PQ بإجراء تجميع فهرس IVF قبل تكميم حاصل ضرب المتجهات. ملف الفهرس الخاص به أصغر من IVF_SQ8، لكنه يتسبب أيضًا في فقدان الدقة أثناء البحث عن المتجهات.
تختلف معلمات بناء الفهرس ومعلمات البحث باختلاف توزيع Milvus. حدد توزيع Milvus الخاص بك أولاً.
معلمات بناء الفهرس
المعلمة الوصف النطاق nlist
عدد وحدات الكتلة [1, 65536] m
عدد عوامل تكميم المنتج dim mod m == 0
nbits
[اختياري] عدد البتات التي يتم تخزين كل متجه منخفض الأبعاد فيها. [1، 64] (8 افتراضيًا) معلمات البحث
بحث مشترك
المعلمة الوصف النطاق القيمة الافتراضية nprobe
عدد الوحدات المطلوب الاستعلام عنها [1، ن ليست] 8 بحث النطاق
المعلمة الوصف النطاق القيمة الافتراضية max_empty_result_buckets
الحد الأقصى لعدد الدلاء التي لا ترجع أي نتائج بحث.
هذه معلمة بحث نطاق وتنهي عملية البحث عندما يصل عدد الدلاء الفارغة المتتالية إلى القيمة المحددة.
يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاستدعاء على حساب زيادة وقت البحث.[1, 65535] 2
SCANN
يشبه ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (ScaNN (Scalable Nearest Neighbours) يشبه IVF_PQ من حيث تجميع المتجهات وتكميم المنتج. ما يجعلها مختلفة يكمن في تفاصيل تنفيذ تكميم المنتج واستخدام SIMD (أحادي التعليمات / متعدد البيانات) للحساب الفعال.
معلمات بناء الفهرس
المعلمة الوصف النطاق nlist
عدد وحدات الكتلة [1, 65536] with_raw_data
ما إذا كان سيتم تضمين البيانات الأولية في الفهرس True
أوFalse
. الافتراضي إلىTrue
.على عكس IVF_PQ، تنطبق القيم الافتراضية على
m
وnbits
لتحسين الأداء.معلمات البحث
البحث الشائع
المعلمة الوصف النطاق القيمة الافتراضية nprobe
عدد الوحدات المطلوب الاستعلام عنها [1، nlist] reorder_k
عدد الوحدات المرشحة للاستعلام عنها [ top_k
، ∞]top_k
نطاق البحث
المعلمة الوصف النطاق القيمة الافتراضية max_empty_result_buckets
الحد الأقصى لعدد الدلاء التي لا ترجع أي نتائج بحث.
هذه معلمة بحث نطاق وتنهي عملية البحث عندما يصل عدد الدلاء الفارغة المتتالية إلى القيمة المحددة.
يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاستدعاء على حساب زيادة وقت البحث.[1, 65535] 2
HNSW
HNSW (الرسم البياني الهرمي للعالم الصغير القابل للملاحة) هي خوارزمية فهرسة قائمة على الرسم البياني. وهي تبني بنية تنقل متعددة الطبقات للصورة وفقًا لقواعد معينة. في هذا الهيكل، تكون الطبقات العليا أكثر تناثرًا والمسافات بين العقد أبعد؛ أما الطبقات السفلى فهي أكثر كثافة والمسافات بين العقد أقرب. يبدأ البحث من الطبقة العليا، ويعثر على العقدة الأقرب إلى الهدف في هذه الطبقة، ثم يدخل إلى الطبقة التالية لبدء بحث آخر. بعد عدة تكرارات، يمكن أن يقترب بسرعة من الموضع المستهدف.
من أجل تحسين الأداء، يحدّ HNSW من الحد الأقصى لدرجة العقد في كل طبقة من الرسم البياني إلى M
. بالإضافة إلى ذلك، يمكنك استخدام efConstruction
(عند بناء الفهرس) أو ef
(عند البحث عن الأهداف) لتحديد نطاق بحث.
معلمات بناء الفهرس
المعلمة الوصف النطاق القيمة الافتراضية M
M تحدد الحد الأقصى لعدد الاتصالات الصادرة في الرسم البياني. يؤدي ارتفاع M إلى دقة أعلى/وقت تشغيل أعلى عند بناء ef/efConstruction ثابت. [2, 2048] لا يوجد efConstruction
يتحكم ef_construction في سرعة البحث عن الفهرس/سرعة البناء. قد تؤدي زيادة معلمة efConstruction إلى تحسين جودة الفهرس، ولكنها تميل أيضًا إلى إطالة وقت الفهرسة. [1، int_max] لا يوجد معلمات البحث
المعلمة الوصف النطاق القيمة الافتراضية ef
معلمة تتحكم في مفاضلة وقت/دقة البحث. يؤدي ارتفاع ef
إلى بحث أكثر دقة ولكن أبطأ.[ top_k
، int_max]لا يوجد
HNSW_SQ
التكمية الكمية العددية (SQ) هي تقنية تُستخدم لتجزئة بيانات الفاصلة العائمة إلى مجموعة محدودة من القيم بناءً على مقدارها. على سبيل المثال، يمثل SQ6 التكميم الكمي إلى (2^6 = 64) قيم منفصلة، حيث يتم ترميز كل رقم عائم باستخدام 6 بت. وبالمثل، يقوم SQ8 بتكميم البيانات إلى (2 ^ 8 = 256) قيم منفصلة، حيث يتم تمثيل كل رقم عائم ب 8 بتات. يقلل هذا التكميم من بصمة الذاكرة مع الحفاظ على البنية الأساسية للبيانات من أجل معالجة فعالة.
وبالاقتران مع SQ، يوفر HNSW_SQ مفاضلة يمكن التحكم فيها بين حجم الفهرس والدقة، مع الحفاظ على أداء استعلام عالٍ في الثانية (QPS). وبالمقارنة مع HNSW القياسي، فإنه يؤدي إلى زيادة متواضعة في وقت بناء الفهرس.
معلمات بناء الفهرس
المعلمة الوصف النطاق القيمة الافتراضية M
M تحدد الحد الأقصى لعدد الاتصالات الصادرة في الرسم البياني. يؤدي ارتفاع M إلى دقة أعلى/وقت تشغيل أعلى عند بناء ef/efConstruction ثابت. [2, 2048] لا يوجد efConstruction
يتحكم ef_construction في سرعة البحث عن الفهرس/سرعة البناء. قد تؤدي زيادة معلمة efConstruction إلى تحسين جودة الفهرس، ولكنها تميل أيضًا إلى إطالة وقت الفهرسة. [1، int_max] لا شيء sq_type
نوع الكميات العددية. SQ6
،SQ8
،BF16
,FP16
SQ8
refine
ما إذا كان يتم حجز البيانات المكررة أثناء إنشاء الفهرس. true
,false
false
refine_type
نوع بيانات الفهرس المنقح. SQ6
,SQ8
,BF16
,FP16
,FP32
لا يوجد معلمات البحث
المعلمة الوصف النطاق القيمة الافتراضية ef
معلمة تتحكم في مفاضلة وقت/دقة البحث. يؤدي ارتفاع ef
إلى بحث أكثر دقة ولكن أبطأ.[ top_k
، int_max]لا يوجد refine_k
عامل التكبير للتكرير مقارنة بـ k. [ 1, float_max] 1
HNSW_PQ
تتمثل الفكرة الأساسية لـ PQ في تقسيم المتجه إلى m
متجهات فرعية، كل منها سيجد 2^{nbits} مركزيات على أساس kmeans، وسيختار كل متجه فرعي أقرب متجه فرعي كمتجه فرعي تقريبي له. ثم نقوم بتسجيل جميع المئويات، بحيث يمكن ترميز كل متجه فرعي على أنه nbits
، ويمكن ترميز متجه عائم طوله dim
على أنه م ⋅ nbits بت.
وبالاقتران مع PQ، يوفر HNSW_PQ مفاضلة يمكن التحكم فيها بين حجم الفهرس والدقة، ولكن لديه قيمة QPS أقل ومعدل استرجاع أعلى من HNSW_SQ لنفس معدل الضغط. بالمقارنة مع HNSW_SQ، يستغرق بناء الفهرس وقتًا أطول.
معلمات بناء الفهرس
المعلمة الوصف النطاق القيمة الافتراضية M
M تحدد الحد الأقصى لعدد الاتصالات الصادرة في الرسم البياني. يؤدي ارتفاع M إلى دقة أعلى/وقت تشغيل أعلى عند بناء ef/efConstruction ثابت. [2, 2048] لا يوجد efConstruction
يتحكم ef_construction في سرعة البحث عن الفهرس/سرعة البناء. قد تؤدي زيادة معلمة efConstruction إلى تحسين جودة الفهرس، ولكنها تميل أيضًا إلى إطالة وقت الفهرسة. [1، int_max] لا يوجد m
عدد مجموعات المتجهات الفرعية المراد تقسيم المتجه إليها. [1, 65536] 32 nbits
عدد البتات التي يتم تقسيم كل مجموعة من المتجهات الفرعية إليها. [1, 24] 8 refine
ما إذا كان يتم حجز البيانات المكررة أثناء بناء الفهرس. true
,false
false
refine_type
نوع بيانات الفهرس المنقح. SQ6
،SQ8
،BF16
، ،FP16
,FP32
لا يوجد معلمات البحث
المعلمة الوصف النطاق القيمة الافتراضية ef
معلمة تتحكم في مفاضلة وقت/دقة البحث. يؤدي ارتفاع ef
إلى بحث أكثر دقة ولكن أبطأ.[ top_k
، int_max]لا يوجد refine_k
عامل التكبير للتكرير مقارنة بـ k. [ 1, float_max] 1
HNSW_PRQ
PRQ مشابه لـ PQ، ويقسم المتجه أيضًا إلى m
مجموعات. سيتم ترميز كل متجه فرعي على أنه nbits
. بعد إكمال تكميم pq، سيحسب المتجه المتبقي بين المتجه والمتجه المكمم pq، ويطبق تكميم pq على المتجه المتبقي. سيتم إجراء ما مجموعه nrq
عملية تكميم pq كاملة، لذا سيتم ترميز متجه عائم طوله dim
على هيئة m ⋅ nbits ⋅ nrq bits.
يوفر HNSW_PRQ، بالاقتران مع مُكوِّن الكمية المتبقية من المنتج (PRQ)، مفاضلة أعلى يمكن التحكم فيها بين حجم المؤشر والدقة. لديه قيمة QPS مكافئة تقريبًا ومعدل استرجاع أعلى من HNSW_PQ لنفس معدل الضغط. بالمقارنة مع HNSW_PQ، قد يزيد وقت بناء الفهرس عدة مرات.
معلمات بناء الفهرس
المعلمة الوصف النطاق القيمة الافتراضية M
M تحدد الحد الأقصى لعدد الاتصالات الصادرة في الرسم البياني. يؤدي ارتفاع M إلى دقة أعلى/وقت تشغيل أعلى عند بناء ef/efConstruction ثابت. [2, 2048] لا يوجد efConstruction
يتحكم ef_construction في سرعة البحث عن الفهرس/سرعة البناء. قد تؤدي زيادة معلمة efConstruction إلى تحسين جودة الفهرس، ولكنها تميل أيضًا إلى إطالة وقت الفهرسة. [1، int_max] لا يوجد m
عدد مجموعات المتجهات الفرعية المراد تقسيم المتجه إليها. [1, 65536] 32 nbits
عدد البتات التي يتم تقسيم كل مجموعة من المتجهات الفرعية إليها. [1, 24] 8 nrq
عدد المتجهات الفرعية المتبقية. [1, 16] 2 refine
ما إذا كانت البيانات المكررة محجوزة أثناء بناء الفهرس. true
,false
false
refine_type
نوع بيانات الفهرس المنقح. SQ6
،SQ8
،BF16
، ،FP16
,FP32
لا يوجد معلمات البحث
المعلمة الوصف النطاق القيمة الافتراضية ef
معلمة تتحكم في مفاضلة وقت/دقة البحث. يؤدي ارتفاع ef
إلى بحث أكثر دقة ولكن أبطأ.[ top_k
، int_max]لا يوجد refine_k
عامل التكبير للتكرير مقارنة بـ k. [ 1, float_max] 1
BIN_FLAT
هذا المؤشر هو نفسه تمامًا مثل FLAT باستثناء أنه يمكن استخدامه فقط للتضمينات الثنائية.
بالنسبة لتطبيقات البحث عن التشابه المتجهي التي تتطلب دقة مثالية وتعتمد على مجموعات بيانات صغيرة نسبيًا (بمقياس مليون)، يعتبر الفهرس BIN_FLAT خيارًا جيدًا. لا يقوم الفهرس BIN_FLAT بضغط المتجهات، وهو الفهرس الوحيد الذي يمكن أن يضمن نتائج بحث دقيقة. يمكن أيضًا استخدام نتائج الفهرس BIN_FLAT كنقطة مقارنة للنتائج التي تنتجها الفهارس الأخرى التي تقل نسبة استرجاعها عن 100%.
يتسم BIN_FLAT بالدقة لأنه يتبع نهجًا شاملًا في البحث، وهو ما يعني أنه تتم مقارنة المدخلات المستهدفة لكل استعلام مع المتجهات في مجموعة البيانات. وهذا يجعل من BIN_FLAT أبطأ فهرس في قائمتنا، وهو غير مناسب للاستعلام عن بيانات المتجهات الضخمة. لا توجد معلمات لفهرس BIN_FLAT في Milvus، ولا يتطلب استخدامه تدريبًا على البيانات أو تخزينًا إضافيًا.
معلمات البحث
المعلمة الوصف النطاق metric_type
[اختياري] مقياس المسافة المختار. انظر المقاييس المدعومة.
BIN_IVF_FLAT
هذا المؤشر مماثل تمامًا لـ IVF_FLAT باستثناء أنه لا يمكن استخدامه إلا للتضمينات الثنائية.
يقسم BIN_IVF_FLAT بيانات المتجه إلى nlist
وحدة عنقودية، ثم يقارن المسافات بين متجه الإدخال الهدف ومركز كل مجموعة. واعتمادًا على عدد المجموعات التي تم تعيين النظام للاستعلام عنها (nprobe
)، يتم إرجاع نتائج البحث عن التشابه بناءً على المقارنات بين المدخلات المستهدفة والمتجهات في المجموعة (المجموعات) الأكثر تشابهًا فقط - مما يقلل وقت الاستعلام بشكل كبير.
من خلال ضبط nprobe
، يمكن إيجاد توازن مثالي بين الدقة والسرعة لسيناريو معين. يزداد وقت الاستعلام بشكل حاد مع زيادة عدد متجهات المدخلات المستهدفة (nq
)، وعدد المجموعات المطلوب البحث عنها (nprobe
).
BIN_IVF_FLAT هو فهرس BIN_IVF الأساسي، وتكون البيانات المشفرة المخزنة في كل وحدة متسقة مع البيانات الأصلية.
معلمات بناء الفهرس
المعلمة الوصف النطاق nlist
عدد وحدات المجموعة [1, 65536] معلمات البحث
بحث مشترك
المعلمة الوصف النطاق القيمة الافتراضية nprobe
عدد الوحدات المطلوب الاستعلام عنها [1، ن ليست] 8 بحث النطاق
المعلمة الوصف النطاق القيمة الافتراضية max_empty_result_buckets
الحد الأقصى لعدد الدلاء التي لا ترجع أي نتائج بحث.
هذه معلمة بحث نطاق وتنهي عملية البحث عندما يصل عدد الدلاء الفارغة المتتالية إلى القيمة المحددة.
يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاستدعاء على حساب زيادة وقت البحث.[1, 65535] 2
متناثر_مقلوب_الفهرس
يحتفظ كل بُعد بقائمة من المتجهات التي لها قيمة غير صفرية في هذا البُعد. أثناء البحث، يقوم Milvus بالتكرار خلال كل بُعد من أبعاد متجه الاستعلام ويحسب الدرجات للمتجهات التي لها قيم غير صفرية في تلك الأبعاد.
معلمات بناء الفهرس
المعلمة الوصف النطاق inverted_index_algo
الخوارزمية المستخدمة لبناء الفهرس والاستعلام عنه. لمزيد من التفاصيل، راجع متجه متناثر. DAAT_MAXSCORE
(افتراضي)،DAAT_WAND
,TAAT_NAIVE
تم إهمال المعلمة
drop_ratio_build
منذ الإصدار 2.5.4 من ميلفوس (Milvus v2.5.4)، والتي لا يزال من الممكن قبولها أثناء بناء الفهرس، ولكن لن يكون لها تأثير فعلي على الفهرس.معلمات البحث
المعلمة الوصف النطاق drop_ratio_search
نسبة قيم المتجهات الصغيرة التي يتم استبعادها أثناء عملية البحث. يسمح هذا الخيار بضبط عملية البحث بشكل دقيق من خلال تحديد نسبة أصغر القيم في متجه الاستعلام التي يجب تجاهلها. يساعد في تحقيق التوازن بين دقة البحث والأداء. كلما قلت القيمة المحددة ل drop_ratio_search
، قلت مساهمة هذه القيم الصغيرة في النتيجة النهائية. من خلال تجاهل بعض القيم الصغيرة، يمكن تحسين أداء البحث بأقل تأثير على الدقة.[0, 1]
الأسئلة الشائعة
ما الفرق بين مؤشر FLAT ومؤشر IVF_FLAT؟
يقسّم الفهرس IVF_FLAT مساحة المتجه إلى nlist
مجموعة. إذا احتفظت بالقيمة الافتراضية nlist
كـ 16384، يقارن Milvus المسافات بين المتجه الهدف ومراكز جميع المجموعات الـ 16384 للحصول على nprobe
أقرب مجموعات. ثم يقارن Milvus المسافات بين المتجه الهدف والمتجهات في المجموعات المحددة للحصول على أقرب المتجهات. على عكس IVF_FLAT، يقارن FLAT مباشرةً المسافات بين المتجه الهدف وكل متجه.
لذلك، عندما يكون العدد الإجمالي للمتجهات يساوي تقريبًا nlist
، فإن IVF_FLAT و FLAT لا يوجد فرق كبير في طريقة الحساب المطلوبة وأداء البحث. ولكن مع زيادة عدد المتجهات إلى ضعفين أو ثلاثة أضعاف أو ن ضعف nlist
، يبدأ فهرس IVF_FLAT في إظهار مزايا أكبر بشكل متزايد.
راجع كيفية اختيار فهرس في ميلفوس لمزيد من المعلومات.
ما التالي
- تعرف على المزيد حول مقاييس التشابه المدعومة في ملفوس.