GPT
B

bge-small-zh-v1.5

קוד פתוח

BAAImit2023-09-12

  • transformers
  • pytorch
  • safetensors
  • bert
  • feature-extraction

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

  • 24Mפרמטרים
  • 512טוקנים בהקשר
  • 183 MBמשקל הקבצים
  • 4,862,103הורדות בחודש

מה זה

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

במבחני C-MTEB למשימות בסינית הוא השיג ציון ממוצע של 57.82, כולל 61.77 באחזור מידע ו־70.41 בסיווג זוגות. המספרים האלה מציבים אותו מעל מודלים רב־לשוניים כמו multilingual-e5-small שקיבל 55.38 או text-embedding-ada-002 של OpenAI שהגיע ל־53.02 במבחן הזה. עם זאת, הוא נשאר מוגבל ביחס לגרסאות Base ו־Large של אותה סדרה, שמגיעות לממוצע של מעל 63 ו־64 נקודות.

מתאים ל

  • חיפוש סמנטי בסינית ל־CPU

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

  • סיווג טקסט מקומי מהיר

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

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

    סינון מהיר של 100 התוצאות הראשונות לפני שליחה למודל reranker כבד יותר.

איפה זה נופל

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

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

שאלות
נפוצות

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

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

מדוע ציון הדמיון בין שני משפטים שונים לגמרי יוצא מעל 0.6?

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

האם חובה להוסיף את מחרוזת ההוראה לכל שאילתה?

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

איך מריצים

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

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

from transformers import pipeline

pipe = pipeline("feature-extraction", model="BAAI/bge-small-zh-v1.5")
print(pipe("שלום"))

הרישיון

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

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

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