GPT
B

bge-reranker-base

קוד פתוח

BAAImit2023-09-11

  • sentence-transformers
  • pytorch
  • onnx
  • safetensors
  • xlm-roberta

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

  • 278Mפרמטרים
  • 514טוקנים בהקשר
  • 3.1 GBמשקל הקבצים
  • 3,580,098הורדות בחודש

מה זה

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

הוא מבוסס על ארכיטקטורת XLM-RoBERTa עם 12 שכבות וסביב 278 מיליון פרמטרים. הגודל הזה הופך אותו לגרסה הקלה והמהירה יותר בהשוואה לאחיו הגדול bge-reranker-large, עם פגיעה קלה בלבד ברמת הדיוק לטובת זמני תגובה קצרים.

מתאים ל

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

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

  • שיפור מנועי חיפוש קיימים

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

  • סינון תשובות קצרות

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

איפה זה נופל

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

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

שאלות
נפוצות

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

הכרטיס מצהיר על תמיכה באנגלית ובסינית בלבד. למרות שבבסיס יש רכיבים רב לשוניים של XLM-RoBERTa, אי אפשר להסתמך עליו בעברית בלי לבצע fine-tuning או בדיקה יסודית על הדאטה שלכם.

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

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

איך מפרשים את הציון שהמודל פולט?

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

איך מריצים

אתם יכולים לטעון אותו ישירות דרך ספריית FlagEmbedding או עם transformers ו־sentence-transformers הרגילים בפייתון. הקבצים שוקלים כ־3.1 גיגה בייט בדיוק float32, כך שכל כרטיס מסך בסיסי עם 4 עד 6 גיגה זיכרון מריץ אותו בלי למצמץ, ואפשר לעבוד איתו גם על מעבד רגיל אם התעבורה שלכם נמוכה.

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

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("BAAI/bge-reranker-base")
v = m.encode(["שלום עולם"])

הרישיון

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

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

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