Presentamos incrustaciones de texto y código en la API de OpenAI PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Introducción de incrustaciones de texto y código en la API de OpenAI

Introducción de incrustaciones de texto y código en la API de OpenAI

Estamos introduciendo incrustaciones, un nuevo punto final en la API de OpenAI que facilita la realización de tareas de código y lenguaje natural como búsqueda semántica, agrupación, modelado de temas y clasificación. Las incrustaciones son representaciones numéricas de conceptos convertidos en secuencias numéricas, lo que facilita que las computadoras comprendan las relaciones entre esos conceptos. Nuestras incrustaciones superan a los mejores modelos en 3 puntos de referencia estándar, incluida una mejora relativa del 20 % en la búsqueda de código.

Leer documentaciónLeer papel

Las incrustaciones son útiles para trabajar con código y lenguaje natural, ya que pueden consumirse y compararse fácilmente con otros modelos y algoritmos de aprendizaje automático, como la agrupación en clústeres o la búsqueda.

Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI

Las incrustaciones que son numéricamente similares también lo son semánticamente. Por ejemplo, el vector de incrustación de "compañeros caninos dicen" será más similar al vector de incrustación de "guau" que al de "miau".

Introducción de incrustaciones de texto y código en la API de OpenAI
Introducción de incrustaciones de texto y código en la API de OpenAI

El nuevo punto final utiliza modelos de redes neuronales, que son descendientes de GPT-3, para asignar texto y código a una representación vectorial, "incrustarlos" en un espacio de alta dimensión. Cada dimensión captura algún aspecto de la entrada.

El nuevo /incrustaciones punto final en el API OpenAI proporciona incrustaciones de texto y código con unas pocas líneas de código:

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

Estamos lanzando tres familias de modelos integrados, cada uno ajustado para funcionar bien en diferentes funcionalidades: similitud de texto, búsqueda de texto y búsqueda de código. Los modelos toman texto o código como entrada y devuelven un vector de incrustación.

fexibles Casos de uso
Similitud de texto: captura la similitud semántica entre fragmentos de texto. similitud de texto-{ada, babbage, curie, davinci}-001 Clustering, regresión, detección de anomalías, visualización
Búsqueda de texto: Recuperación de información semántica sobre documentos. búsqueda de texto-{ada, babbage, curie, davinci}-{consulta, doc}-001 Búsqueda, relevancia del contexto, recuperación de información
Búsqueda de código: Encuentra código relevante con una consulta en lenguaje natural. código-búsqueda-{ada, babbage}-{código, texto}-001 Búsqueda de código y relevancia

Modelos de similitud de texto

Los modelos de similitud de texto proporcionan incrustaciones que capturan la similitud semántica de los fragmentos de texto. Estos modelos son útiles para muchas tareas, incluyendo clustering, Visualización de datosy clasificación.

La siguiente visualización interactiva muestra incrustaciones de muestras de texto del conjunto de datos de DBpedia:

Arrastre para desplazarse, desplazarse o pellizcar para hacer zoom

incrustaciones de la text-similarity-babbage-001 modelo, aplicado a la DBpedia conjunto de datos Seleccionamos aleatoriamente 100 muestras del conjunto de datos que cubren 5 categorías y calculamos las incrustaciones a través de la /incrustaciones punto final Las diferentes categorías se muestran como 5 grupos claros en el espacio de incrustación. Para visualizar el espacio de incrustación, redujimos la dimensionalidad de incrustación de 2048 a 3 usando PCA. El código sobre cómo visualizar el espacio incrustado en la dimensión 3D está disponible esta página.

Para comparar la similitud de dos piezas de texto, simplemente use el producto de punto en las incrustaciones de texto. El resultado es una "puntuación de similitud", a veces llamada "similitud de coseno”, entre -1 y 1, donde un número más alto significa más similitud. En la mayoría de las aplicaciones, las incrustaciones se pueden precalcular y luego la comparación del producto escalar es extremadamente rápida de realizar.

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 popular de las incrustaciones es usarlos como funciones en tareas de aprendizaje automático, como la clasificación. En la literatura de aprendizaje automático, cuando se utiliza un clasificador lineal, esta tarea de clasificación se denomina "sonda lineal". Nuestros modelos de similitud de texto logran nuevos resultados de vanguardia en la clasificación de sonda lineal en Evaluación enviada (Conneau y otros, 2018), un punto de referencia de uso común para evaluar la calidad de incrustación.

Clasificación de sonda lineal en 7 conjuntos de datos
SOTA anterior (Gao et al. 2021)
90.2%
texto-similitud-davinci-001
92.2%
Mostrar más

Modelos de búsqueda de texto

Los modelos de búsqueda de texto proporcionan incrustaciones que permiten tareas de búsqueda a gran escala, como encontrar un documento relevante entre una colección de documentos dada una consulta de texto. La incrustación de los documentos y la consulta se produce por separado, y luego se usa la similitud del coseno para comparar la similitud entre la consulta y cada documento.

La búsqueda basada en incrustaciones puede generalizar mejor que las técnicas de superposición de palabras utilizadas en la búsqueda clásica de palabras clave, porque captura el significado semántico del texto y es menos sensible a frases o palabras exactas. Evaluamos el rendimiento del modelo de búsqueda de texto en el BEIR (Thakur, et al. 2021) suite de evaluación de búsqueda y obtener un mejor rendimiento de búsqueda que los métodos anteriores. Nuestro guía de búsqueda de texto proporciona más detalles sobre el uso de incrustaciones para tareas de búsqueda.

Modelos de búsqueda de código

Los modelos de búsqueda de código proporcionan incrustaciones de código y texto para tareas de búsqueda de código. Dada una colección de bloques de código, la tarea es encontrar el bloque de código relevante para una consulta en lenguaje natural. Evaluamos los modelos de búsqueda de código en el CódigoBuscarNet (Husian et al., 2019) suite de evaluación donde nuestras incrustaciones logran resultados significativamente mejores que los métodos anteriores. Revisar la guía de búsqueda de código para usar incrustaciones para la búsqueda de código.

Precisión promedio en 6 lenguajes de programación
SOTA anterior (Guo, et al. 2021)
77.4%
código-búsqueda-babbage-{doc, consulta}-001
93.5%
Mostrar más

Ejemplos de la API de incrustaciones en acción

Investigación de JetBrains

Investigación de JetBrains Laboratorio de Física de Astropartículas analiza datos como El telegrama del astrónomo y de la NASA Circulares GCN, que son informes que contienen eventos astronómicos que los algoritmos tradicionales no pueden analizar.

Impulsado por las incrustaciones de OpenAI de estos informes astronómicos, los investigadores ahora pueden buscar eventos como "estallidos de púlsares de cangrejo" en múltiples bases de datos y publicaciones. Las incrustaciones también lograron una precisión del 99.85 % en la clasificación de fuentes de datos a través de la agrupación en clústeres k-means.

Aprendizaje FineTune

Aprendizaje FineTune es una empresa que crea soluciones híbridas de inteligencia artificial humana para el aprendizaje, como bucles de aprendizaje adaptativo que ayudan a los estudiantes a alcanzar los estándares académicos.

Las incrustaciones de OpenAI mejoraron significativamente la tarea de encontrar contenido de libros de texto en función de los objetivos de aprendizaje. Con una precisión del 5 % entre los 89.1 primeros, el modelo de incrustaciones de curie de búsqueda de texto de OpenAI superó a enfoques anteriores como Sentence-BERT (64.5 %). Si bien los expertos humanos son aún mejores, el equipo de FineTune ahora puede etiquetar libros de texto completos en cuestión de segundos, en contraste con las horas que les tomó a los expertos.

Comparación de nuestras incrustaciones con Sentence-BERT, búsqueda GPT-3 y expertos en la materia humana para hacer coincidir el contenido de los libros de texto con los objetivos aprendidos. informamos precision@k, el número de veces que la respuesta correcta se encuentra dentro de las predicciones top-k.

Fabius

Fabius ayuda a las empresas a convertir las conversaciones de los clientes en conocimientos estructurados que informan la planificación y la priorización. Las incrustaciones de OpenAI permiten a las empresas encontrar y etiquetar más fácilmente las transcripciones de llamadas de los clientes con solicitudes de funciones.

Por ejemplo, los clientes pueden usar palabras como "automatizado" o "fácil de usar" para solicitar una mejor plataforma de autoservicio. Anteriormente, Fabius utilizaba la búsqueda de palabras clave aproximadas para intentar etiquetar esas transcripciones con la etiqueta de la plataforma de autoservicio. Con las incrustaciones de OpenAI, ahora pueden encontrar 2 veces más ejemplos en general y 6 a 10 veces más ejemplos de características con casos de uso abstractos que no tienen una palabra clave clara que los clientes podrían usar.

Todos los clientes de API pueden comenzar con el documentación de incrustaciones por utilizar incrustaciones en sus aplicaciones.

Leer documentación


AGRADECIMIENTOS

Gracias a las siguientes personas por sus contribuciones a este comunicado:

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

Gracias a los siguientes por sus comentarios sobre esta publicación: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagrama img { pantalla: ninguno;
}
.diagrama vectorial img:primer hijo { mostrar: bloque;
}

var printResponse = function (btn) { // agregar respuesta 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); // ocultar botón btn.style.display= 'ninguno';
}; var initRotate = función () { var rota = document.querySelectorAll('.js-rotate'); if (!rota.longitud) return; // para cada conjunto de rotaciones rota.forEach(función (r) { // mueve el primer elemento secundario para finalizar cada n segundos window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (padre, hijo) { padre.removeChild(hijo); padre.appendChild(hijo); // anexar al padre
}; 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'; }); });
}; // en eso
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importar {Tiempo de ejecución, Inspector, Biblioteca} desde "https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js";
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
importar notebook_embed3d desde "https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3" const customWidth = function (selector) { return (nueva biblioteca).Generators.observe(function(change) { var width = change(document.querySelector(selector).clientWidth); función redimensionada() { var w = document.querySelector(selector).clientWidth; if (w !== ancho) change(width = w); } window.addEventListener(“ redimensionar”, redimensionado); return function() { window.removeEventListener(“redimensionar”, redimensionado); }; });
}; const topk_renders = { “gráfico”: “#gráfico-superior”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key existe devuelve nuevo Inspector(document.querySelector(selector)); } else { devuelve verdadero; }
}); const embed3d_renders = { "gráfico": "#embed3d-chart", "leyenda": "#embed3d-legend",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#embed3d-chart”)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // clave existe devuelve nuevo Inspector(document.querySelector(selector)); } else { devuelve verdadero; }
});

Sello de tiempo:

Mas de OpenAI