Apresentando as incorporações de texto e código na API OpenAI PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Apresentando as incorporações de texto e código na API OpenAI

Apresentando as incorporações de texto e código na API OpenAI

Estamos introduzindo embeddings, um novo endpoint na API OpenAI que facilita a execução de tarefas de linguagem natural e código, como pesquisa semântica, clustering, modelagem de tópicos e classificação. Embeddings são representações numéricas de conceitos convertidos em sequências numéricas, o que torna mais fácil para os computadores entenderem as relações entre esses conceitos. Nossos embeddings superam os principais modelos em 3 benchmarks padrão, incluindo uma melhoria relativa de 20% na pesquisa de código.

Leia a documentaçãoLeia o artigo

Os embeddings são úteis para trabalhar com linguagem natural e código, porque podem ser prontamente consumidos e comparados por outros modelos e algoritmos de aprendizado de máquina, como clustering ou pesquisa.

Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI

Embeddings que são numericamente semelhantes também são semanticamente semelhantes. Por exemplo, o vetor de incorporação de “companheiros caninos dizem” será mais semelhante ao vetor de incorporação de “woof” do que de “miau”.

Apresentando as incorporações de texto e código na API OpenAI
Apresentando as incorporações de texto e código na API OpenAI

O novo endpoint usa modelos de rede neural, que são descendentes do GPT-3, para mapear texto e código para uma representação vetorial – “incorporando-os” em um espaço de alta dimensão. Cada dimensão captura algum aspecto da entrada.

O novo /incorporações ponto final no API OpenAI fornece embeddings de texto e código com algumas linhas de código:

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

Estamos lançando três famílias de modelos de incorporação, cada uma ajustada para funcionar bem em diferentes funcionalidades: similaridade de texto, pesquisa de texto e pesquisa de código. Os modelos recebem texto ou código como entrada e retornam um vetor de incorporação.

Modelos Casos de uso
Semelhança de texto: Captura a semelhança semântica entre partes do texto. text-similarity-{ada, bababage, curie, davinci}-001 Clustering, regressão, detecção de anomalias, visualização
Pesquisa de texto: Recuperação de informação semântica sobre documentos. text-search-{ada, bababage, curie, davinci}-{query, doc}-001 Pesquisa, relevância de contexto, recuperação de informações
Pesquisa de código: encontre o código relevante com uma consulta em linguagem natural. pesquisa de código-{ada, babage}-{código, texto}-001 Pesquisa de código e relevância

Modelos de similaridade de texto

Os modelos de similaridade de texto fornecem embeddings que capturam a similaridade semântica de partes do texto. Esses modelos são úteis para muitas tarefas, incluindo agrupamento, Visualização de dados e classificação.

A seguinte visualização interativa mostra incorporações de amostras de texto do conjunto de dados DBpedia:

Arraste para deslocar, rolar ou beliscar para ampliar

Incorporações de text-similarity-babbage-001 modelo, aplicado ao DBpédia conjunto de dados. Selecionamos aleatoriamente 100 amostras do conjunto de dados cobrindo 5 categorias e computamos as incorporações por meio do /incorporações ponto final. As diferentes categorias aparecem como 5 clusters claros no espaço de incorporação. Para visualizar o espaço de incorporação, reduzimos a dimensionalidade de incorporação de 2048 para 3 usando PCA. O código de como visualizar o espaço de incorporação na dimensão 3D está disponível SUA PARTICIPAÇÃO FAZ A DIFERENÇA.

Para comparar a semelhança de dois pedaços de texto, basta usar o ponto de produto nas incorporações de texto. O resultado é uma “pontuação de similaridade”, às vezes chamada de “similaridade de cosseno”, entre –1 e 1, onde um número maior significa mais similaridade. Na maioria das aplicações, os embeddings podem ser pré-computados e, em seguida, a comparação do produto escalar é extremamente 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)

Um uso popular de embeddings é usá-los como recursos em tarefas de aprendizado de máquina, como classificação. Na literatura de aprendizado de máquina, ao usar um classificador linear, essa tarefa de classificação é chamada de “sonda linear”. Nossos modelos de similaridade de texto alcançam novos resultados de última geração na classificação de sondas lineares em EnviadoEval (Conneau et al., 2018), um benchmark comumente usado para avaliar a qualidade de incorporação.

Classificação de sonda linear em 7 conjuntos de dados
Anterior SOTA (Gao et ai. 2021)
90.2%
texto-semelhança-davinci-001
92.2%
Mostre mais

Modelos de pesquisa de texto

Os modelos de pesquisa de texto fornecem incorporações que permitem tarefas de pesquisa em grande escala, como localizar um documento relevante entre uma coleção de documentos com base em uma consulta de texto. A incorporação dos documentos e da consulta é produzida separadamente e, em seguida, a semelhança de cosseno é usada para comparar a semelhança entre a consulta e cada documento.

A pesquisa baseada em incorporação pode generalizar melhor do que as técnicas de sobreposição de palavras usadas na pesquisa clássica de palavras-chave, porque captura o significado semântico do texto e é menos sensível a frases ou palavras exatas. Avaliamos o desempenho do modelo de pesquisa de texto no BEIR (Thakur, et ai. 2021) suíte de avaliação de pesquisa e obter melhor desempenho de pesquisa do que os métodos anteriores. Nosso guia de pesquisa de texto fornece mais detalhes sobre o uso de embeddings para tarefas de pesquisa.

Modelos de pesquisa de código

Os modelos de pesquisa de código fornecem incorporações de código e texto para tarefas de pesquisa de código. Dada uma coleção de blocos de código, a tarefa é encontrar o bloco de código relevante para uma consulta em linguagem natural. Avaliamos os modelos de busca de código no CodeSearchNet (Husian et al., 2019) onde nossos embeddings alcançam resultados significativamente melhores do que os métodos anteriores. Confira o guia de pesquisa de código para usar embeddings para pesquisa de código.

Precisão média em 6 linguagens de programação
Anterior SOTA (Guo, et ai. 2021)
77.4%
código-search-babbage-{doc, consulta}-001
93.5%
Mostre mais

Exemplos da API Embeddings em ação

Pesquisa JetBrains

Pesquisa da JetBrains Laboratório de Física de Astropartículas analisa dados como O Telegrama do Astrônomo e da NASA Circulares GCN, que são relatórios que contêm eventos astronômicos que não podem ser analisados ​​por algoritmos tradicionais.

Com a integração desses relatórios astronômicos da OpenAI, os pesquisadores agora podem pesquisar eventos como “explosões de pulsar de caranguejo” em vários bancos de dados e publicações. Os embeddings também alcançaram 99.85% de precisão na classificação da fonte de dados por meio do agrupamento k-means.

Aprendizado de ajuste fino

Aprendizado de ajuste fino é uma empresa que cria soluções híbridas de IA humana para aprendizado, como loops de aprendizado adaptativo que ajudam os alunos a atingir os padrões acadêmicos.

As incorporações do OpenAI melhoraram significativamente a tarefa de encontrar conteúdo de livros didáticos com base nos objetivos de aprendizagem. Alcançando uma precisão top 5 de 89.1%, o modelo de embeddings de pesquisa de texto-curie da OpenAI superou abordagens anteriores como Sentence-BERT (64.5%). Embora os especialistas humanos ainda sejam melhores, a equipe do FineTune agora pode rotular livros didáticos inteiros em questão de segundos, em contraste com as horas que os especialistas demoravam.

Comparação de nossas incorporações com Sentence-BERT, Pesquisa GPT-3 e especialistas humanos no assunto para combinar o conteúdo dos livros didáticos com os objetivos aprendidos. Relatamos precisão@k, o número de vezes que a resposta correta está dentro das k principais previsões.

Fabius

Fabius ajuda as empresas a transformar as conversas com os clientes em insights estruturados que informam o planejamento e a priorização. As incorporações do OpenAI permitem que as empresas encontrem e marquem com mais facilidade as transcrições de chamadas de clientes com solicitações de recursos.

Por exemplo, os clientes podem usar palavras como “automatizado” ou “fácil de usar” para solicitar uma melhor plataforma de autoatendimento. Anteriormente, Fabius usava a pesquisa de palavras-chave difusa para tentar marcar essas transcrições com o rótulo da plataforma de autoatendimento. Com os embeddings do OpenAI, eles agora podem encontrar 2x mais exemplos em geral e 6x a 10x mais exemplos de recursos com casos de uso abstratos que não têm uma palavra-chave clara que os clientes podem usar.

Todos os clientes da API podem começar com o documentação de embeddings para usar embeddings em seus aplicativos.

Leia a documentação


Agradecimentos

Agradecemos aos seguintes por suas contribuições para esta versão:

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

Obrigado aos seguintes por seus comentários sobre este post: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vetor-diagram img { display: nenhum;
}
.vetor-diagram img:first-child { display: block;
}

var printResponse = function (btn) { // anexa a resposta 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); // botão ocultar btn.style.display= 'none';
}; var initRotate = function () { var gira = document.querySelectorAll('.js-rotate'); if (!rotates.length) return; // para cada conjunto de rotações rotates.forEach(function (r) { // move o primeiro filho para terminar a cada n segundos window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (pai, filho) { parent.removeChild(filho); parent.appendChild(filho); // anexa ao pai
}; 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'; }); });
}; // iniciar
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
importe {Runtime, Inspector, Library} de “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 from “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 !== largura) change(width = w); } window.addEventListener(“ redimensionar”, redimensionado); return function() { window.removeEventListener(“redimensionar”, redimensionado); }; });
}; const topk_renders = { “gráfico”: “#topk-chart”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key existe return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { “gráfico”: “#embed3d-chart”, “legenda”: ​​“#embed3d-legend”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#embed3d-chart”)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // key existe return new Inspector(document.querySelector(selector)); } else { return true; }
});

Carimbo de hora:

Mais de OpenAI