Szöveg- és kódbeágyazások bemutatása az OpenAI API PlatoBlockchain Data Intelligence-ben. Függőleges keresés. Ai.

Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban

Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban

Bevezetjük a beágyazásokat, az OpenAI API új végpontját, amely megkönnyíti a természetes nyelvi és kódolási feladatok, például a szemantikus keresés, fürtözés, témamodellezés és osztályozás végrehajtását. A beágyazások a fogalmak számsorozatokká konvertált numerikus ábrázolásai, amelyek megkönnyítik a számítógépek számára a fogalmak közötti kapcsolatok megértését. Beágyazásaink felülmúlják a csúcsmodelleket 3 standard benchmarkban, beleértve a 20%-os relatív javulást a kódkeresésben.

Olvassa el a dokumentációtOlvass papírt

A beágyazások hasznosak a természetes nyelvvel és kóddal való munkavégzéshez, mert könnyen felhasználhatók és összehasonlíthatók más gépi tanulási modellekkel és algoritmusokkal, például a fürtözéssel vagy a kereséssel.

Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban

A számszerűen hasonló beágyazások szemantikailag is hasonlóak. Például a „kutyatársak azt mondják” beágyazási vektora jobban fog hasonlítani a „woof” beágyazási vektorához, mint a „miau”.

Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban
Szöveg- és kódbeágyazások bemutatása az OpenAI API-ban

Az új végpont neurális hálózati modelleket használ, amelyek a GPT-3 leszármazottai, hogy a szöveget és a kódot vektoros reprezentációra képezzék le – „beágyazva” azokat egy nagy dimenziós térbe. Mindegyik dimenzió a bemenet bizonyos aspektusait rögzíti.

Az új /beágyazások végpont a OpenAI API szöveg- és kódbeágyazást biztosít néhány kódsorral:

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

Három beágyazási modellcsaládot adunk ki, amelyek mindegyikét úgy hangoljuk, hogy jól teljesítsenek a különböző funkciókban: szöveghasonlóság, szövegkeresés és kódkeresés. A modellek szöveget vagy kódot vesznek bemenetként, és egy beágyazási vektort adnak vissza.

Modellek Használjon ügyeket
Szöveg hasonlóság: Szemantikai hasonlóságot rögzít a szövegrészek között. text-hasonlóság-{ada, babbage, curie, davinci}-001 Klaszterezés, regresszió, anomália-detektálás, vizualizáció
Szöveges keresés: Szemantikai információ visszakeresés dokumentumokon keresztül. text-search-{ada, babbage, curie, davinci}-{query, doc}-001 Keresés, kontextus relevancia, információkeresés
Kódkeresés: Keresse meg a releváns kódot természetes nyelvű lekérdezéssel. code-search-{ada, babbage}-{code, text}-001 Kódkeresés és relevancia

Szöveghasonlósági modellek

A szöveghasonlósági modellek olyan beágyazásokat biztosítanak, amelyek rögzítik a szövegrészek szemantikai hasonlóságát. Ezek a modellek számos feladathoz hasznosak, beleértve csoportosítás, adatmegjelenítésés besorolás.

A következő interaktív vizualizáció a DBpedia adatkészlet szövegmintáinak beágyazását mutatja be:

Húzza a pásztázáshoz, görgessen vagy csípje össze a nagyításhoz

Beágyazások a text-similarity-babbage-001 modell, alkalmazva a DBpedia adatkészlet. Véletlenszerűen kiválasztottunk 100 mintát az 5 kategóriát lefedő adatkészletből, és kiszámítottuk a beágyazásokat a /beágyazások végpont. A különböző kategóriák 5 tiszta klaszterként jelennek meg a beágyazási területen. A beágyazási tér megjelenítéséhez a beágyazási dimenziót 2048-ról 3-ra csökkentettük PCA. Elérhető a kód a tér beágyazásának 3D dimenzióban való megjelenítéséhez itt.

Két szövegrész hasonlóságának összehasonlításához egyszerűen használja a pont termék a szövegbeágyazásokon. Az eredmény egy „hasonlósági pontszám”, amelyet néha „koszinusz hasonlóság”, –1 és 1 között, ahol a nagyobb szám nagyobb hasonlóságot jelent. A legtöbb alkalmazásban a beágyazás előre kiszámítható, így a pontszerű termék-összehasonlítás rendkívül gyorsan elvégezhető.

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)

A beágyazások egyik népszerű felhasználási módja a gépi tanulási feladatok, például az osztályozás funkcióként való használata. A gépi tanulási szakirodalomban lineáris osztályozó használatakor ezt az osztályozási feladatot „lineáris próbának” nevezik. Szöveghasonlósági modelljeink a legkorszerűbb eredményeket érik el a lineáris szondák osztályozásában SentEval (Conneau és társai, 2018), egy általánosan használt viszonyítási alap a beágyazás minőségének értékeléséhez.

Lineáris szonda osztályozás 7 adatkészleten keresztül
Előző SOTA (Gao et al. 2021)
90.2%
text-hasonlóság-davinci-001
92.2%
Mutass többet

Szöveges keresési modellek

A szöveges keresési modellek olyan beágyazásokat biztosítanak, amelyek lehetővé teszik a nagyszabású keresési feladatokat, például egy releváns dokumentum megtalálását egy szöveges lekérdezéssel rendelkező dokumentumgyűjtemény között. A dokumentumok és a lekérdezés beágyazása külön jön létre, majd a koszinusz hasonlóságot használja a lekérdezés és az egyes dokumentumok közötti hasonlóság összehasonlítására.

A beágyazáson alapuló keresés jobban általánosítható, mint a klasszikus kulcsszavas keresésben használt szóátfedési technikák, mivel megragadja a szöveg szemantikai jelentését, és kevésbé érzékeny a pontos kifejezésekre vagy szavakra. Értékeljük a szöveges keresési modell teljesítményét a BEIR (Thakur és mtsai. 2021) keressen kiértékelő csomagot, és jobb keresési teljesítményt érjen el, mint a korábbi módszerek. A miénk szöveges keresési útmutató további részleteket ad a beágyazások keresési feladatokhoz való használatáról.

Kódkereső modellek

A kódkeresési modellek kód- és szövegbeágyazást biztosítanak a kódkeresési feladatokhoz. Adott egy kódblokk gyűjtemény, a feladat az, hogy megtaláljuk a megfelelő kódblokkot egy természetes nyelvű lekérdezéshez. Kiértékeljük a kódkeresési modelleket a CodeSearchNet (Husian és társai, 2019) kiértékelő csomag, ahol a beágyazásaink lényegesen jobb eredményeket érnek el, mint a korábbi módszerek. Nézze meg a kódkeresési útmutató beágyazások használatához kódkereséshez.

Átlagos pontosság több mint 6 programozási nyelven
Előző SOTA (Guo és mtsai. 2021)
77.4%
kód-kereső-babbage-{doc, query}-001
93.5%
Mutass többet

Példák az Embeddings API-ra működés közben

JetBrains kutatás

JetBrains Research Astroparticle Physics Lab olyan adatokat elemzi A csillagász távirata és a NASA -é GCN körlevelek, amelyek olyan csillagászati ​​eseményeket tartalmaznak, amelyek hagyományos algoritmusokkal nem elemezhetők.

Az OpenAI beágyazott csillagászati ​​jelentéseinek köszönhetően a kutatók több adatbázisban és publikációban is képesek olyan események után kutatni, mint a „rákpulzár-kitörések”. A beágyazások 99.85%-os pontosságot értek el az adatforrások osztályozásában is a k-means klaszterezés révén.

FineTune Learning

FineTune Learning egy hibrid ember-AI tanulási megoldásokat fejlesztő vállalat, mint pl adaptív tanulási hurkok amelyek segítenek a hallgatóknak elérni a tudományos színvonalat.

Az OpenAI beágyazásai jelentősen javították a tankönyvi tartalom keresési feladatát a tanulási célok alapján. Az OpenAI szöveg-kereső-curie beágyazási modellje az öt legjobb 5%-os pontosságot elérve felülmúlta a korábbi megközelítéseket, például a Sentence-BERT-t (89.1%). Míg a humán szakértők még mindig jobbak, a FineTune csapata immár pillanatok alatt képes egész tankönyvet felcímkézni, ellentétben azzal, hogy a szakértőknek ez több órát vett igénybe.

Beágyazásaink összehasonlítása a Sentence-BERT-tel, GPT-3 keresés és humán téma szakértők a tankönyvi tartalom és a tanult célkitűzések összehangolásában. Jelentjük pontosság@k, hányszor van a helyes válasz a top-k előrejelzésen belül.

Fabius

Fabius segít a vállalatoknak, hogy az ügyfelekkel folytatott beszélgetéseket strukturált betekintésekké alakítsák, amelyek a tervezést és a prioritások meghatározását szolgálják. Az OpenAI beágyazásai lehetővé teszik a vállalatok számára, hogy könnyebben megtalálják és megcímkézzék az ügyfélhívások átiratait a szolgáltatáskérésekkel.

Például az ügyfelek olyan szavakat használhatnak, mint az „automatizált” vagy „könnyen használható”, hogy jobb önkiszolgáló platformot kérjenek. Korábban Fabius fuzzy kulcsszavas keresést használt, hogy megpróbálja ezeket az átiratokat az önkiszolgáló platform címkéjével ellátni. Az OpenAI beágyazásaival most 2x több példát találhatnak általában, és 6x-10x több példát olyan elvont használati esetekkel rendelkező funkciókra, amelyekhez nincs egyértelmű kulcsszó, amelyet az ügyfelek használhatnának.

Minden API-ügyfél elkezdheti a beágyazási dokumentáció a beágyazás használatához az alkalmazásaikban.

Olvassa el a dokumentációt


Köszönetnyilvánítás

Köszönet a következőknek a kiadáshoz való hozzájárulásukért:

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 Ilyen például Kenny Hsu, Madeleine Thompson, Tabarak Khan és Toki Sherbakov.

Köszönet a következőknek a bejegyzéssel kapcsolatos visszajelzésükért: 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: none;
}
.vector-diagram img:first-child { display: block;
}

var printResponse = function (btn) { // válasz hozzáfűzése 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); // gomb elrejtése btn.style.display= 'nincs';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!forog.hossz) return; // minden forgatás halmazhoz rotates.forEach(function (r) { // az első gyermek mozgatása a végére n másodpercenként window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500; }) ;
};
var moveToEnd = function (szülő, gyermek) { parent.removeChild(child); szülő.appendChild(gyermek); // hozzáfűzi a szülőhöz
}; var initShowMore = function () { var showmores = document.querySelectorAll('.js-showmore'); showmores.forEach(function (e) { e.addEventListener('kattintás', function () { var showmoreparent = this.parentElement; if (!showmoreparent) return; var more = showmoreparent.querySelector('.js-more'); if (!more) return; more.style.display = 'blokk'; this.style.display = 'nincs'; }); });
}; // benne
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
import {Runtime, Inspector, Library} innen: „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 innen: “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 !== szélesség) change(width = w); } window.addEventListener(“ resize", átméretezett); return function() { window.removeEventListener("átméretezés", átméretezett); }; });
}; 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 létezik return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { “diagram”: “#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 létezik return new Inspector(document.querySelector(selector)); } else { return true; }
});

Időbélyeg:

Még több OpenAI