GPT
B

bce-reranker-base_v1

קוד פתוח

maidalun1020apache-2.02023-12-29

  • sentence-transformers
  • pytorch
  • xlm-roberta
  • text-classification
  • transformers

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

  • 514טוקנים בהקשר
  • 1.1 GBמשקל הקבצים
  • 7,580הורדות בחודש
  • 198לייקים

מה זה

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

המפתחים כיוונו אותו לשלב השני במערכות שליפה, איסוף של בין 50 ל־100 תוצאות ראשוניות ודירוג שלהן כדי להשאיר את 5 עד 10 הקטעים המדויקים ביותר. בבדיקות RAG על גבי LlamaIndex ו־MTEB, המודל שיפר מדדי Hit Rate ו־MRR בהשוואה לשליפה ללא reranker, מה שאומר שהוא מקטין את כמות המידע הלא רלוונטי שנשלח להקשר של מודל השפה.

מתאים ל

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

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

  • חיפוש חוצה שפות במזרח אסיה

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

  • סינון מידע לא רלוונטי לפי סף

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

איפה זה נופל

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

שאלות
נפוצות

האם המודל מתאים לדירוג טקסטים בעברית?

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

איך משתמשים בציונים שהמודל מחזיר כדי לסנן רעש?

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

איך מריצים

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

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

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("maidalun1020/bce-reranker-base_v1")
v = m.encode(["שלום עולם"])

הרישיון

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

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

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