GPT
C

colbert-xm

קוד פתוח

antoinelouismit2024-02-16

  • colbert-ai
  • safetensors
  • xmod
  • colbert
  • multi-vector

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

  • 853Mפרמטרים
  • 514טוקנים בהקשר
  • 3.2 GBמשקל הקבצים
  • 17,326הורדות בחודש

מה זה

הארכיטקטורה כאן נשענת על שילוב בין ColBERT לבסיס של XMOD. במקום להפוך פסקה שלמה לווקטור יחיד שמטשטש פרטים קטנים, הוא מייצר וקטור בנפח 128 ממדים לכל טוקן בנפרד, ומחשב את הדמיון בעזרת מנגנון MaxSim בסוף. היתרון הגדול הוא היכולת ללמוד רק מדאטהסט באנגלית, 6.4 מיליון שלשות מתוך MS MARCO עם דגימות שליליות קשות, ולעשות מזה הכללה ישירה לשפות אחרות בלי לראות אותן באימון.

במבחני mMARCO הוא הגיע לציון ממוצע של 26.2 ב־MRR@10, שזה מעט נמוך מ־mColBERT שעומד על 26.5 או cross-encoders כבדים שמגיעים לאזור ה־28. איפה שהוא כן מבריק זה במבחן Mr. TyDi לשפות עם פחות משאבים, שם הוא השיג Recall@100 ממוצע של 87.5 לעומת 83.7 של mColBERT. זה אומר שהוא מוצא יותר תוצאות רלוונטיות באוסף גדול, גם אם הדירוג המדויק של המקום הראשון מעט פחות חד בחלק מהשפות.

מתאים ל

  • חיפוש סמנטי במאגר רב-לשוני

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

  • שלב שליפה ראשוני ל־RAG

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

  • שליפה בשפות דלות משאבים

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

איפה זה נופל

החיסרון המרכזי לקורא הישראלי הוא שאין פה בדיקה רשמית על עברית. רשימת השפות כוללת ערבית, רוסית, גרמנית, ספרדית ועוד, אבל עברית לא נמדדה בדוחות הביצועים. בנוסף, חלון ההקשר קצר מאוד: 514 טוקנים לכל היותר, כשבאימון עצמו קבעו תקרה של 256 טוקנים למסמך ו־32 טוקנים לשאילתה. אי אפשר לזרוק עליו מסמכים ארוכים או חוזים בלי לחתוך אותם לפסקאות קצרות קודם. נקודה נוספת היא התוצאות ב־mMARCO, שבהן הוא הפסיד למודלים של וקטור יחיד כמו mE5-base בחלק מהשפות המרכזיות.

שאלות
נפוצות

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

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

במה הוא שונה ממודל רגיל כמו mE5?

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

איך מריצים

המשקל הכולל של הקבצים עומד על 3.2 גיגה-בייט, כך שכל כרטיס מסך בסיסי עם 8 או 12 גיגה זיכרון יספיק להרצה מקומית בלי מאמץ. אפשר לטעון אותו דרך ספריית Sentence Transformers מגרסה 6.0 ומעלה באמצעות MultiVectorEncoder, או דרך החבילה של colbert-ai עם PyTorch ו־Faiss.

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

pip install -U huggingface_hub
hf download antoinelouis/colbert-xm

הרישיון

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

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

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