GPT
B

bge-reranker-large

קוד פתוח

BAAImit2023-09-12

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

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

  • 560Mפרמטרים
  • 514טוקנים בהקשר
  • 6.3 GBמשקל הקבצים
  • 2,639,543הורדות בחודש

מה זה

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

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

מתאים ל

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

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

  • שיפור מנועי חיפוש באנגלית

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

  • אימון עם דוגמאות קשות

    זיהוי ודליית תוצאות שנראות דומות אך אינן נכונות כדי לחדד מודלי אחזור וקטוריים קטנים יותר.

איפה זה נופל

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

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

שאלות
נפוצות

למה שהציון שהמודל מחזיר יהיה שלילי או גדול מ־1?

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

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

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

איך מריצים

טוענים אותו ישירות דרך ספריית FlagEmbedding או דרך transformers עם מחלקת AutoModelForSequenceClassification. הקבצים שוקלים 6.3 גיגהבייט ב־float32, כך שכדי להריץ אותו עם זמני תגובה סבירים בייצור תצטרכו כרטיס מסך עם לפחות 8 גיגהבייט זיכרון, רצוי במצב fp16 שמקצר את זמני הריצה בלי פגיעה מורגשת בדיוק.

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

from transformers import pipeline

pipe = pipeline("feature-extraction", model="BAAI/bge-reranker-large")
print(pipe("שלום"))

הרישיון

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

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

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