We introduceren inbeddingen, een nieuw eindpunt in de OpenAI API dat het gemakkelijk maakt om natuurlijke taal- en codetaken uit te voeren, zoals semantisch zoeken, clustering, onderwerpmodellering en classificatie. Inbeddingen zijn numerieke representaties van concepten die zijn geconverteerd naar nummerreeksen, waardoor het voor computers gemakkelijk is om de relaties tussen die concepten te begrijpen. Onze inbeddingen presteren beter dan topmodellen in 3 standaard benchmarks, waaronder een relatieve verbetering van 20% in het zoeken naar codes.
Insluitingen zijn handig voor het werken met natuurlijke taal en code, omdat ze gemakkelijk kunnen worden gebruikt en vergeleken door andere machine learning-modellen en algoritmen zoals clustering of zoeken.
Inbeddingen die numeriek vergelijkbaar zijn, zijn ook semantisch vergelijkbaar. Bijvoorbeeld, de inbeddingsvector van "hondachtige metgezellen zeggen" zal meer lijken op de inbeddingsvector van "inslag" dan die van "miauw".
Het nieuwe eindpunt maakt gebruik van neurale netwerkmodellen, die afstammelingen zijn van GPT-3, om tekst en code toe te wijzen aan een vectorrepresentatie - ze 'inbedden' in een hoogdimensionale ruimte. Elke dimensie legt een bepaald aspect van de invoer vast.
De nieuwe /inbeddingen eindpunt in de OpenAI-API biedt tekst- en code-insluitingen met een paar regels code:
import openai
response = openai.Embedding.create( input="canine companions say", engine="text-similarity-davinci-001")
We brengen drie families van inbeddingsmodellen uit, elk afgestemd om goed te presteren op verschillende functionaliteiten: tekstovereenkomst, tekst zoeken en code zoeken. De modellen nemen tekst of code als invoer en retourneren een inbeddingsvector.
Modellen | Cases | |
---|---|---|
Tekstovereenkomst: Legt semantische overeenkomst tussen stukken tekst vast. | tekst-overeenkomst-{ada, babbage, curie, davinci}-001 | Clustering, regressie, anomaliedetectie, visualisatie |
Tekst zoeken: Semantische informatie ophalen over documenten. | text-search-{ada, babbage, curie, davinci}-{query, doc}-001 | Zoeken, contextrelevantie, informatie ophalen |
Code zoeken: Vind relevante code met een zoekopdracht in natuurlijke taal. | code-zoeken-{ada, babbage}-{code, tekst}-001 | Code zoeken en relevantie |
Tekstovereenkomstmodellen
Tekstovereenkomstmodellen bieden inbeddingen die de semantische overeenkomst van stukken tekst vastleggen. Deze modellen zijn nuttig voor veel taken, waaronder: clustering, data visualisatie en classificatie.
De volgende interactieve visualisatie toont inbeddingen van tekstvoorbeelden uit de DBpedia-dataset:
Om de overeenkomst van twee stukken tekst te vergelijken, gebruikt u eenvoudig de punt product op de tekstinsluitingen. Het resultaat is een "overeenkomstscore", ook wel "cosinus gelijkenisโ, tussen โ1 en 1, waarbij een hoger getal meer overeenkomst betekent. In de meeste toepassingen kunnen de inbeddingen vooraf worden berekend, en dan is de puntproductvergelijking extreem snel uit te voeren.
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)
Een populair gebruik van inbeddingen is om ze te gebruiken als functies in machine learning-taken, zoals classificatie. In de literatuur over machine learning wordt deze classificatietaak een 'lineaire sonde' genoemd wanneer een lineaire classificatie wordt gebruikt. Onze tekstovereenkomstmodellen bereiken nieuwe state-of-the-art resultaten op lineaire sondeclassificatie in VerzondenEval (Conneau et al., 2018), een veelgebruikte benchmark voor het evalueren van de inbeddingskwaliteit.
Tekstzoekmodellen
Tekstzoekmodellen bieden insluitingen die grootschalige zoektaken mogelijk maken, zoals het vinden van een relevant document in een verzameling documenten met een tekstquery. Inbedding voor de documenten en query worden afzonderlijk geproduceerd en vervolgens wordt cosinusovereenkomst gebruikt om de overeenkomst tussen de query en elk document te vergelijken.
Zoeken op basis van inbedding kan beter generaliseren dan technieken voor het overlappen van woorden die worden gebruikt bij het zoeken op klassieke trefwoorden, omdat het de semantische betekenis van tekst vastlegt en minder gevoelig is voor exacte woordgroepen of woorden. We evalueren de prestaties van het tekstzoekmodel op de BEIR (Thakur, et al. 2021) zoekevaluatiesuite en betere zoekprestaties verkrijgen dan eerdere methoden. Ons tekstzoekgids biedt meer details over het gebruik van insluitingen voor zoektaken.
Code zoeken modellen
Codezoekmodellen bieden code- en tekstinsluitingen voor codezoektaken. Gegeven een verzameling codeblokken, is het de taak om het relevante codeblok voor een natuurlijke taalquery te vinden. We evalueren de code-zoekmodellen op de CodeSearchNet (Husian et al., 2019) evaluatiesuite waar onze inbeddingen aanzienlijk betere resultaten opleveren dan eerdere methoden. Bekijk de code zoekgids om insluitingen te gebruiken voor het zoeken naar codes.
Voorbeelden van de Embeddings-API in actie
JetBrains-onderzoek
JetBrains Research's Astrodeeltjesfysica Lab analyseert gegevens zoals: Het telegram van de astronoom en die van NASA GCN-circulaires, dit zijn rapporten die astronomische gebeurtenissen bevatten die niet kunnen worden geparseerd door traditionele algoritmen.
Aangedreven door OpenAI's inbedding van deze astronomische rapporten, kunnen onderzoekers nu zoeken naar gebeurtenissen zoals "crab pulsar bursts" in meerdere databases en publicaties. Inbeddingen behaalden ook een nauwkeurigheid van 99.85% bij de classificatie van gegevensbronnen door middel van k-means-clustering.
FineTune leren
FineTune leren is een bedrijf dat hybride mens-AI-oplossingen voor leren bouwt, zoals: adaptieve leerlussen die studenten helpen academische normen te bereiken.
De inbeddingen van OpenAI hebben de taak om leerboekinhoud te vinden op basis van leerdoelen aanzienlijk verbeterd. Met een top-5-nauwkeurigheid van 89.1%, presteerde het inbeddingsmodel van OpenAI voor tekst-zoek-curie beter dan eerdere benaderingen zoals Sentence-BERT (64.5%). Hoewel menselijke experts nog steeds beter zijn, is het FineTune-team nu in staat om hele studieboeken in een kwestie van seconden te labelen, in tegenstelling tot de uren die het de experts kostte.
Fabius
Fabius helpt bedrijven om klantgesprekken om te zetten in gestructureerde inzichten die de planning en prioritering informeren. Dankzij de inbedding van OpenAI kunnen bedrijven gemakkelijker transcripties van klantgesprekken vinden en taggen met functieverzoeken.
Klanten kunnen bijvoorbeeld woorden als 'geautomatiseerd' of 'gemakkelijk te gebruiken' gebruiken om te vragen om een โโbeter zelfbedieningsplatform. Voorheen gebruikte Fabius fuzzy keyword search om te proberen die transcripties te taggen met het selfservice platformlabel. Met de inbedding van OpenAI kunnen ze nu 2x meer voorbeelden in het algemeen vinden, en 6x-10x meer voorbeelden voor functies met abstracte use-cases die geen duidelijk zoekwoord hebben dat klanten zouden kunnen gebruiken.
Alle API-klanten kunnen aan de slag met de inbeddingsdocumentatie voor het gebruik van inbeddingen in hun toepassingen.
.vector-diagram img { display: geen;
}
.vectordiagram 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') als (!responseEl || !callParentEl) terugkeer; callParentEl.appendChild(responseEl); // verberg knop btn.style.display= 'none';
}; var initRotate = function () { varrotaties = document.querySelectorAll('.js-rotate'); als (!roteert.lengte) terugkeer; // voor elke set rotaties roteert.forEach(function (r) {// verplaats het eerste kind naar het einde van elke n seconden window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = functie (ouder, kind) { parent.removeChild (kind); ouder.appendChild(kind); // toevoegen aan ouder
}; 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'; }); });
}; // in het
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importeer {Runtime, Inspector, Library} van "https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js";
import notebook_topk from โhttps://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3โ;
importeer notebook_embed3d van "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(โ formaat wijzigen", formaat wijzigen); return function() { window.removeEventListener(โformaat wijzigenโ, formaat wijzigen); }; });
}; const topk_renders = { โgrafiekโ: โ#topk-grafiekโ,
};
new Runtime(Object.assign(new Library, {width: customWidth(โ#topk-chartโ)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key bestaat retourneer nieuwe Inspector (document.querySelector (selector)); } else { return true; }
}); const embed3d_renders = { โgrafiekโ: โ#embed3d-chartโ, โlegendeโ: โ#embed3d-legendโ,
};
new Runtime(Object.assign(nieuwe bibliotheek, {width: customWidth(โ#embed3d-chartโ)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // key bestaat retourneer nieuwe Inspector (document.querySelector (selector)); } else { return true; }
});
- '
- 100
- 11
- 3d
- 7
- bereikt
- over
- algoritmen
- onder
- api
- toepassingen
- Beschikbaar
- criterium
- Blok
- Gebouw
- Bellen
- Kan krijgen
- gevallen
- verandering
- kind
- classificatie
- code
- Collectie
- Bedrijven
- afstand
- vergeleken
- computers
- content
- conversaties
- Klanten
- gegevens
- databanken
- Opsporing
- anders
- Afmeting
- Display
- documenten
- gemakkelijk
- Endpoint
- EVENTS
- voorbeeld
- deskundigen
- gezinnen
- SNELLE
- Kenmerk
- Voordelen
- feedback
- Voornaam*
- volgend
- functie
- Algemeen
- Hoogte
- hulp
- helpt
- Verbergen
- Hoe
- How To
- HTTPS
- Hybride
- Inclusief
- informatie
- inzichten
- interactieve
- IT
- sleutel
- taal
- geleerd
- leren
- Bibliotheek
- literatuur
- machine
- machine learning
- kaart
- matching
- Materie
- betekenis
- Metriek
- model
- modellen
- Morgan
- meest
- beweging
- NASA
- Naturel
- netwerk
- aantal
- Overige
- prestatie
- zinnen
- Fysica
- planning
- platform
- Populair
- Voorspellingen
- sonde
- geproduceerd
- Product
- Programming
- zorgen voor
- biedt
- kwaliteit
- RE
- Relaties
- los
- verslag
- Rapporten
- antwoord
- Resultaten
- Ontdek
- gekozen
- reeks
- gelijk
- Oplossingen
- Tussenruimte
- normen
- gestart
- state-of-the-art
- stijl
- taken
- team
- technieken
- Door
- top
- traditioneel
- begrijpen
- .
- visualisatie
- W
- W3
- Wikipedia
- binnen
- woorden
- werkzaam
- Yuan