GPT
N

nomic-embed-code

קוד פתוח

nomic-aiapache-2.02025-03-24

  • sentence-transformers
  • safetensors
  • qwen2
  • sentence-similarity
  • feature-extraction

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

  • 7.1Bפרמטרים
  • 32,768טוקנים בהקשר
  • 26.4 GBמשקל הקבצים
  • 472,804הורדות בחודש

מה זה

מדובר במודל מבוסס ארכיטקטורת Qwen2 עם 7.1 מיליארד פרמטרים, שנבנה למשימה אחת ברורה, לקחת קטעי קוד או שאלות טקסטואליות ולהמיר אותם למרחב וקטורי. הוא אומן על מאגר CoRNStack, שמבוסס על גרסה מסוננת של Stackv2, ומשתמש בשיטות סינון כפולות כדי להבטיח שקטעי הקוד והתיעוד שלהם אכן תואמים סמנטית. חלון ההקשר עומד על 32,768 טוקנים, מה שמאפשר לבלוע קבצי קוד שלמים ולא רק פונקציות קצרות.

במדד CodeSearchNet הוא עוקף את Voyage Code 3 ואת המודל הגדול של OpenAI ברוב השפות שנבדקו, כולל פייתון עם ציון של 81.7 ו־Go עם 93.8. המשמעות בפועל היא שבשליפת קוד מתוך מאגרים גדולים, ההתאמה בין מה שהמשתמש חיפש לבין הקוד שתקבלו מדויקת יותר ממה שמקבלים ממודלים מסחריים מובילים. עם זאת, ברובי ובג'אווהסקריפט Voyage עדיין מוביל עליו בקטנה, כך שלא בכל שפה הוא לוקח מקום ראשון.

מתאים ל

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

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

  • מערכות RAG לקוד

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

  • זיהוי שכפול קוד

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

איפה זה נופל

האימון התמקד בשש שפות בלבד: פייתון, ג'אווה, רובי, PHP, ג'אווהסקריפט ו־Go. אם בסיס הקוד כולל C++, ראסט, סקאלה או C#, אין נתונים על הביצועים שלו וסביר להניח שהדיוק יירד דרסטית. מעבר לזה, תהליך הסינון של דאטה-סט האימון הסיר מראש כל תיעוד שלא היה באנגלית. אם תנסו לחפש קוד באמצעות שאילתות בעברית, סיכוי קלוש שהמודל יבין מה אתם רוצים. החומרה הדרושה להרצה של מודל אמבדינג בגודל 7 מיליארד פרמטרים היא צוואר בקבוק רציני, במיוחד בזמן תגובה לעומת מודלים קטנים בהרבה.

שאלות
נפוצות

האם המודל תומך בשפות תכנות נוספות מעבר לשש שנבדקו?

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

למה צריך מודל הטמעה בגודל 7B במקום מודל קל יותר?

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

איך מפעילים אותו נכון עבור שאילתות חיפוש?

בזמן הרצה עם sentence-transformers, חובה להעביר את הפרמטר prompt_name='query' לשאילתה. קטעי הקוד עצמם מקודדים ללא הפרמטר הזה, וההפרדה חיונית לקבלת דמיון וקטורי נכון.

איך מריצים

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

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

from sentence_transformers import SentenceTransformer

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

הרישיון

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

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

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