GPT
M

ms-marco-MiniLM-L12-v2

קוד פתוח

cross-encoderapache-2.02022-03-02

  • sentence-transformers
  • pytorch
  • jax
  • onnx
  • safetensors

זה מודל קטן לדירוג מחדש של תוצאות חיפוש, שמשווה שאילתה ישירות מול פסקאות. הוא מתאים למי שרוצה לדייק את תוצאות החיפוש בלי להחזיק תשתית כבדה.

  • 33Mפרמטרים
  • 512טוקנים בהקשר
  • 1.2 GBמשקל הקבצים
  • 1,687,841הורדות בחודש

מה זה

במקום לייצר וקטור נפרד לכל טקסט, המודל הזה מקבל זוג של שאילתה וקטע טקסט יחד, ופולט ציון התאמה ישיר דרך BertForSequenceClassification. הוא אומן על משימת דירוג הפסקאות של MS Marco, ולכן הוא מיועד לשלב השני בצינור אחזור מידע, אחרי ששולפים מועמדים ממנוע כמו אלסטיק וממיינים אותם מהגבוה לנמוך.

במדדים שפורסמו הוא מציג NDCG@10 של 74.31 במבחן TREC DL 19 וציון MRR@10 של 39.02 על MS Marco. מול גרסת שש השכבות בסדרה, מדובר בשיפור זניח לחלוטין של מאיות הנקודה, בזמן שקצב העבודה שלו נחתך כמעט בחצי ל־960 מסמכים בשנייה על מעבד גרפי מסוג V100.

מתאים ל

  • דירוג תוצאות אלסטיקסרץ'

    סינון ודירוג מחדש של עשרות התוצאות הראשונות שחזרו ממנוע חיפוש טקסטואלי.

  • שלב שני במערכות RAG

    צמצום כמות הקטעים שנשלחים להקשר של מודל יוצר באנגלית כדי למנוע רעש.

  • מענה לשאלות על מסמכים

    בחירת הפסקה המדויקת ביותר מתוך מקורות קצרים שנשלפו סביב שאלה מוגדרת.

איפה זה נופל

המודל אומן רק על אנגלית. אם תריצו אותו על עברית, הדירוג יישבר לחלוטין ואין מה לבנות עליו במערכות מקומיות. בנוסף, חלון ההקשר מוגבל ל־512 טוקנים לשאילתה ולפסקה יחד. טקסט ארוך ייחתך ויאבד הקשר קריטי, והארכיטקטורה דורשת חישוב מלא לכל זוג, מה שהופך סריקה של יותר מכמה עשרות מסמכים לצוואר בקבוק.

שאלות
נפוצות

האם אפשר להשתמש בו לחיפוש בעברית?

לא. המודל אומן רק על אנגלית וידע השפה שלו מוגבל לטקסטים לועזיים. בשביל חיפוש בעברית תצטרכו לחפש מודל רב־לשוני.

למה לא להשתמש בגרסת L6 במקומו?

ברוב המקרים L6 אכן עדיף. ההבדל בדיוק ביניהם עומד על 0.01 בלבד במדד NDCG@10, אבל L6 מהיר כמעט פי שניים בעיבוד המסמכים.

איך מריצים

טוענים אותו ישירות דרך ספריית sentence-transformers עם מחלקת CrossEncoder, או דרך Transformers הרגילה באמצעות AutoModelForSequenceClassification. עם 33 מיליון פרמטרים ומשקל קבצים של 1.2 גיגה־בייט, אין שום צורך בחומרה מיוחדת ואפשר להריץ אותו בלי בעיה על מעבד רגיל או כרטיס מסך בסיסי.

אם אתם שוקלים בין הגרסאות, דגם ה־L6 כנראה עדיף כי הוא נותן אותם ביצועי דירוג כמעט בדיוק ומעבד 1800 מסמכים בשנייה מול 960 כאן. אין שום סיבה לשלם ל־API חיצוני על משימה קטנה כזו, ההרצה העצמית פשוטה וזולה.

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("cross-encoder/ms-marco-MiniLM-L12-v2")
v = m.encode(["שלום עולם"])

הרישיון

רישיון apache-2.0 מתיר שימוש מסחרי מלא, שינוי של הקוד והפצה פנימית או כחלק ממוצר. התנאי היחיד הוא שמירה על הודעת זכויות היוצרים והרישיון המקורי, בלי אחריות משפטית מצד המפתחים.

  • שימוש מסחרי
  • שינוי הקוד
  • הפצה מחדש
  • שימוש בפטנטים

הרישיון המלא בעמוד המודל ↗