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.
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.
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”.
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:
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.
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.
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.
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.
.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; }
});
- '
- 100
- 11
- 3d
- 7
- alcançado
- em
- algoritmos
- entre
- api
- aplicações
- disponível
- referência
- Bloquear
- Prédio
- chamada
- Pode obter
- casos
- alterar
- criança
- classificação
- código
- coleção
- Empresas
- Empresa
- comparado
- computadores
- conteúdo
- conversas
- Clientes
- dados,
- bases de dados
- Detecção
- diferente
- Dimensão
- Ecrã
- INSTITUCIONAIS
- facilmente
- Ponto final
- eventos
- exemplo
- especialistas
- famílias
- RÁPIDO
- Característica
- Funcionalidades
- retornos
- Primeiro nome
- seguinte
- função
- Geral
- altura
- ajudar
- ajuda
- Esconder
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- HÍBRIDO
- Incluindo
- INFORMAÇÕES
- insights
- interativo
- IT
- Chave
- língua
- aprendido
- aprendizagem
- Biblioteca
- literatura
- máquina
- aprendizado de máquina
- mapa,
- correspondente
- Importância
- significado
- Métrica
- modelo
- modelos
- Morgan
- a maioria
- mover
- NASA
- natural
- rede
- número
- Outros
- atuação
- Frases
- Física
- planejamento
- plataforma
- Popular
- Previsões
- sonda
- Produzido
- Produto
- Programação
- fornecer
- fornece
- qualidade
- RE
- Relacionamentos
- liberar
- Denunciar
- Relatórios
- resposta
- Resultados
- Pesquisar
- selecionado
- conjunto
- semelhante
- Soluções
- Espaço
- padrões
- começado
- estado-da-arte
- estilo
- tarefas
- Profissionais
- técnicas
- Através da
- topo
- tradicional
- compreender
- usar
- visualização
- W
- W3
- Wikipedia
- dentro
- palavras
- trabalhar
- Yuan