إعادة الترتيب
يتيح Milvus إمكانات البحث المختلط باستخدام واجهة برمجة التطبيقات hybrid_search() ، التي تتضمن استراتيجيات إعادة ترتيب متطورة لتحسين نتائج البحث من مثيلات AnnSearchRequest
متعددة. يغطي هذا الموضوع عملية إعادة التصنيف، ويشرح أهميتها وتنفيذ استراتيجيات إعادة التصنيف المختلفة في ملفوس.
نظرة عامة
يوضح الشكل التالي تنفيذ البحث الهجين في ملفوس ويبرز دور إعادة الترتيب في العملية.
تُعد إعادة الترتيب في البحث الهجين خطوة حاسمة تدمج النتائج من عدة حقول متجهة، مما يضمن أن يكون الناتج النهائي ملائمًا ومحدد الأولويات بدقة. يقدم ميلفوس حاليًا استراتيجيات إعادة الترتيب هذه:
WeightedRanker
: يدمج هذا النهج النتائج عن طريق حساب متوسط مرجح للنتائج (أو مسافات المتجهات) من عمليات بحث متجهات مختلفة. ويقوم بتعيين أوزان بناءً على أهمية كل حقل متجه.RRFRanker
: تجمع هذه الاستراتيجية بين النتائج بناءً على رتبها عبر أعمدة المتجهات المختلفة.
الدرجات المرجحة (WeightedRanker)
تقوم إستراتيجية WeightedRanker
بتعيين أوزان مختلفة للنتائج من كل مسار استرجاع متجه بناءً على أهمية كل حقل متجه. يتم تطبيق إستراتيجية إعادة الترتيب هذه عندما تختلف أهمية كل حقل متجه، مما يسمح لك بالتركيز على حقول متجهات معينة على غيرها من خلال تعيين أوزان أعلى لها. على سبيل المثال، في بحث متعدد الوسائط، يمكن اعتبار الوصف النصي أكثر أهمية من توزيع الألوان في الصور.
تتم العملية الأساسية لـ WeightedRanker على النحو التالي:
جمع الدرجات أثناء الاسترجاع: جمع النتائج ودرجاتها من مسارات استرجاع المتجهات المختلفة.
تطبيع النتائج: تطبيع الدرجات من كل مسار إلى نطاق [0،1]، حيث تشير القيم الأقرب إلى 1 إلى أهمية أعلى. يعد هذا التطبيع أمرًا بالغ الأهمية نظرًا لاختلاف توزيعات الدرجات باختلاف أنواع المقاييس. على سبيل المثال، تتراوح المسافة لبروتوكول الإنترنت من [- ∞، + ∞]، بينما تتراوح المسافة لـ L2 من [0، + ∞]. يستخدم ميلفوس الدالة
arctan
، ويحول القيم إلى النطاق [0،1] لتوفير أساس موحد لأنواع المقاييس المختلفة.تخصيص الوزن: تعيين وزن
w𝑖
لكل مسار استرجاع المتجهات. يقوم المستخدمون بتحديد الأوزان التي تعكس موثوقية مصدر البيانات أو دقته أو المقاييس الأخرى ذات الصلة. يتراوح كل وزن من [0،1].دمج النقاط: حساب متوسط مرجح للدرجات الموزونة لاشتقاق الدرجة النهائية. يتم بعد ذلك ترتيب النتائج بناءً على هذه الدرجات من الأعلى إلى الأدنى لتوليد النتائج النهائية المصنفة.
الموزون الموزون الموزون
لاستخدام هذه الإستراتيجية، قم بتطبيق مثيل WeightedRanker
وقم بتعيين قيم الترجيح عن طريق تمرير عدد متغير من الوسيطات الرقمية.
from pymilvus import WeightedRanker
# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7)
لاحظ أن:
تتراوح كل قيمة ترجيحية من 0 (الأقل أهمية) إلى 1 (الأكثر أهمية)، مما يؤثر على النتيجة المجمعة النهائية.
يجب أن يكون العدد الإجمالي لقيم الترجيح المقدمة في
WeightedRanker
مساويًا لعدد مثيلاتAnnSearchRequest
التي قمت بإنشائها سابقًا.تجدر الإشارة إلى أنه نظرًا لاختلاف قياسات أنواع المقاييس المختلفة، فإننا نقوم بتطبيع مسافات نتائج الاستدعاء بحيث تقع في الفترة [0،1]، حيث يعني الرقم 0 اختلافًا و1 تشابهًا. ستكون النتيجة النهائية هي مجموع قيم الترجيح والمسافات.
دمج الرتب المتبادل (RRFRanker)
RRRF هي طريقة دمج البيانات التي تجمع بين قوائم الترتيب بناءً على مقلوب رتبها. إنها طريقة فعالة لموازنة تأثير كل حقل متجه، خاصةً عندما لا يكون هناك أسبقية واضحة للأهمية. تُستخدم هذه الاستراتيجية عادةً عندما ترغب في إعطاء اعتبار متساوٍ لجميع الحقول المتجهة أو عندما يكون هناك عدم يقين بشأن الأهمية النسبية لكل حقل.
وتتم العملية الأساسية لـ RRF على النحو التالي:
جمع التصنيفات أثناء الاسترجاع: تقوم المسترجعات عبر حقول متجهات متعددة باسترجاع النتائج وفرزها.
دمج الرتب: تقوم خوارزمية RRF بموازنة ودمج الرتب من كل مسترجع. الصيغة كالتالي:
RRF-ranker
هنا، ع يمثل عدد مسارات الاسترجاع المختلفة، ورتبة ت(ف) هي موضع رتبة المستند المسترجع ف بواسطة المسترجع ت، وك هو معامل تنعيم، وعادةً ما يتم تعيينه إلى 60.
الترتيب الشامل: إعادة ترتيب النتائج المسترجعة بناءً على الدرجات المجمعة للحصول على النتائج النهائية.
لاستخدام هذه الاستراتيجية، قم بتطبيق مثيل RRFRanker
.
from pymilvus import RRFRanker
# Default k value is 60
ranker = RRFRanker()
# Or specify k value
ranker = RRFRanker(k=100)
يسمح RRRF بموازنة التأثير عبر الحقول دون تحديد أوزان صريحة. سيتم إعطاء الأولوية لأفضل التطابقات المتفق عليها من قبل الحقول المتعددة في الترتيب النهائي.