Presentazione dell'incorporamento di testo e codice nell'API OpenAI PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Presentazione dell'incorporamento di testo e codice nell'API OpenAI

Presentazione dell'incorporamento di testo e codice nell'API OpenAI

Stiamo introducendo gli incorporamenti, un nuovo endpoint nell'API OpenAI che semplifica l'esecuzione di attività di codice e linguaggio naturale come la ricerca semantica, il clustering, la modellazione degli argomenti e la classificazione. Gli incorporamenti sono rappresentazioni numeriche di concetti convertiti in sequenze numeriche, che consentono ai computer di comprendere facilmente le relazioni tra tali concetti. I nostri incorporamenti superano i modelli di punta in 3 benchmark standard, incluso un miglioramento relativo del 20% nella ricerca del codice.

Leggi la documentazioneLeggi la carta

Gli incorporamenti sono utili per lavorare con il linguaggio naturale e il codice, perché possono essere facilmente utilizzati e confrontati da altri modelli e algoritmi di machine learning come il clustering o la ricerca.

Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI

Gli incorporamenti numericamente simili sono anche semanticamente simili. Ad esempio, il vettore di incorporamento di "compagni canini dicono" sarà più simile al vettore di incorporamento di "woof" che a quello di "miagolio".

Presentazione dell'incorporamento di testo e codice nell'API OpenAI
Presentazione dell'incorporamento di testo e codice nell'API OpenAI

Il nuovo endpoint utilizza modelli di rete neurale, che sono discendenti di GPT-3, per mappare testo e codice su una rappresentazione vettoriale, "incorporandoli" in uno spazio ad alta dimensione. Ogni dimensione cattura alcuni aspetti dell'input.

Il nuovo /incorporamenti punto finale nel API OpenAI fornisce incorporamenti di testo e codice con poche righe di codice:

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

Stiamo rilasciando tre famiglie di modelli di incorporamento, ciascuno ottimizzato per funzionare bene su diverse funzionalità: somiglianza del testo, ricerca del testo e ricerca del codice. I modelli accettano testo o codice come input e restituiscono un vettore di incorporamento.

Modelli Casi d'uso
Somiglianza del testo: Cattura la somiglianza semantica tra parti di testo. similarità testuale-{ada, babbage, curie, davinci}-001 Clustering, regressione, rilevamento di anomalie, visualizzazione
Ricerca di testo: Recupero di informazioni semantiche sui documenti. ricerca-testo-{ada, babbage, curie, davinci}-{query, doc}-001 Ricerca, pertinenza del contesto, recupero delle informazioni
Ricerca del codice: trova il codice pertinente con una query in linguaggio naturale. code-search-{ada, babbage}-{code, text}-001 Ricerca e pertinenza del codice

Modelli di somiglianza del testo

I modelli di somiglianza del testo forniscono incorporamenti che catturano la somiglianza semantica di parti di testo. Questi modelli sono utili per molte attività, tra cui il clustering, visualizzazione datie classificazione.

La visualizzazione interattiva seguente mostra gli incorporamenti di esempi di testo dal set di dati DBpedia:

Trascina per eseguire una panoramica, scorrere o pizzicare per ingrandire

Incorporamenti dal text-similarity-babbage-001 modello, applicato al DBpedia set di dati. Abbiamo selezionato casualmente 100 campioni dal set di dati che copre 5 categorie e calcolato gli incorporamenti tramite il /incorporamenti punto finale. Le diverse categorie vengono visualizzate come 5 cluster chiari nello spazio di incorporamento. Per visualizzare lo spazio di incorporamento, abbiamo ridotto la dimensionalità di incorporamento da 2048 a 3 utilizzando PCA. È disponibile il codice su come visualizzare lo spazio di incorporamento nella dimensione 3D qui.

Per confrontare la somiglianza di due parti di testo, usa semplicemente il punto prodotto sugli incorporamenti di testo. Il risultato è un "punteggio di somiglianza", a volte chiamato "somiglianza del coseno,” tra –1 e 1, dove un numero più alto significa maggiore somiglianza. Nella maggior parte delle applicazioni, gli incorporamenti possono essere precalcolati e quindi il confronto del prodotto a punti è estremamente veloce da eseguire.

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)

Un uso comune degli incorporamenti consiste nell'usarli come funzionalità nelle attività di apprendimento automatico, come la classificazione. Nella letteratura sull'apprendimento automatico, quando si utilizza un classificatore lineare, questa attività di classificazione è chiamata "sonda lineare". I nostri modelli di somiglianza del testo ottengono nuovi risultati all'avanguardia sulla classificazione delle sonde lineari in InviatoVal (Conneau et al., 2018), un parametro di riferimento comunemente utilizzato per valutare la qualità dell'incorporamento.

Classificazione della sonda lineare su 7 set di dati
SOTA precedente (Gao et al. 2021)
90.2%
testo-somiglianza-davinci-001
92.2%
Mostra di più

Modelli di ricerca di testo

I modelli di ricerca di testo forniscono incorporamenti che consentono attività di ricerca su larga scala, come la ricerca di un documento pertinente in una raccolta di documenti a cui viene data una query di testo. L'incorporamento per i documenti e la query viene prodotto separatamente, quindi la somiglianza del coseno viene utilizzata per confrontare la somiglianza tra la query e ciascun documento.

La ricerca basata sull'incorporamento può generalizzare meglio delle tecniche di sovrapposizione di parole utilizzate nella ricerca di parole chiave classica, perché cattura il significato semantico del testo ed è meno sensibile a frasi o parole esatte. Valutiamo le prestazioni del modello di ricerca testuale su BEIR (Takur, et al. 2021) suite di valutazione della ricerca e ottenere prestazioni di ricerca migliori rispetto ai metodi precedenti. I nostri guida alla ricerca di testo fornisce maggiori dettagli sull'utilizzo degli incorporamenti per le attività di ricerca.

Modelli di ricerca del codice

I modelli di ricerca del codice forniscono incorporamenti di codice e testo per le attività di ricerca del codice. Data una raccolta di blocchi di codice, il compito è trovare il blocco di codice rilevante per una query in linguaggio naturale. Valutiamo i modelli di ricerca del codice sul CodeSearchNet (Husian et al., 2019) suite di valutazione in cui i nostri incorporamenti ottengono risultati significativamente migliori rispetto ai metodi precedenti. Dai un'occhiata al guida alla ricerca del codice per utilizzare gli incorporamenti per la ricerca del codice.

Precisione media su 6 linguaggi di programmazione
SOTA precedente (Guo et al. 2021)
77.4%
code-search-babbage-{doc, query}-001
93.5%
Mostra di più

Esempi dell'API Embeddings in azione

Ricerca JetBrains

La ricerca di JetBrains Laboratorio di fisica delle astroparticelle analizza dati come Il telegramma dell'astronomo e della NASA Circolari GCN, che sono rapporti che contengono eventi astronomici che non possono essere analizzati dagli algoritmi tradizionali.

Grazie all'inclusione di questi rapporti astronomici da parte di OpenAI, i ricercatori sono ora in grado di cercare eventi come "esplosioni di pulsar di granchio" in più database e pubblicazioni. Gli incorporamenti hanno anche ottenuto un'accuratezza del 99.85% sulla classificazione dell'origine dati tramite il clustering di k-medie.

Apprendimento FineTune

Apprendimento FineTune è un'azienda che costruisce soluzioni ibride uomo-IA per l'apprendimento, come cicli di apprendimento adattivo che aiutano gli studenti a raggiungere gli standard accademici.

Gli incorporamenti di OpenAI hanno notevolmente migliorato il compito di trovare il contenuto dei libri di testo in base agli obiettivi di apprendimento. Raggiungendo una precisione tra le prime 5 posizioni dell'89.1%, il modello di incorporamento di ricerca di testo e curiosità di OpenAI ha superato gli approcci precedenti come Sentence-BERT (64.5%). Mentre gli esperti umani sono ancora migliori, il team di FineTune è ora in grado di etichettare interi libri di testo in pochi secondi, in contrasto con le ore che hanno impiegato gli esperti.

Confronto dei nostri incorporamenti con Sentence-BERT, Ricerca GPT-3 ed esperti in materia umana per abbinare i contenuti dei libri di testo agli obiettivi appresi. Noi riferiamo precisione@k, il numero di volte in cui la risposta corretta rientra nelle prime k previsioni.

Fabius

Fabius aiuta le aziende a trasformare le conversazioni dei clienti in informazioni strutturate che informano la pianificazione e la definizione delle priorità. Gli incorporamenti di OpenAI consentono alle aziende di trovare e taggare più facilmente le trascrizioni delle chiamate dei clienti con le richieste di funzionalità.

Ad esempio, i clienti potrebbero usare parole come "automatizzato" o "facile da usare" per chiedere una migliore piattaforma self-service. In precedenza, Fabius utilizzava la ricerca di parole chiave fuzzy per tentare di contrassegnare quelle trascrizioni con l'etichetta della piattaforma self-service. Con gli incorporamenti di OpenAI, ora sono in grado di trovare 2 volte più esempi in generale e 6-10 volte più esempi per funzionalità con casi d'uso astratti che non hanno una parola chiave chiara che i clienti potrebbero utilizzare.

Tutti i clienti API possono iniziare con il documentazione degli incastri per l'utilizzo degli incorporamenti nelle loro applicazioni.

Leggi la documentazione


Ringraziamenti

Si ringraziano i seguenti per il loro contributo a questa versione:

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

Si ringraziano per il feedback su questo post: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.diagramma-vettoriale img { display: nessuno;
}
.diagramma-vettoriale 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') if (!responseEl || !callParentEl) return; callParentEl.appendChild(responseEl); // nascondi pulsante btn.style.display= 'nessuno';
}; var initRotate = funzione () { var ruota = document.querySelectorAll('.js-rotate'); se (!ruota.lunghezza) ritorna; // per ogni serie di rotazioni rotates.forEach(function (r) { // sposta il primo figlio alla fine ogni n secondi window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = funzione (genitore, figlio) { genitore.removeChild(figlio); genitore.appendChild(figlio); // aggiungi al genitore
}; var initShowMore = funzione () { 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 = 'blocco'; this.style.display = 'nessuno'; }); });
}; // dentro
document.addEventListener('DOMContentLoaded', function() { initRotate(); initShowMore();
});
importa {Runtime, Inspector, Library} da “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 da “https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3” const customWidth = funzione (selettore) { return (nuova libreria).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(“ resize", ridimensionato); return function() { window.removeEventListener ("resize", ridimensionato); }; });
}; const topk_renders = { “grafico”: “#topk-grafico”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key esiste return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { “grafico”: “#embed3d-grafico”, “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 esiste return new Inspector(document.querySelector(selector)); } else { return true; }
});

Timestamp:

Di più da OpenAI