הצגת הטמעות טקסט וקוד ב-OpenAI API PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

היכרות עם הטמעות טקסט וקוד ב- OpenAI API

היכרות עם הטמעות טקסט וקוד ב- OpenAI API

אנו מציגים הטמעות, נקודת קצה חדשה ב-OpenAI API המאפשרת לבצע בקלות משימות שפה וקוד טבעיים כמו חיפוש סמנטי, אשכולות, מודלים של נושאים וסיווג. הטבעות הן ייצוגים מספריים של מושגים המומרים לרצפי מספרים, מה שמקל על מחשבים להבין את הקשרים בין מושגים אלה. ההטמעות שלנו עולות על הדגמים המובילים ב-3 מדדים סטנדרטיים, כולל שיפור יחסי של 20% בחיפוש הקוד.

קרא תיעודקרא נייר

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

היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API

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

היכרות עם הטמעות טקסט וקוד ב- OpenAI API
היכרות עם הטמעות טקסט וקוד ב- OpenAI API

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

DELETE THIS / embeddings נקודת קצה ב- ממשק API של OpenAI מספק הטמעת טקסט וקוד עם כמה שורות קוד:

import openai
response = openai.Embedding.create( input="canine companions say", engine="text-similarity-davinci-001")

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

מודלים השתמש במקרים
דמיון טקסט: לוכד דמיון סמנטי בין פיסות טקסט. text-similarity-{ada, babbage, curie, davinci}-001 מקבץ, רגרסיה, זיהוי אנומליה, הדמיה
חיפוש טקסטים: אחזור מידע סמנטי על פני מסמכים. text-search-{ada, babbage, curie, davinci}-{query, doc}-001 חיפוש, רלוונטיות ההקשר, אחזור מידע
חיפוש קוד: מצא קוד רלוונטי עם שאילתה בשפה טבעית. code-search-{ada, babbage}-{code, text}-001 חיפוש קוד ורלוונטיות

מודלים של דמיון טקסט

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

ההדמיה האינטראקטיבית הבאה מציגה הטמעות של דוגמאות טקסט ממערך הנתונים של DBpedia:

גרור כדי להזיז, לגלול או לצבוט כדי להתקרב

הטבעות מה text-similarity-babbage-001 מודל, מיושם על DBpedia מערך נתונים. בחרנו באקראי 100 דגימות ממערך הנתונים המכסה 5 קטגוריות, וחישבנו את ההטמעות באמצעות / embeddings נקודת קצה. הקטגוריות השונות מופיעות כ-5 אשכולות ברורים בחלל ההטמעה. כדי להמחיש את חלל ההטמעה, צמצמנו את מימד ההטמעה מ-2048 ל-3 באמצעות PCA. הקוד לאיך להמחיש מרחב הטבעה בממד תלת מימד זמין כאן.

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

import openai, numpy as np resp = openai.Embedding.create( input=["feline friends go", "meow"], engine="text-similarity-davinci-001") embedding_a = resp['data'][0]['embedding']
embedding_b = resp['data'][1]['embedding'] similarity_score = np.dot(embedding_a, embedding_b)

אחד השימושים הפופולריים בהטמעות הוא להשתמש בהן כתכונות במשימות למידת מכונה, כגון סיווג. בספרות למידת מכונה, בעת שימוש במסווג ליניארי, משימת סיווג זו נקראת "בדיקה ליניארית". מודלים של דמיון טקסטים שלנו משיגים תוצאות מתקדמות חדשות בסיווג בדיקה ליניארי ב SentEval (Conneau et al., 2018), אמת מידה נפוץ להערכת איכות ההטמעה.

סיווג בדיקה ליניארי על פני 7 מערכי נתונים
SOTA הקודם (Gao et al. 2021)
90.2%
text-similarity-davinci-001
92.2%
להראות יותר

מודלים לחיפוש טקסט

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

חיפוש מבוסס הטבעה יכול להכליל טוב יותר מאשר טכניקות חפיפת מילים המשמשות בחיפוש מילות מפתח קלאסי, מכיוון שהוא לוכד את המשמעות הסמנטית של טקסט ופחות רגיש לביטויים או מילים מדויקות. אנו מעריכים את הביצועים של מודל חיפוש הטקסט ב- BEIR (Thakur, et al. 2021) חבילת הערכת חיפוש ולקבל ביצועי חיפוש טובים יותר משיטות קודמות. שֶׁלָנוּ מדריך לחיפוש טקסט מספק פרטים נוספים על שימוש בהטמעות למשימות חיפוש.

מודלים של חיפוש קוד

מודלים של חיפוש קוד מספקים הטמעת קוד וטקסט עבור משימות חיפוש קוד. בהינתן אוסף של בלוקי קוד, המשימה היא למצוא את בלוק הקוד הרלוונטי עבור שאילתת שפה טבעית. אנו מעריכים את מודל חיפוש הקוד ב- CodeSearchNet (Husian et al., 2019) חבילת הערכה שבה ההטמעות שלנו משיגות תוצאות טובות משמעותית משיטות קודמות. בדוק את מדריך לחיפוש קוד להשתמש בהטבעות לחיפוש קוד.

דיוק ממוצע מעל 6 שפות תכנות
SOTA הקודם (Guo, et al. 2021)
77.4%
code-search-babbage-{doc, query}-001
93.5%
להראות יותר

דוגמאות של Embeddings API בפעולה

מחקר JetBrains

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

מופעל על ידי ההטמעות של OpenAI של הדוחות האסטרונומיים הללו, חוקרים יכולים כעת לחפש אירועים כמו "התפרצויות פולסר סרטנים" על פני מסדי נתונים ופרסומים מרובים. הטמעות השיגו גם דיוק של 99.85% בסיווג מקור הנתונים באמצעות clustering k-means.

FineTune למידה

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

ההטמעות של OpenAI שיפרו משמעותית את המשימה של מציאת תוכן ספרי לימוד על בסיס יעדי למידה. בהשגת דיוק של 5% מובילים, מודל הטבעת הטקסט-חיפוש-curie של OpenAI עלה על גישות קודמות כמו Sentence-BERT (89.1%). בעוד שמומחים אנושיים עדיין טובים יותר, צוות FineTune מסוגל כעת לתייג ספרי לימוד שלמים תוך שניות, בניגוד לשעות שלקח למומחים.

השוואה של ההטבעות שלנו עם Sentence-BERT, חיפוש GPT-3 ומומחי מקצוע אנושיים להתאמת תוכן ספרי לימוד עם יעדים נלמדים. אנחנו מדווחים accuracy@k, מספר הפעמים שהתשובה הנכונה נמצאת בתוך התחזיות העליון-k.

פאביוס

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

לדוגמה, לקוחות עשויים להשתמש במילים כמו "אוטומטי" או "קל לשימוש" כדי לבקש פלטפורמת שירות עצמי טובה יותר. בעבר, פאביוס השתמש בחיפוש מילות מפתח מעורפל כדי לנסות לתייג את התמלילים האלה עם תווית פלטפורמת השירות העצמי. עם ההטמעות של OpenAI, הם יכולים כעת למצוא פי 2 יותר דוגמאות באופן כללי, ופי 6-10 דוגמאות נוספות עבור תכונות עם מקרי שימוש מופשטים שאין להם מילת מפתח ברורה שהלקוחות עשויים להשתמש בהם.

כל לקוחות ה-API יכולים להתחיל עם תיעוד הטמעות לשימוש בהטבעות ביישומים שלהם.

קרא תיעוד


תודות

תודה לגורמים הבאים על תרומתם למהדורה זו:

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

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

.vector-diagram img { display: none;
}
.vector-diagram img:first-child { display: block;
}

var printResponse = function (btn) { // append response var responseEl = document .querySelector('.endpoint-code-response') .querySelector('code') var callParentEl = document .querySelector('.endpoint-code-call' ) .querySelector('pre') if (!responseEl || !callParentEl) מחזירה; callParentEl.appendChild(responseEl); // hide button btn.style.display= 'none';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!rotates.length) לחזור; // עבור כל קבוצה של rotates rotates.forEach(function (r) { // העבר את הילד הראשון לסוף כל n שניות window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (הורה, ילד) { parent.removeChild(ילד); parent.appendChild(ילד); // הוסף להורה
}; var initShowMore = function () { var showmores = document.querySelectorAll('.js-showmore'); showmores.forEach(function (e) { e.addEventListener('click', function () { var showmoreparent = this.parentElement; if (!showmoreparent) return; var more = showmoreparent.querySelector('.js-more'); if (!more) return; more.style.display = 'block'; this.style.display = 'none'; }); });
}; // init
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
לייבא את {Runtime, Inspector, Library} מ-"https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js";
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
ייבוא ​​notebook_embed3d מ-"https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3" const customWidth = function (selector) { return (new Library).Generators.observe(function(change) { var width = change(document.querySelector(selector).clientWidth); function resized() { var w = document.querySelector(selector).clientWidth; if (w !== width) change(width = w); } window.addEventListener(“ resize", resized); return function() { window.removeEventListener("resize", resized); }; });
}; const topk_renders = { "chart": "#topk-chart",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key exists return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { "chart": "#embed3d-chart", "legend": "#embed3d-legend",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#embed3d-chart”)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // key exists return new Inspector(document.querySelector(selector)); } else { return true; }
});

בול זמן:

עוד מ OpenAI