GPT
M

ms-marco-TinyBERT-L2-v2

קוד פתוח

cross-encoderapache-2.02022-03-02

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

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

  • 4Mפרמטרים
  • 512טוקנים בהקשר
  • 165 MBמשקל הקבצים
  • 480,636הורדות בחודש

מה זה

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

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

מתאים ל

  • רירנקינג מהיר בחיפוש

    סינון ומיון של עשרות תוצאות מ־ElasticSearch בזמן אמת בלי להעמיס על השרת.

  • עבודה על חומרת מעבד

    דירוג טקסטים מהיר בסביבות ייצור דלות תקציב שרצות בלי כרטיסי מסך יקרים.

  • סינון ראשוני בצינור RAG

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

איפה זה נופל

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

שאלות
נפוצות

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

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

למה לבחור בו במקום בגרסת MiniLM החזקה יותר?

הסיבה היחידה היא מהירות קיצונית. הוא מעבד 9,000 מסמכים בשנייה לעומת 4,100 בגרסת MiniLM-L2 או פחות מזה בגדולות יותר, מה שמתאים למי שחייב תגובה מיידית בנפחי תנועה גבוהים.

איך מריצים

טוענים אותו ישירות דרך ספריית sentence-transformers עם פקודת CrossEncoder פשוטה, או דרך transformers עם BertForSequenceClassification. המשקל הכולל יושב על 165 מגה־בייט, כך שהוא נכנס בקלות לזיכרון של כל מעבד סטנדרטי בלי לבקש כרטיס מסך ייעודי.

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

from sentence_transformers import SentenceTransformer

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

הרישיון

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

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

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