Présentation des intégrations de texte et de code dans l'API OpenAI PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Présentation des incorporations de texte et de code dans l'API OpenAI

Présentation des incorporations de texte et de code dans l'API OpenAI

Nous introduisons les incorporations, un nouveau point de terminaison dans l'API OpenAI qui facilite l'exécution de tâches de langage naturel et de code telles que la recherche sémantique, le regroupement, la modélisation de sujets et la classification. Les incorporations sont des représentations numériques de concepts converties en séquences de nombres, ce qui permet aux ordinateurs de comprendre facilement les relations entre ces concepts. Nos intégrations surpassent les meilleurs modèles dans 3 benchmarks standard, y compris une amélioration relative de 20 % dans la recherche de code.

Lire la documentationLire l'article

Les incorporations sont utiles pour travailler avec le langage naturel et le code, car elles peuvent être facilement consommées et comparées par d'autres modèles et algorithmes d'apprentissage automatique comme le clustering ou la recherche.

Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI

Les imbrications qui sont numériquement similaires sont également sémantiquement similaires. Par exemple, le vecteur d'intégration de "les compagnons canins disent" sera plus similaire au vecteur d'intégration de "woof" qu'à celui de "miaou".

Présentation des incorporations de texte et de code dans l'API OpenAI
Présentation des incorporations de texte et de code dans l'API OpenAI

Le nouveau point de terminaison utilise des modèles de réseau neuronal, qui sont des descendants de GPT-3, pour mapper le texte et le code sur une représentation vectorielle, en les « incorporant » dans un espace de grande dimension. Chaque dimension capture un aspect de l'entrée.

Le nouveau système d’ /encastrements point final dans le API OpenAI fournit des incorporations de texte et de code avec quelques lignes de code :

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

Nous publions trois familles de modèles d'intégration, chacun réglé pour bien fonctionner sur différentes fonctionnalités : similarité de texte, recherche de texte et recherche de code. Les modèles prennent du texte ou du code en entrée et renvoient un vecteur d'intégration.

Des modèles photo Cas d'usage
Similitude du texte: capture la similarité sémantique entre des morceaux de texte. similarité de texte-{ada, babbage, curie, davinci}-001 Clustering, régression, détection d'anomalies, visualisation
Recherche de texte: Recherche d'informations sémantiques sur des documents. recherche de texte-{ada, babbage, curie, davinci}-{query, doc}-001 Recherche, pertinence du contexte, recherche d'informations
Recherche de code: Trouvez le code pertinent avec une requête en langage naturel. recherche de code-{ada, babbage}-{code, text}-001 Recherche de code et pertinence

Modèles de similarité de texte

Les modèles de similarité de texte fournissent des incorporations qui capturent la similarité sémantique de morceaux de texte. Ces modèles sont utiles pour de nombreuses tâches, y compris regroupement, visualisation de donnéeset classification.

La visualisation interactive suivante montre des incorporations d'échantillons de texte à partir de l'ensemble de données DBpedia :

Faites glisser pour effectuer un panoramique, faites défiler ou pincez pour zoomer

Les encastrements de la text-similarity-babbage-001 modèle, appliqué à la DBpédia base de données. Nous avons sélectionné au hasard 100 échantillons de l'ensemble de données couvrant 5 catégories, et calculé les intégrations via le /encastrements point final. Les différentes catégories apparaissent sous la forme de 5 clusters clairs dans l'espace d'intégration. Pour visualiser l'espace d'intégration, nous avons réduit la dimensionnalité d'intégration de 2048 à 3 en utilisant PCA. Le code permettant de visualiser l'espace d'intégration dans la dimension 3D est disponible ici.

Pour comparer la similarité de deux morceaux de texte, il vous suffit d'utiliser le produit scalaire sur les incrustations de texte. Le résultat est un « score de similarité », parfois appelé «similitude cosinus», entre –1 et 1, où un nombre plus élevé signifie plus de similarité. Dans la plupart des applications, les plongements peuvent être pré-calculés, puis la comparaison du produit scalaire est extrêmement rapide à réaliser.

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)

Une utilisation courante des représentations vectorielles continues consiste à les utiliser comme fonctionnalités dans des tâches d'apprentissage automatique, telles que la classification. Dans la littérature sur l'apprentissage automatique, lors de l'utilisation d'un classificateur linéaire, cette tâche de classification est appelée une « sonde linéaire ». Nos modèles de similarité de texte obtiennent de nouveaux résultats de pointe sur la classification linéaire des sondes dans EnvoyéEval (Conneau et coll., 2018), une référence couramment utilisée pour évaluer la qualité de l'intégration.

Classification linéaire des sondes sur 7 jeux de données
SOTA précédent (Gao et coll. 2021)
90.2%
texte-similitude-davinci-001
92.2%
Afficher plus

Modèles de recherche de texte

Les modèles de recherche de texte fournissent des incorporations qui permettent des tâches de recherche à grande échelle, comme la recherche d'un document pertinent parmi une collection de documents à partir d'une requête textuelle. L'intégration des documents et de la requête est produite séparément, puis la similarité cosinus est utilisée pour comparer la similarité entre la requête et chaque document.

La recherche basée sur l'intégration peut mieux généraliser que les techniques de chevauchement de mots utilisées dans la recherche par mot-clé classique, car elle capture la signification sémantique du texte et est moins sensible aux phrases ou mots exacts. Nous évaluons les performances du modèle de recherche textuelle sur BIER (Thakur et al. 2021) recherchez la suite d'évaluation et obtenez de meilleures performances de recherche que les méthodes précédentes. Notre guide de recherche de texte fournit plus de détails sur l'utilisation des représentations vectorielles continues pour les tâches de recherche.

Modèles de recherche de code

Les modèles de recherche de code fournissent des incorporations de code et de texte pour les tâches de recherche de code. Étant donné une collection de blocs de code, la tâche consiste à trouver le bloc de code pertinent pour une requête en langage naturel. Nous évaluons les modèles de recherche de code sur le CodeRechercheNet (Husian et coll., 2019) suite d'évaluation où nos intégrations obtiennent des résultats nettement meilleurs que les méthodes précédentes. Vérifiez Guide de recherche de codes pour utiliser les incorporations pour la recherche de code.

Précision moyenne sur 6 langages de programmation
SOTA précédent (Guo et coll. 2021)
77.4%
code-search-babbage-{doc, requête}-001
93.5%
Afficher plus

Exemples d'API Embeddings en action

Recherche JetBrains

Recherche JetBrains Laboratoire de physique des astroparticules analyse des données comme Le télégramme de l'astronome et de la NASA Circulaires GCN, qui sont des rapports contenant des événements astronomiques qui ne peuvent pas être analysés par les algorithmes traditionnels.

Propulsés par les intégrations d'OpenAI de ces rapports astronomiques, les chercheurs sont désormais en mesure de rechercher des événements tels que des "rafales de pulsars de crabe" dans plusieurs bases de données et publications. Les intégrations ont également atteint une précision de 99.85 % sur la classification des sources de données grâce au clustering k-means.

Apprentissage précis

Apprentissage précis est une entreprise qui crée des solutions hybrides humain-IA pour l'apprentissage, comme boucles d'apprentissage adaptatives qui aident les étudiants à atteindre les normes académiques.

Les intégrations d'OpenAI ont considérablement amélioré la tâche de recherche de contenu de manuels en fonction des objectifs d'apprentissage. Atteignant une précision de 5 % dans le top 89.1, le modèle d'incorporation de curie de recherche de texte d'OpenAI a surpassé les approches précédentes telles que Sentence-BERT (64.5 %). Alors que les experts humains sont encore meilleurs, l'équipe FineTune est désormais capable d'étiqueter des manuels entiers en quelques secondes, contrairement aux heures qu'il a fallu aux experts.

Comparaison de nos plongements avec Sentence-BERT, Recherche GPT-3 et des experts humains en la matière pour faire correspondre le contenu des manuels avec les objectifs appris. Nous rapportons précision@k, le nombre de fois que la bonne réponse se situe dans les top-k prédictions.

Fabius

Fabius aide les entreprises à transformer les conversations avec les clients en informations structurées qui éclairent la planification et la hiérarchisation. Les intégrations d'OpenAI permettent aux entreprises de trouver et de marquer plus facilement les transcriptions des appels des clients avec des demandes de fonctionnalités.

Par exemple, les clients peuvent utiliser des mots comme « automatisé » ou « facile à utiliser » pour demander une meilleure plate-forme en libre-service. Auparavant, Fabius utilisait une recherche par mots-clés flous pour tenter de marquer ces transcriptions avec l'étiquette de la plate-forme en libre-service. Avec les incorporations d'OpenAI, ils sont désormais en mesure de trouver 2x plus d'exemples en général, et 6x à 10x plus d'exemples pour les fonctionnalités avec des cas d'utilisation abstraits qui n'ont pas de mot-clé clair que les clients pourraient utiliser.

Tous les clients de l'API peuvent commencer avec le documentation des incorporations pour utiliser les intégrations dans leurs applications.

Lire la documentation


Remerciements

Merci aux personnes suivantes pour leurs contributions à cette version :

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

Merci aux personnes suivantes pour leurs commentaires sur cet article : Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagram img { affichage : aucun ;
}
.vector-diagram img:first-child { affichage : bloc ;
}

var printResponse = function (btn) { // ajouter la réponse 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); // masque le bouton btn.style.display= 'aucun';
} ; var initRotate = function () { var tourne = document.querySelectorAll('.js-rotate'); si (!tourne.longueur) retour ; // pour chaque ensemble de rotations rotates.forEach(function (r) { // déplacer le premier enfant à la fin toutes les n secondes window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (parent, enfant) { parent.removeChild(child); parent.appendChild(enfant); // ajoute au parent
} ; 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'; }); });
} ; // initialisation
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importer {Runtime, Inspector, Library} depuis "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 depuis "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(“ redimensionner", redimensionné); return function() { window.removeEventListener("redimensionner", redimensionné); }; });
} ; const topk_renders = { "graphique": "#topk-graphique",
};
new Runtime(Object.assign(new Library, {width: customWidth("#topk-chart")})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // clé existe 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) { // clé existe return new Inspector(document.querySelector(selector)); } else { return true; }
});

Horodatage:

Plus de OpenAI