GPT
C

CodeRankEmbed

קוד פתוח

nomic-aimit2024-11-03

  • sentence-transformers
  • safetensors
  • nomic_bert
  • custom_code

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

  • 137Mפרמטרים
  • 8,192טוקנים בהקשר
  • 523 MBמשקל הקבצים
  • 139,506הורדות בחודש

מה זה

מדובר במודל bi-encoder מבוסס NomicBertModel שעבר אימון ניגודי על בסיס נתונים של 21 מיליון דוגמאות בשם CoRNStack. נקודת ההתחלה שלו היא המודל Arctic-Embed-M-Long, מה שנותן לו יתרון ברור של חלון הקשר שמגיע ל־8,192 טוקנים, תכונה קריטית כשרוצים לתפוס פונקציות ארוכות או קבצי קוד שלמים ולא רק שורות בודדות.

במבחני הביצועים של CSN ו־CoIR הוא עוקף בקלות מודלים ידועים. הוא הוציא ציון של 77.9 ב־CSN ו־60.1 ב־CoIR, כשהוא משאיר מאחור מודלים כמו OpenAI-Ada-002, Voyage-Code-002, ואפילו את CodeSage-Large שמחזיק מעל מיליארד פרמטרים. בפועל, המשמעות היא דיוק גבוה יותר בחיפוש קוד רלוונטי לפי תיאור מילולי, בלי לשלם על מודל כבד שחונק את השרת.

מתאים ל

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

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

  • שכבת אחזור ראשונית ב־RAG

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

  • אינדוקס קבצי קוד ארוכים

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

איפה זה נופל

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

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

שאלות
נפוצות

האם אני יכול להשתמש בו כדי לתקן או לייצר קוד?

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

למה התוצאות של החיפוש לא יוצאות מדויקות?

יש לוודא שהוספתם לכל שאילתה את הטקסט המדויק שהיוצרים דורשים: Represent this query for searching relevant code, בלעדיו המודל לא מבין את המשימה כראוי.

איך מריצים

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

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

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("nomic-ai/CodeRankEmbed")
v = m.encode(["שלום עולם"])

הרישיון

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

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

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