GPT
M

multi-qa-mpnet-base-dot-v1

קוד פתוח

sentence-transformersרישיון לא דווח2022-03-02

  • sentence-transformers
  • pytorch
  • onnx
  • safetensors
  • openvino

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

  • 109Mפרמטרים
  • 514טוקנים בהקשר
  • 3.6 GBמשקל הקבצים
  • 1,694,110הורדות בחודש

מה זה

הבסיס כאן הוא ארכיטקטורת MPNet עם 109 מיליון פרמטרים ו־12 שכבות, שהותאמה ספציפית לחיפוש תשובות מתוך טקסטים. במקום להסתפק בהשוואת דמיון כללי בין משפטים, אימנו אותו על מאגר עצום של 214,988,242 זוגות שנאספו ממקורות כמו WikiAnswers, Stack Exchange ו־MS MARCO. המטרה שלו היא למצוא פסקה שעונה על שאלה, ולא רק פסקה שמנוסחת בצורה דומה.

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

מתאים ל

  • חיפוש תשובות באנגלית

    הוא מתאים לאיתור תשובה מתוך מאגרי ידע, בזכות אימון על 215 מיליון זוגות שאלה ותשובה.

  • שליפת מידע טכני

    הוא כולל מיליוני דוגמאות מ־Stack Exchange ולכן יודע לקשר בין שאלות קוד להסברים מתאימים.

  • מנוע חיפוש פנימי ב־TEI

    הוא נתמך ישירות ב־Text Embeddings Inference ומאפשר חיפוש מהיר מקומית בלי תלות ברשת.

איפה זה נופל

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

שאלות
נפוצות

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

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

למה התוצאות יוצאות לא הגיוניות בבסיס הנתונים הוקטורי שלי?

המודל מייצר וקטורים שאינם מנורמלים ומחייב שימוש בחישוב dot product. אם בסיס הנתונים שלכם מוגדר כברירת מחדל על cosine similarity, הדירוג ישתבש לחלוטין.

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

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

איך מריצים

אתם יכולים לטעון אותו בפייתון ישירות דרך ספריית sentence-transformers עם שתי שורות קוד, או להרים אותו בקונטיינר דרך Text Embeddings Inference של Hugging Face. הקבצים שוקלים 3.6 ג'יגה בייט, כך שהוא רץ בלי בעיה על מעבד רגיל של שרת או מחשב פיתוח, ועל GPU פשוט עם תמיכה ב־float16 הוא מייצר וקטורים בקצב מהיר מאוד.

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

from sentence_transformers import SentenceTransformer

m = SentenceTransformer("sentence-transformers/multi-qa-mpnet-base-dot-v1")
v = m.encode(["שלום עולם"])

הרישיון

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

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