GPT
J

jina-embeddings-v2-base-code

קוד פתוח

jinaaiapache-2.02023-11-17

  • sentence-transformers
  • pytorch
  • onnx
  • safetensors
  • bert

יש כאן גם סקירה על Jina AI עצמו.

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

  • 161Mפרמטרים
  • 8,192טוקנים בהקשר
  • 1.7 GBמשקל הקבצים
  • 374,863הורדות בחודש

מה זה

המודל מחזיק 161 מיליון פרמטרים ומתמחה בחיפוש סמנטי של קוד ובשאלות ותשובות טכניות. הבסיס שלו אומן על מאגר github-code, ואחר כך עבר כוונון על יותר מ־150 מיליון זוגות של שאלות, תשובות, תיעוד וקוד מקור. הוא מכסה אנגלית לצד 30 שפות תכנות וסביבות פיתוח שונות, כולל פייתון, ג'אווה, ראסט, שפות שיל ו־SQL.

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

מתאים ל

  • חיפוש סמנטי במאגרי קוד

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

  • שליפת הקשר למערכות RAG

    שליפת קבצים מלאים של עד 8,192 טוקנים עבור עוזרי פיתוח ומודלי שפה בלי לקטוע פונקציות.

  • הצמדת תיעוד למימושים

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

איפה זה נופל

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

שאלות
נפוצות

האם המודל מבין הערות או שאלות בעברית?

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

למה חייבים להגדיר trust_remote_code בזמן הטעינה?

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

האם כדאי להגביל את אורך הקלט אם רוב הקוד שלי קצר?

כן. שימוש בחלון המלא של 8,192 טוקנים מאט את החישוב ומנצל יותר זיכרון. אם הקבצים שלכם קצרים יותר, מומלץ להגדיר ידנית פרמטר max_length קצר יותר של 1,024 או 2,048 כדי לקצר את זמני הריצה.

איך מריצים

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

אפשר להריץ אותו ישירות גם ב־JavaScript באמצעות ספריית Transformers.js, כולל גרסה מכווצת ל־8 ביט. אם נפח השאילתות שלכם קטן מאוד או שאתם בונים אב טיפוס מהיר, שימוש ב־API של Jina חוסך תחזוקת תשתית, אבל למערכות עם שימוש רציף שווה בהחלט להרים מופע עצמאי.

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("jinaai/jina-embeddings-v2-base-code")
v = m.encode(["שלום עולם"])

הרישיון

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

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

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