Vi introduserer tekst- og kodeinnbygginger i OpenAI API PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vi introduserer tekst- og kodeinnbygginger i OpenAI API

Vi introduserer tekst- og kodeinnbygginger i OpenAI API

Vi introduserer embeddings, et nytt endepunkt i OpenAI API som gjør det enkelt å utføre naturlige språk- og kodeoppgaver som semantisk søk, klynging, emnemodellering og klassifisering. Innebygginger er numeriske representasjoner av konsepter konvertert til tallsekvenser, som gjør det enkelt for datamaskiner å forstå relasjonene mellom disse konseptene. Våre innebygginger utkonkurrerer toppmodeller i 3 standard benchmarks, inkludert en 20 % relativ forbedring i kodesøk.

Les dokumentasjonLes papir

Innebygginger er nyttige for å jobbe med naturlig språk og kode, fordi de lett kan konsumeres og sammenlignes av andre maskinlæringsmodeller og algoritmer som klynging eller søk.

Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API

Innebygginger som er numerisk like, er også semantisk like. For eksempel vil innebyggingsvektoren til «hjørnevennene sier» være mer lik innbyggingsvektoren for «woff» enn den til «mjau».

Vi introduserer tekst- og kodeinnbygginger i OpenAI API
Vi introduserer tekst- og kodeinnbygginger i OpenAI API

Det nye endepunktet bruker nevrale nettverksmodeller, som er etterkommere av GPT-3, for å kartlegge tekst og kode til en vektorrepresentasjon – «innebygde» dem i et høydimensjonalt rom. Hver dimensjon fanger opp et aspekt av input.

Den nye /embeddings endepunkt i Åpne AI API gir tekst- og kodeinnbygginger med noen få linjer med kode:

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

Vi lanserer tre familier med innbyggingsmodeller, som hver er innstilt for å yte godt på forskjellige funksjoner: tekstlikhet, tekstsøk og kodesøk. Modellene tar enten tekst eller kode som input og returnerer en innebyggingsvektor.

Modeller Bruk saker
Tekstlikhet: Fanger semantisk likhet mellom tekststykker. tekstlikhet-{ada, babbage, curie, davinci}-001 Clustering, regresjon, anomalideteksjon, visualisering
Tekstsøk: Semantisk informasjonsinnhenting over dokumenter. text-search-{ada, babbage, curie, davinci}-{query, doc}-001 Søk, kontekstrelevans, informasjonsinnhenting
Kodesøk: Finn relevant kode med en spørring på naturlig språk. kodesøk-{ada, babbage}-{kode, tekst}-001 Kodesøk og relevans

Tekstlikhetsmodeller

Tekstlikhetsmodeller gir innbygginger som fanger den semantiske likheten til tekststykker. Disse modellene er nyttige for mange oppgaver, inkludert gruppering, datavisualiseringog klassifisering.

Følgende interaktive visualisering viser innbygginger av teksteksempler fra DBpedia-datasettet:

Dra for å panorere, rull eller knip for å zoome

Innstøpninger fra text-similarity-babbage-001 modell, brukt på DBpedia datasett. Vi valgte tilfeldig ut 100 prøver fra datasettet som dekker 5 kategorier, og beregnet innebyggingene via /embeddings endepunkt. De forskjellige kategoriene vises som 5 klare klynger i innebyggingsrommet. For å visualisere innebyggingsplassen reduserte vi innebyggingsdimensjonaliteten fra 2048 til 3 ved å bruke PCA. Koden for hvordan du visualiserer innebyggingsplass i 3D-dimensjon er tilgjengelig her..

For å sammenligne likheten mellom to tekststykker bruker du ganske enkelt prikkprodukt på tekstinnbyggingene. Resultatet er en "likhetspoeng", noen ganger kalt "cosinus-likhet,” mellom –1 og 1, der et høyere tall betyr mer likhet. I de fleste applikasjoner kan innbyggingene forhåndsberegnes, og da er punktproduktsammenligningen ekstremt rask å gjennomføre.

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 bruk av innebygginger er å bruke dem som funksjoner i maskinlæringsoppgaver, for eksempel klassifisering. I maskinlæringslitteratur, når du bruker en lineær klassifisering, kalles denne klassifiseringsoppgaven en "lineær probe." Våre tekstlikhetsmodeller oppnår nye toppmoderne resultater på lineær sondeklassifisering i SentEval (Conneau et al., 2018), en vanlig referanse for evaluering av innebyggingskvalitet.

Lineær sondeklassifisering over 7 datasett
Forrige SOTA (Gao et al. 2021)
90.2%
tekst-likhet-davinci-001
92.2%
Vis mer

Tekstsøkemodeller

Tekstsøkemodeller gir innbygginger som muliggjør store søkeoppgaver, som å finne et relevant dokument blant en samling dokumenter gitt en tekstforespørsel. Innebygging for dokumentene og spørringen produseres separat, og deretter brukes cosinuslikhet for å sammenligne likheten mellom spørringen og hvert dokument.

Innebyggingsbasert søk kan generalisere bedre enn ordoverlappingsteknikker som brukes i klassisk søkeordsøk, fordi det fanger opp den semantiske betydningen av tekst og er mindre følsom for eksakte fraser eller ord. Vi evaluerer tekstsøkemodellens ytelse på BEIR (Thakur, et al. 2021) søkeevalueringssuite og oppnå bedre søkeytelse enn tidligere metoder. Vår tekstsøkeguide gir flere detaljer om bruk av innebygginger for søkeoppgaver.

Kodesøkemodeller

Kodesøkemodeller gir kode- og tekstinnbygging for kodesøkeoppgaver. Gitt en samling av kodeblokker, er oppgaven å finne den relevante kodeblokken for en naturlig språkspørring. Vi evaluerer kodesøkemodellene på CodeSearchNet (Husian et al., 2019) evalueringssuite der våre innbygginger oppnår betydelig bedre resultater enn tidligere metoder. Sjekk ut kodesøkeguide å bruke innebygginger for kodesøk.

Gjennomsnittlig nøyaktighet over 6 programmeringsspråk
Forrige SOTA (Guo, et al. 2021)
77.4%
code-search-babbage-{doc, query}-001
93.5%
Vis mer

Eksempler på Embeddings API i aksjon

JetBrains forskning

JetBrains Research Astropartikkelfysikklab analyserer data som Astronomens telegram og NASA GCN-rundskriv, som er rapporter som inneholder astronomiske hendelser som ikke kan analyseres av tradisjonelle algoritmer.

Drevet av OpenAIs integrering av disse astronomiske rapportene, kan forskere nå søke etter hendelser som "krabbepulsarutbrudd" på tvers av flere databaser og publikasjoner. Innebygginger oppnådde også 99.85 % nøyaktighet på datakildeklassifisering gjennom k-betyr klynging.

FineTune læring

FineTune læring er et selskap som bygger hybride human-AI-løsninger for læring, som adaptive læringsløkker som hjelper studentene med å nå akademiske standarder.

OpenAIs innebygginger forbedret oppgaven med å finne lærebokinnhold basert på læringsmål betydelig. Med en topp-5-nøyaktighet på 89.1 %, overgikk OpenAIs tekst-søk-curie-innbyggingsmodell tidligere tilnærminger som Sentence-BERT (64.5 %). Mens menneskelige eksperter fortsatt er bedre, er FineTune-teamet nå i stand til å merke hele lærebøker i løpet av sekunder, i motsetning til timene det tok ekspertene.

Sammenligning av våre innebygginger med Sentence-BERT, GPT-3-søk og menneskelige fageksperter for å matche lærebokinnhold med lærte mål. Vi rapporterer nøyaktighet@k, antall ganger det riktige svaret er innenfor topp-k-spådommene.

fabius

fabius hjelper bedrifter å gjøre kundesamtaler til strukturert innsikt som informerer planlegging og prioritering. OpenAIs innebygginger lar bedrifter lettere finne og merke kundeanropsutskrifter med funksjonsforespørsler.

Kunder kan for eksempel bruke ord som "automatisert" eller "enkel å bruke" for å be om en bedre selvbetjeningsplattform. Tidligere brukte Fabius uklare nøkkelordsøk for å prøve å merke disse transkripsjonene med selvbetjeningsplattformen. Med OpenAIs innebygginger er de nå i stand til å finne 2x flere eksempler generelt, og 6x–10x flere eksempler for funksjoner med abstrakte brukstilfeller som ikke har et klart nøkkelord som kunder kan bruke.

Alle API-kunder kan komme i gang med innbyggingsdokumentasjon for å bruke innebygginger i sine applikasjoner.

Les dokumentasjon


Erkjennelsene

Takk til følgende for deres bidrag til denne utgivelsen:

Tao Xu, Chris Hallacy, Raul Puri, Alec Radford, Jesse Michael Han, Jerry Tworek, Qiming Yuan, Nikolas Tezak, Jong Wook Kim, Johannes Heidecke, Pranav Shyam, Tyna Eloundou Nekoul, Girish Sastry, Gretchen Krueger, David Schnurr, Felipe Petroski Slike, Kenny Hsu, Madeleine Thompson, Tabarak Khan og Toki Sherbakov.

Takk til følgende for deres tilbakemelding på dette innlegget: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagram img { display: ingen;
}
.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') hvis (!responseEl || !callParentEl) returnerer; ring ParentEl.appendChild(responsEl); // hide button btn.style.display= 'ingen';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!roterer.lengde) returner; // for hvert sett med roterer rotates.forEach(function (r) { // flytte det første barnet til slutten hvert n. sekund window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = funksjon (foreldre, barn) { parent.removeChild(child); forelder.appendChild(barn); // legge til forelder
}; 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 = 'blokk'; this.style.display = 'ingen'; }); });
}; // i det
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importere {Runtime, Inspector, Library} fra "https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js";
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
importer notebook_embed3d fra "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(“ endre størrelse”, endre størrelse); return function() { window.removeEventListener(“endre størrelse”, endre størrelse); }; });
}; 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; }
});

Tidstempel:

Mer fra OpenAI