IVF_PQ
إن فهرس IVF_PQ هو خوارزمية فهرسة قائمة على التكميم للبحث التقريبي عن أقرب جار في المساحات عالية الأبعاد. على الرغم من أنها ليست بنفس سرعة بعض الأساليب القائمة على الرسم البياني، إلا أن IVF_PQ غالبًا ما تتطلب ذاكرة أقل بكثير، مما يجعلها خيارًا عمليًا لمجموعات البيانات الكبيرة.
نظرة عامة
يرمز IVF_PQ إلى الملف المقلوب مع تحديد كمية المنتج، وهو نهج هجين يجمع بين الفهرسة والضغط من أجل البحث الفعال عن المتجهات واسترجاعها. وهو يستفيد من مكونين أساسيين: الملف المقلوب (IVF) والتكميم الكمي للمنتج (PQ).
IVF
يشبه IVF إنشاء فهرس في كتاب. بدلاً من البحث في كل صفحة (أو، في حالتنا، كل متجه)، يمكنك البحث عن كلمات رئيسية محددة (مجموعات) في الفهرس للعثور بسرعة على الصفحات (المتجهات) ذات الصلة. في السيناريو الخاص بنا، يتم تجميع المتجهات في مجموعات، وستقوم الخوارزمية بالبحث ضمن مجموعات قليلة قريبة من متجه الاستعلام.
إليك كيفية عملها:
التجميع: يتم تقسيم مجموعة البيانات المتجهة إلى عدد محدد من العناقيد باستخدام خوارزمية تجميع مثل k-means. تحتوي كل مجموعة على مركزية (متجه تمثيلي للمجموعة).
التعيين: يتم تعيين كل متجه إلى المجموعة التي يكون متجهها المركزي الأقرب إليه.
الفهرس المقلوب: يتم إنشاء فهرس يعيّن مركز كل مجموعة عنقودية إلى قائمة المتجهات المعينة لتلك المجموعة.
بحث: عند البحث عن أقرب الجيران، تقارن خوارزمية البحث متجه الاستعلام الخاص بك مع مراكز المجموعات العنقودية وتختار المجموعة (المجموعات) الواعدة. ثم يتم تضييق نطاق البحث إلى المتجهات داخل تلك المجموعات المختارة.
لمعرفة المزيد حول تفاصيلها الفنية، راجع IVF_FLAT.
PQ
تكميمالمنتج (PQ) هي طريقة ضغط للمتجهات عالية الأبعاد تقلل بشكل كبير من متطلبات التخزين مع تمكين عمليات البحث عن التشابه السريع.
تتضمن عملية PQ هذه المراحل الرئيسية:
Ivf Pq 1
تفكيك الأبعاد: تبدأ الخوارزمية بتحليل كل متجه عالي الأبعاد إلى
mمتجهات فرعية متساوية الحجم. يحول هذا التحلل الفضاء الأصلي ذا الأبعاد D إلىmفضاءات فرعية منفصلة، حيث يحتوي كل فضاء فرعي على أبعاد D/م. تتحكم المعلمةmفي دقة التحلل وتؤثر بشكل مباشر على نسبة الضغط.توليد دفتر رموز الفضاء الفرعي: داخل كل فضاء فرعي، تطبق الخوارزمية تجميع k-means لتعلم مجموعة من المتجهات التمثيلية (مركزيات). وتشكل هذه المركزيات مجتمعةً كتاب رموز لهذا الفضاء الفرعي. يتم تحديد عدد المراكز في كل دفتر رموز بواسطة البارامتر
nbits، حيث يحتوي كل دفتر رموز على 2 نبتة من المراكز. على سبيل المثال، إذا كانnbits = 8، سيحتوي كل دفتر رموز على 256 مركزاً. يتم تعيين فهرس فريد لكل مركزية معnbitsبت.تكميمالمتجهات: بالنسبة لكل متجه فرعي في المتجه الأصلي، يحدد PQ أقرب نقطة مركزية له داخل الفضاء الفرعي المقابل باستخدام نوع مقياس معين. تقوم هذه العملية بفعالية بتعيين كل متجه فرعي إلى أقرب متجه تمثيلي له في دفتر الرموز. وبدلاً من تخزين إحداثيات المتجه الفرعي بالكامل، يتم الاحتفاظ فقط بفهرس المتجه المركزي المطابق.
التمثيل المضغوط: يتألف التمثيل المضغوط النهائي من
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 حساب المسافة بكفاءة من خلال الخطوات التالية:
المعالجة المسبقة للاستعلام
يتحلل متجه الاستعلام إلى
mمتجهات فرعية، بما يتطابق مع بنية تحليل PQ الأصلية.بالنسبة لكل متجه فرعي للاستعلام ودفتر الرموز المقابل له (يحتوي على مراكز 2nbits )، يتم حساب وتخزين المسافات إلى جميع المراكز.
يؤدي هذا إلى إنشاء
mجداول بحث، حيث يحتوي كل جدول على مسافات 2nbits.
تقريب المسافات
بالنسبة إلى أي متجه قاعدة بيانات ممثلة برموز PQ، يتم حساب المسافة التقريبية إلى متجه الاستعلام على النحو التالي:
بالنسبة لكل متجه من المتجهات الفرعية
m، استرجع المسافة المحسوبة مسبقًا من جدول البحث المقابل باستخدام فهرس النواة المركزية المخزنة.اجمع هذه المسافات
mللحصول على المسافة التقريبية بناءً على نوع مقياس معين (مثل المسافة الإقليدية).
Ivf Pq 2
IVF + PQ
يجمع مؤشر IVF_PQ بين نقاط قوة IVF وPQ لتسريع عمليات البحث. تعمل العملية في خطوتين:
التصفية الخشنة باستخدام IVF: يقسم IVF فضاء المتجه إلى مجموعات، مما يقلل من نطاق البحث. بدلاً من تقييم مجموعة البيانات بأكملها، تركز الخوارزمية فقط على المجموعات الأقرب إلى متجه الاستعلام.
المقارنة الدقيقة مع 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 عند إنشاء فهرس.
المعلمة |
الوصف |
نطاق القيمة |
اقتراح الضبط |
|
|---|---|---|---|---|
عامل التجميع |
|
عدد المجموعات المراد إنشاؤها باستخدام خوارزمية k-means أثناء بناء الفهرس. |
النوع: عدد صحيح المدى: [1, 65536] القيمة الافتراضية: |
تعمل القيم الأكبر |
PQ |
|
عدد المتجهات الفرعية (المستخدمة في التكميم) لتقسيم كل متجه عالي الأبعاد إلى متجهات عالية الأبعاد أثناء عملية التكميم. |
النوع: عدد صحيح المدى: [1, 65536] القيمة الافتراضية: لا يوجد |
يمكن لقيمة في معظم الحالات، نوصي بتعيين قيمة ضمن هذا النطاق: [D/8، D]. |
|
عدد البتات المستخدمة لتمثيل فهرس مركزية كل متجه فرعي في النموذج المضغوط. وهو يحدد مباشرةً حجم كل دفتر رموز. سيحتوي كل دفتر شفرات على 2 بت سنترويدات مركزية. على سبيل المثال، إذا تم تعيين |
النوع: عدد صحيح المدى: [1, 24] القيمة الافتراضية: |
تسمح القيمة الأعلى |
بارامترات البحث الخاصة بالفهرس
يسرد الجدول التالي المعلمات التي يمكن تكوينها في search_params.params عند البحث في الفهرس.
المعلمة |
الوصف |
نطاق القيمة |
اقتراح الضبط |
|
|---|---|---|---|---|
عامل التهيئة |
|
عدد المجموعات للبحث عن المرشحين. |
النوع: عدد صحيح المدى: [1, nlist] القيمة الافتراضية: |
تسمح القيم الأعلى بالبحث في المزيد من المجموعات، مما يحسن الاستدعاء من خلال توسيع نطاق البحث ولكن على حساب زيادة زمن استجابة الاستعلام. قم بتعيين في معظم الحالات، نوصي بتعيين قيمة ضمن هذا النطاق: [1, nlist]. |