Vi introducerar inbäddningar, en ny slutpunkt i OpenAI API som gör det enkelt att utföra naturliga språk- och koduppgifter som semantisk sökning, klustring, ämnesmodellering och klassificering. Inbäddningar är numeriska representationer av begrepp omvandlade till nummersekvenser, vilket gör det lätt för datorer att förstå sambanden mellan dessa begrepp. Våra inbäddningar överträffar toppmodeller i tre standardriktmärken, inklusive en 3 % relativ förbättring av kodsökning.
Inbäddningar är användbara för att arbeta med naturligt språk och kod, eftersom de lätt kan konsumeras och jämföras av andra maskininlärningsmodeller och algoritmer som klustring eller sökning.
Inbäddningar som är numeriskt lika är också semantiskt lika. Till exempel kommer inbäddningsvektorn för "hundkompisar säger" att vara mer lik inbäddningsvektorn för "woof" än den för "mjau".
Den nya slutpunkten använder neurala nätverksmodeller, som är ättlingar till GPT-3, för att kartlägga text och kod till en vektorrepresentation – "bädda in" dem i ett högdimensionellt utrymme. Varje dimension fångar någon aspekt av inmatningen.
Den nya /inbäddningar slutpunkt i Öppna AI API ger text- och kodinbäddningar med några rader kod:
import openai
response = openai.Embedding.create( input="canine companions say", engine="text-similarity-davinci-001")
Vi släpper tre familjer av inbäddningsmodeller, var och en inställd för att prestera bra på olika funktioner: textlikhet, textsökning och kodsökning. Modellerna tar antingen text eller kod som indata och returnerar en inbäddningsvektor.
Modeller | Användningsfall | |
---|---|---|
Textlikhet: Fångar semantisk likhet mellan textstycken. | text-likhet-{ada, babbage, curie, davinci}-001 | Clustering, regression, anomalidetektering, visualisering |
Textsökning: Semantisk informationssökning över dokument. | text-search-{ada, babbage, curie, davinci}-{query, doc}-001 | Sökning, sammanhangsrelevans, informationssökning |
Kodsökning: Hitta relevant kod med en fråga på naturligt språk. | Code-Search- {Ada, Babbage}-{Code, Text} -001 | Kodsökning och relevans |
Textlikhetsmodeller
Textlikhetsmodeller tillhandahåller inbäddningar som fångar den semantiska likheten mellan textstycken. Dessa modeller är användbara för många uppgifter, inklusive klustring, datavisualiseringoch klassificering.
Följande interaktiva visualisering visar inbäddningar av textexempel från DBpedia-dataset:
För att jämföra likheten mellan två textstycken använder du helt enkelt punkt produkt på textinbäddningarna. Resultatet är ett "likhetspoäng", ibland kallat "cosinuslikhet,” mellan –1 och 1, där ett högre tal betyder mer likhet. I de flesta applikationer kan inbäddningarna vara förberäknade, och då går punktproduktjämförelsen extremt snabb att genomföra.
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)
En populär användning av inbäddningar är att använda dem som funktioner i maskininlärningsuppgifter, till exempel klassificering. I maskininlärningslitteratur, när du använder en linjär klassificerare, kallas denna klassificeringsuppgift en "linjär sond." Våra textlikhetsmodeller uppnår nya toppmoderna resultat på linjär sondklassificering i Senteval (Conneau et al., 2018), ett vanligt riktmärke för att utvärdera inbäddningskvalitet.
Textsökningsmodeller
Textsökningsmodeller tillhandahåller inbäddningar som möjliggör storskaliga sökuppgifter, som att hitta ett relevant dokument bland en samling dokument med en textfråga. Inbäddning av dokumenten och frågan produceras separat, och sedan används cosinuslikhet för att jämföra likheten mellan frågan och varje dokument.
Inbäddningsbaserad sökning kan generalisera bättre än ordöverlappningstekniker som används i klassisk nyckelordssökning, eftersom den fångar textens semantiska betydelse och är mindre känslig för exakta fraser eller ord. Vi utvärderar textsökningsmodellens prestanda på Beir (Thakur, et al. 2021) sökutvärderingssvit och få bättre sökprestanda än tidigare metoder. Vår textsökningsguide ger mer information om hur du använder inbäddningar för sökuppgifter.
Modeller för kodsökning
Kodsökningsmodeller tillhandahåller kod- och textinbäddningar för kodsökningsuppgifter. Givet en samling kodblock, är uppgiften att hitta det relevanta kodblocket för en naturlig språkfråga. Vi utvärderar kodsökningsmodellerna på Kodesearchnet (Husian et al., 2019) utvärderingssvit där våra inbäddningar uppnår betydligt bättre resultat än tidigare metoder. Kolla in kodsökningsguide att använda inbäddningar för kodsökning.
Exempel på Embeddings API i aktion
JetBrains forskning
JetBrains Research Astropartikelfysiklab analyserar data som Astronomens telegram och NASA GCN-cirkulär, som är rapporter som innehåller astronomiska händelser som inte kan analyseras med traditionella algoritmer.
Med hjälp av OpenAI:s inbäddningar av dessa astronomiska rapporter kan forskare nu söka efter händelser som "krabbpulsar" över flera databaser och publikationer. Inbäddningar uppnådde också 99.85 % noggrannhet vid klassificering av datakällor genom k-means-klustring.
Finlärning
Finlärning är ett företag som bygger hybrid human-AI-lösningar för lärande, som adaptiva inlärningsslingor som hjälper eleverna att nå akademiska standarder.
OpenAI:s inbäddningar förbättrade avsevärt uppgiften att hitta läroboksinnehåll baserat på lärandemål. OpenAI:s text-search-curie-inbäddningsmodell uppnådde en topp-5-noggrannhet på 89.1 % och överträffade tidigare tillvägagångssätt som Sentence-BERT (64.5 %). Medan mänskliga experter fortfarande är bättre, kan FineTune-teamet nu märka hela läroböcker på några sekunder, i motsats till de timmar som det tog experterna.
Fabius
Fabius hjälper företag att omvandla kundsamtal till strukturerade insikter som informerar planering och prioritering. OpenAI:s inbäddningar gör det möjligt för företag att lättare hitta och tagga kunders samtalsutskrifter med funktionsförfrågningar.
Kunder kan till exempel använda ord som "automatiserat" eller "lätt att använda" för att be om en bättre självbetjäningsplattform. Tidigare använde Fabius suddig nyckelordssökning för att försöka märka dessa utskrifter med självbetjäningsplattformsetiketten. Med OpenAI:s inbäddningar kan de nu hitta 2x fler exempel i allmänhet och 6x–10x fler exempel för funktioner med abstrakta användningsfall som inte har ett tydligt nyckelord som kunder kan använda.
Alla API-kunder kan komma igång med inbäddningsdokumentation för att använda inbäddningar i sina applikationer.
.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') om (!responseEl || !callParentEl) returnerar; callParentEl.appendChild(responseEl); // hide button btn.style.display= 'ingen';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!roterar.längd) returnera; // för varje uppsättning rotationer rotates.forEach(function (r) { // flytta det första barnet till slutet var n:e sekund window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (förälder, barn) { parent.removeChild(child); parent.appendChild(child); // lägg till förälder
}; 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 = 'blockera'; this.style.display = 'ingen'; }); });
}; // i det
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importera {Runtime, Inspector, Library} från "https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js";
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
importera notebook_embed3d från "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(“ ändra storlek”, ändra storlek); return function() { window.removeEventListener(“ändra storlek”, ändra storlek); }; });
}; 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 existerar 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 existerar return new Inspector(document.querySelector(selector)); } else { return true; }
});
- '
- 100
- 11
- 3d
- 7
- uppnås
- tvärs
- algoritmer
- bland
- api
- tillämpningar
- tillgänglig
- riktmärke
- Blockera
- Byggnad
- Ring
- Kan få
- fall
- byta
- barn
- klassificering
- koda
- samling
- Företag
- företag
- jämfört
- datorer
- innehåll
- konversationer
- Kunder
- datum
- databaser
- Detektering
- olika
- Dimensionera
- Visa
- dokument
- lätt
- Slutpunkt
- händelser
- exempel
- experter
- familjer
- SNABB
- Leverans
- Funktioner
- återkoppling
- Förnamn
- efter
- fungera
- Allmänt
- höjd
- hjälpa
- hjälper
- Dölja
- Hur ser din drömresa ut
- How To
- HTTPS
- Hybrid
- Inklusive
- informationen
- insikter
- interaktiva
- IT
- Nyckel
- språk
- lärt
- inlärning
- Bibliotek
- litteraturen
- Maskinen
- maskininlärning
- karta
- matchande
- Materia
- betyder
- Metrics
- modell
- modeller
- Morgan
- mest
- flytta
- Nasa
- Natural
- nät
- antal
- Övriga
- prestanda
- fraser
- Fysik
- planering
- plattform
- Populära
- Förutsägelser
- sond
- producerad
- Produkt
- Programmering
- ge
- ger
- kvalitet
- RE
- Förhållanden
- frigöra
- rapport
- Rapport
- respons
- Resultat
- Sök
- vald
- in
- liknande
- Lösningar
- Utrymme
- standarder
- igång
- state-of-the-art
- stil
- uppgifter
- grupp
- tekniker
- Genom
- topp
- traditionell
- förstå
- användning
- visualisering
- W
- W3
- wikipedia
- inom
- ord
- arbetssätt
- Yuan