Teksti ja koodi manustamise tutvustamine OpenAI API PlatoBlockchain Data Intelligences. Vertikaalne otsing. Ai.

Teksti ja koodi manustamise tutvustamine OpenAI API-s

Teksti ja koodi manustamise tutvustamine OpenAI API-s

Tutvustame manustamist, OpenAI API uut lõpp-punkti, mis muudab loomuliku keele ja koodiülesannete (nt semantiline otsing, rühmitamine, teemade modelleerimine ja klassifitseerimine) täitmise lihtsaks. Manustused on mõistete arvulised esitused, mis on teisendatud numbrijadadeks, mis hõlbustavad arvutitel nende mõistete vaheliste seoste mõistmist. Meie manused ületavad tippmudeleid kolme standardse võrdlusaluse osas, sealhulgas 3% suhteline paranemine koodiotsingus.

Lugege dokumentatsiooniLugege paberit

Manustused on kasulikud loomuliku keele ja koodiga töötamiseks, kuna neid saab hõlpsasti tarbida ja võrrelda teiste masinõppemudelite ja algoritmidega, nagu rühmitamine või otsing.

Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s

Manustused, mis on arvuliselt sarnased, on ka semantiliselt sarnased. Näiteks on sõna "koerte kaaslased ütlevad" manustamisvektor sarnasem sõna "woof" manustamisvektoriga kui "mjäu".

Teksti ja koodi manustamise tutvustamine OpenAI API-s
Teksti ja koodi manustamise tutvustamine OpenAI API-s

Uus lõpp-punkt kasutab närvivõrgu mudeleid, mis on GPT-3 järeltulijad, et vastendada tekst ja kood vektoresitluseks - "kinnitada" need suuremõõtmelisse ruumi. Iga mõõde kajastab sisendi mõnda aspekti.

Uus /manused lõpp-punktis OpenAI API pakub teksti ja koodi manuseid koos mõne koodireaga:

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

Anname välja kolm manustamismudelite perekonda, millest igaüks on häälestatud toimima hästi erinevate funktsioonide puhul: teksti sarnasus, tekstiotsing ja koodiotsing. Mudelid võtavad sisendiks teksti või koodi ja tagastavad manustusvektori.

Mudelid Kasutage kohtuasju
Teksti sarnasus: tabab tekstiosade semantilise sarnasuse. text-sarnasus-{ada, babbage, curie, davinci}-001 Klasterdamine, regressioon, anomaaliate tuvastamine, visualiseerimine
Tekstiotsing: Semantilise teabe otsimine dokumentidest. text-search-{ada, babbage, curie, davinci}-{query, doc}-001 Otsing, konteksti asjakohasus, teabe hankimine
Koodiotsing: otsige asjakohast koodi päringuga loomulikus keeles. koodiotsing-{ada, babbage}-{kood, tekst}-001 Koodiotsing ja asjakohasus

Teksti sarnasuse mudelid

Teksti sarnasuse mudelid pakuvad manuseid, mis fikseerivad tekstiosade semantilise sarnasuse. Need mudelid on kasulikud paljude ülesannete, sealhulgas Klastrite loomine, andmete visualiseerimineja klassifikatsioon.

Järgmine interaktiivne visualiseerimine näitab DBpedia andmestiku tekstinäidiste manuseid:

Lohistage panoraamimiseks, kerige või näpistage suumimiseks

Manused alates text-similarity-babbage-001 mudelile rakendatud DBpedia andmestik. Valisime 100 kategooriat hõlmavast andmestikust juhuslikult 5 näidist ja arvutasime manustused /manused lõpp-punkt. Erinevad kategooriad kuvatakse manustamisruumis viie selge klastrina. Manusruumi visualiseerimiseks vähendasime manustamise mõõtmeid 5-lt 2048-le PKL. Kood ruumi manustamise 3D-mõõtmes visualiseerimiseks on saadaval siin.

Kahe tekstiosa sarnasuse võrdlemiseks kasutage lihtsalt punktitoode teksti manustamisel. Tulemuseks on "sarnasusskoor", mida mõnikord nimetatakse "koosinuse sarnasus”, vahemikus –1 kuni 1, kus suurem arv tähendab suuremat sarnasust. Enamikus rakendustes saab manuseid eelnevalt välja arvutada ja seejärel on punkttoodete võrdlus väga kiire.

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)

Üks populaarne manustamisviis on kasutada neid masinõppeülesannete funktsioonidena, näiteks klassifitseerimisel. Masinõppekirjanduses nimetatakse seda klassifitseerimisülesannet lineaarse klassifikaatori kasutamisel "lineaarseks sondiks". Meie tekstisarnasuse mudelid saavutavad uusi tipptasemel tulemusi lineaarse sondi klassifitseerimisel SentEval (Conneau jt, 2018), sageli kasutatav võrdlusalus manustamise kvaliteedi hindamiseks.

Lineaarne sondi klassifikatsioon üle 7 andmekogumi
Eelmine SOTA (Gao et al. 2021. aasta)
90.2%
text-sarnasus-davinci-001
92.2%
Näita rohkem

Tekstiotsingu mudelid

Tekstiotsingu mudelid pakuvad manuseid, mis võimaldavad suuremahulisi otsinguülesandeid, nagu tekstipäringuga dokumentide hulgast asjakohase dokumendi leidmine. Dokumentide ja päringu manustamine luuakse eraldi ning päringu ja iga dokumendi sarnasuse võrdlemiseks kasutatakse koosinussarnasust.

Manuspõhine otsing võib üldistada paremini kui klassikalises märksõnaotsingus kasutatavad sõnade kattumise tehnikad, kuna see tabab teksti semantilist tähendust ja on vähem tundlik täpsete fraaside või sõnade suhtes. Hindame tekstiotsingu mudeli toimivust BEIR (Thakur et al. 2021. aasta) otsige hindamiskomplekti ja saavutage varasematest meetoditest paremad otsingutulemused. Meie tekstiotsingu juhend pakub rohkem üksikasju otsinguülesannete manustamise kasutamise kohta.

Koodiotsingu mudelid

Koodiotsingu mudelid pakuvad koodiotsingu ülesannete jaoks koodi ja teksti manustamist. Arvestades koodiplokkide kogumit, on ülesandeks leida loomuliku keele päringu jaoks asjakohane koodiplokk. Hindame koodiotsingu mudeleid CodeSearchNet (Husian jt, 2019) hindamiskomplekt, kus meie manused saavutavad oluliselt paremaid tulemusi kui varasemad meetodid. Tutvuge koodiotsingu juhend kasutada koodiotsinguks manuseid.

Keskmine täpsus üle 6 programmeerimiskeele
Eelmine SOTA (Guo et al. 2021. aasta)
77.4%
code-search-babbage-{doc, query}-001
93.5%
Näita rohkem

Näited Embeddings API kohta töös

JetBrainsi uurimine

JetBrains Research's Astroparticle Physics Lab analüüsib andmeid nagu Astronoomi telegramm ja NASA omad GCN ringkirjad, mis on aruanded, mis sisaldavad astronoomilisi sündmusi, mida traditsioonilised algoritmid ei saa sõeluda.

Nende astronoomiliste aruannete OpenAI manustatud toel saavad teadlased nüüd otsida selliseid sündmusi nagu "krabipulsari pursked" mitmest andmebaasist ja väljaandest. Manustused saavutasid ka 99.85% täpsuse andmeallika klassifitseerimisel k-keskmiste klastrite abil.

FineTune Learning

FineTune Learning on ettevõte, mis loob õppimiseks hübriidseid inim-AI lahendusi, nagu adaptiivsed õppetsüklid mis aitavad õpilastel saavutada akadeemilisi standardeid.

OpenAI manustused parandasid oluliselt õpikute sisu leidmise ülesannet õpieesmärkide alusel. OpenAI tekstiotsingu-curie manustamismudel saavutas viie parima täpsusega 5%, ületas varasemaid lähenemisviise, nagu lause-BERT (89.1%). Kuigi inimeksperdid on endiselt paremad, suudab FineTune'i meeskond nüüd tervetele õpikutele sildistada mõne sekundiga, erinevalt ekspertidel kulunud tundidest.

Meie manuste võrdlus lausega BERT, GPT-3 otsing ja inimainete eksperte õpiku sisu sobitamiseks õpitud eesmärkidega. Anname aru täpsus@k, mitu korda on õige vastus top-k ennustuste piires.

Fabius

Fabius aitab ettevõtetel muuta kliendivestlused struktureeritud arusaamadeks, mis annavad teavet planeerimise ja prioriteetide seadmise kohta. OpenAI manustused võimaldavad ettevõtetel hõlpsamini leida ja märgistada klientide kõnede ärakirju funktsioonitaotlustega.

Näiteks võivad kliendid parema iseteenindusplatvormi taotlemiseks kasutada sõnu nagu "automaatne" või "lihtne kasutada". Varem kasutas Fabius ähmast märksõnaotsingut, et püüda neid ärakirju iseteenindusplatvormi sildiga märgistada. OpenAI manustega saavad nad nüüd leida 2x rohkem näiteid üldiselt ja 6x–10x rohkem näiteid abstraktsete kasutusjuhtudega funktsioonide kohta, millel puudub selge märksõna, mida kliendid võiksid kasutada.

Kõik API kliendid saavad rakendusega alustada manustamise dokumentatsioon manustamist oma rakendustes.

Lugege dokumentatsiooni


Tunnustused

Täname järgmisi sellesse väljaandesse panuse eest:

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 Sellised Kenny Hsu, Madeleine Thompson, Tabarak Khan ja Toki Sherbakov.

Täname järgmisi selle postituse kohta tagasiside eest: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagram img { kuva: puudub;
}
.vector-diagram img:first-child { kuva: plokk;
}

var printResponse = function (btn) { // lisa vastuse var responseEl = document .querySelector('.endpoint-code-response') .querySelector('code') var callParentEl = document .querySelector('.endpoint-code-call' ) .querySelector('pre') if (!responseEl || !callParentEl) return; callParentEl.appendChild(responseEl); // peida nupp btn.style.display= 'puudub';
}; var initRotate = function () { var pöörleb = document.querySelectorAll('.js-rotate'); if (!pöörleb.pikkus) tagasi; // iga pööramiste komplekti rotates.forEach(function (r) { // liigub esimest alamrühma iga n sekundi järel window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500; }) ;
};
var moveToEnd = funktsioon (vanem, laps) { vanem.eemaldaLaps(laps); vanem.appendLaps(laps); // lisa vanemale
}; 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 = 'blokeeri'; this.style.display = 'puudub'; }); });
}; // selles
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importige {Runtime, Inspector, Library} saidilt „https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js”;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
import notebook_embed3d saidilt “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 !== laius) change(width = w); } window.addEventListener(“ suurust muutke", suurust muudeti); return function() { window.removeEventListener("suuruse muutmine", suurust muudetud); }; });
}; const topk_renders = { "diagramm": "#topk-diagramm",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // klahv eksisteerib return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { "diagramm": "#embed3d-diagramm", "legend": "#embed3d-legend",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#embed3d-chart”)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // klahv eksisteerib return new Inspector(document.querySelector(selector)); } else { return true; }
});

Ajatempel:

Veel alates OpenAI