🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • 🔎 اختر محرك بحث تشابه التضمين

🔎 اختر محرك بحث تشابه التضمين

  • Scenarios
September 08, 2020
milvus

تطبيق Wanyin عبارة عن مجتمع لمشاركة الموسيقى قائم على الذكاء الاصطناعي بهدف تشجيع مشاركة الموسيقى وتسهيل التأليف الموسيقي لعشاق الموسيقى.

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

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

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

🔎 اختر محرك بحث تشابه التضمين

الآن بعد أن أصبح لدينا متجهات الميزات، فإن المشكلة المتبقية هي كيفية استرداد المتجهات المشابهة للمتجه الهدف من الحجم الكبير من المتجهات. عندما يتعلق الأمر بمحرك بحث التضمينات، كنا نفاضل بين Faiss و Milvus. لقد لاحظت Milvus عندما كنت أتصفح مستودعات GitHub الشائعة في نوفمبر 2019. ألقيت نظرة على المشروع وقد أعجبني بواجهات برمجة التطبيقات المجردة الخاصة به. (كان في الإصدار 0.5.x في ذلك الوقت والإصدار 0.10.2 الآن).

نحن نفضل ميلفوس على فايس. فمن ناحية، لقد استخدمنا Faiss من قبل، وبالتالي نرغب في تجربة شيء جديد. من ناحية أخرى، مقارنةً بـ Milvus، فإن Faiss أكثر من مكتبة أساسية، وبالتالي ليست ملائمة تمامًا للاستخدام. عندما تعلمنا المزيد عن Milvus، قررنا أخيرًا اعتماد Milvus لميزتيه الرئيسيتين:

  • ميلفوس سهل الاستخدام للغاية. كل ما عليك فعله هو سحب صورة Docker الخاصة به وتحديث المعلمات بناءً على السيناريو الخاص بك.
  • يدعم المزيد من الفهارس ولديه وثائق داعمة مفصلة.

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

خدمة العنقودية ميلفوس العنقودية ☸️ ⏩ ⏩

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

يوفر Milvus كلاً من Mishards، وهو برنامج وسيط لتجزئة الكتلة و Milvus-Helm للتكوين. عملية نشر خدمة مجموعة ميلفوس العنقودية بسيطة. نحتاج فقط إلى تحديث بعض المعلمات وتعبئتها للنشر في Kubernetes. يوضح الرسم البياني أدناه من وثائق ميلفوس كيفية عمل ميشاردز:

1-how-mishards-works-in-milvus-documentation.png 1-كيف يعمل ميشاردز في وثائق ميلفوس-documentation.png

تقوم Mishards بتسلسل الطلب من المنبع إلى وحداته الفرعية التي تقسم الطلب من المنبع، ثم تجمع نتائج الخدمات الفرعية وتعيدها إلى المنبع. فيما يلي البنية الشاملة للحل العنقودي القائم على Mishards:

2-mishards-based-cluster-solution-architecture.jpg 2-الحل العنقودي القائم على ميشاردز-حل عنقودي-معماري.jpg

توفر الوثائق الرسمية مقدمة واضحة عن Mishards. يمكنك الرجوع إلى Mishards إذا كنت مهتمًا.

في نظامنا للتوصية بالموسيقى، قمنا بنشر عقدة واحدة قابلة للكتابة، وعقدتين للقراءة فقط، ومثيل واحد من برمجيات Mishards الوسيطة في Kubernetes، باستخدام Milvus-Helm. بعد أن كانت الخدمة تعمل بثبات في بيئة FAT لفترة من الوقت، قمنا بنشرها في الإنتاج. لقد كانت مستقرة حتى الآن.

🎧 توصية موسيقى I2I 🎶

كما ذكرنا أعلاه، قمنا ببناء نظام Wanyin's I2I للتوصية بالموسيقى باستخدام التضمينات المستخرجة من الأغاني الموجودة. أولاً، قمنا أولاً بفصل الصوت عن BGM (فصل المسارات) لأغنية جديدة قام المستخدم بتحميلها واستخرجنا تضمينات BGM كتمثيل مميز للأغنية. يساعد هذا أيضًا في فرز نسخ الغلاف للأغاني الأصلية. بعد ذلك، قمنا بعد ذلك بتخزين هذه التضمينات في Milvus، وبحثنا عن الأغاني المتشابهة بناءً على الأغاني التي استمع إليها المستخدم، ثم قمنا بفرز الأغاني المسترجعة وإعادة ترتيبها لإنشاء توصيات موسيقية. عملية التنفيذ موضحة أدناه:

3-music-recommender-system-implementation.png 3-نظام-توصيات-الموسيقى-التنفيذ.png

🚫 مرشح الأغاني المكررة

سيناريو آخر نستخدم فيه ميلفوس هو تصفية الأغاني المكررة. يقوم بعض المستخدمين بتحميل نفس الأغنية أو المقطع عدة مرات، وقد تظهر هذه الأغاني المكررة في قائمة التوصيات. هذا يعني أنه سيؤثر على تجربة المستخدم في إنشاء توصيات بدون معالجة مسبقة. لذلك، نحتاج إلى اكتشاف الأغاني المكررة والتأكد من عدم ظهورها في نفس القائمة من خلال المعالجة المسبقة.

السيناريو الآخر الذي نستخدم فيه Milvus هو تصفية الأغاني المكررة. حيث يقوم بعض المستخدمين بتحميل نفس الأغنية أو المقطع عدة مرات، وقد تظهر هذه الأغاني المكررة في قائمة التوصيات. هذا يعني أنه سيؤثر على تجربة المستخدم لإنشاء توصيات بدون معالجة مسبقة. لذلك، نحتاج إلى اكتشاف الأغاني المكررة والتأكد من عدم ظهورها في نفس القائمة من خلال المعالجة المسبقة.

كما هو الحال مع السيناريو السابق، قمنا بتنفيذ تصفية الأغاني المكررة عن طريق البحث عن متجهات الميزات المتشابهة. أولاً، قمنا بفصل الصوت عن BGM واسترجعنا عددًا من الأغاني المتشابهة باستخدام Milvus. من أجل تصفية الأغاني المكررة بدقة، استخرجنا البصمات الصوتية للأغنية المستهدفة والأغاني المتشابهة (باستخدام تقنيات مثل Echoprint و Chromaprint وغيرها)، وقمنا بحساب التشابه بين البصمة الصوتية للأغنية المستهدفة مع كل بصمة من بصمات الأغاني المتشابهة. إذا تجاوز التشابه العتبة، فإننا نعرّف الأغنية على أنها نسخة مكررة من الأغنية الهدف. تجعل عملية مطابقة البصمات الصوتية عملية تصفية الأغاني المكررة أكثر دقة، ولكنها تستغرق وقتًا طويلاً أيضًا. ولذلك، عندما يتعلق الأمر بتصفية الأغاني في مكتبة موسيقية ضخمة، فإننا نستخدم Milvus لتصفية الأغاني المكررة المرشحة كخطوة أولية.

4-using-milvus-filter-songs-music-recommender-duplicates.png 4-استخدام-استخدام-ميلفوس-تصفية-الأغاني-الموسيقي-المُوصِي-الموسيقى-المُكرّر.png

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

يمكنك تنزيل تطبيق Wanyin 🎶 وتجربته. (ملاحظة: قد لا يكون متاحًا في جميع متاجر التطبيقات).

المؤلفون:

جيسون، مهندس خوارزميات في شركة ستيب بيتس شيو تشين، مهندس بيانات في زيليز

📚 المراجع:

مستندات ميشاردز: https://milvus.io/docs/v0.10.2/mishards.md ميشاردز: https://github.com/milvus-io/milvus/tree/master/shards ميلفوس-هيلم: https://github.com/milvus-io/milvus-helm/tree/master/charts/milvus

🤗 لا تكن غريبًا، تابعنا على تويتر أو انضم إلينا على سلاك! 👇🏻

Like the article? Spread the word

استمر في القراءة