OpenAI API PlatoBlockchain Veri Zekasına Metin ve Kod Yerleştirmelerle Tanışın. Dikey Arama. Ai.

OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın

OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın

OpenAI API'sinde anlamsal arama, kümeleme, konu modelleme ve sınıflandırma gibi doğal dil ve kod görevlerini gerçekleştirmeyi kolaylaştıran yeni bir uç nokta olan yerleştirmeleri sunuyoruz. Gömmeler, bilgisayarların bu kavramlar arasındaki ilişkileri anlamasını kolaylaştıran, sayı dizilerine dönüştürülmüş kavramların sayısal temsilleridir. Yerleştirmelerimiz, kod aramada %3 göreli iyileştirme dahil olmak üzere 20 standart karşılaştırmada en iyi modellerden daha iyi performans gösterir.

Belgeleri okuyunMakaleyi okuyun

Gömmeler, doğal dil ve kodla çalışmak için kullanışlıdır, çünkü bunlar, kümeleme veya arama gibi diğer makine öğrenimi modelleri ve algoritmaları tarafından kolayca tüketilebilir ve karşılaştırılabilir.

OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın

Sayısal olarak benzer olan gömmeler de anlamsal olarak benzerdir. Örneğin, "köpek arkadaşları söylüyor" ifadesinin yerleştirme vektörü, "miyav"dan çok "hav" yerleştirme vektörüne benzer olacaktır.

OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın
OpenAI API'sinde Metin ve Kod Gömmeleriyle Tanışın

Yeni uç nokta, metin ve kodu bir vektör temsiline eşlemek için GPT-3'ün soyundan gelen sinir ağı modellerini kullanır ve bunları yüksek boyutlu bir uzaya "gömür". Her boyut, girdinin bir yönünü yakalar.

Yeni /gömmeler uç nokta OpenAI API'sı birkaç satır kod ile metin ve kod yerleştirmeleri sağlar:

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

Her biri farklı işlevlerde iyi performans gösterecek şekilde ayarlanmış üç yerleştirme modeli ailesini piyasaya sürüyoruz: metin benzerliği, metin arama ve kod arama. Modeller, girdi olarak metin veya kod alır ve bir gömme vektörü döndürür.

Modeller Kullanım ÇÖZÜMLER
Metin benzerliği: Metin parçaları arasındaki anlamsal benzerliği yakalar. metin benzerliği-{ada, babbage, curie, davinci}-001 Kümeleme, regresyon, anomali tespiti, görselleştirme
Metin arama: Belgeler üzerinden anlamsal bilgi alma. metin arama-{ada, babbage, curie, davinci}-{sorgu, doc}-001 Arama, bağlam alaka düzeyi, bilgi alma
Kod araması: Doğal dilde bir sorgu ile ilgili kodu bulun. kod arama-{ada, babbage}-{kod, metin}-001 Kod arama ve alaka düzeyi

Metin Benzerlik Modelleri

Metin benzerliği modelleri, metin parçalarının anlamsal benzerliğini yakalayan yerleştirmeler sağlar. Bu modeller, aşağıdakiler de dahil olmak üzere birçok görev için kullanışlıdır: kümeleme, veri goruntuleme, ve sınıflandırma.

Aşağıdaki etkileşimli görselleştirme, DBpedia veri kümesinden metin örneklerinin gömülmesini gösterir:

Kaydırmak için sürükleyin, yakınlaştırmak için kaydırın veya sıkıştırın

Gömmeler text-similarity-babbage-001 uygulanan model, DBpedia veri kümesi. 100 kategoriyi kapsayan veri setinden rastgele 5 örnek seçtik ve gömmeleri hesapladık. /gömmeler uç nokta. Farklı kategoriler, yerleştirme alanında 5 net küme olarak görünür. Gömme alanını görselleştirmek için, gömme boyutunu kullanarak 2048'den 3'e düşürdük. PCA. 3B boyutta gömme alanının nasıl görselleştirileceğine ilişkin kod mevcuttur okuyun.

İki metin parçasının benzerliğini karşılaştırmak için nokta ürün metin yerleştirmelerinde. Sonuç, bazen “benzerlik puanı” olarak adlandırılan bir “benzerlik puanı”dır.kosinüs benzerliği”, –1 ile 1 arasında, burada daha yüksek bir sayı daha fazla benzerlik anlamına gelir. Çoğu uygulamada, gömmeler önceden hesaplanabilir ve daha sonra nokta çarpım karşılaştırmasını gerçekleştirmek son derece hızlıdır.

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)

Gömmelerin popüler bir kullanımı, bunları sınıflandırma gibi makine öğrenimi görevlerinde özellik olarak kullanmaktır. Makine öğrenimi literatüründe, doğrusal bir sınıflandırıcı kullanıldığında, bu sınıflandırma görevine "doğrusal araştırma" adı verilir. Metin benzerliği modellerimiz, doğrusal prob sınıflandırmasında en son teknolojiye sahip yeni sonuçlar elde etmektedir. GönderilenEval (Conneau ve diğerleri, 2018), gömme kalitesini değerlendirmek için yaygın olarak kullanılan bir ölçüt.

7 veri kümesi üzerinden doğrusal prob sınıflandırması
Önceki SOTA (Gao ve ark. 2021)
%90.2
metin-benzerlik-davinci-001
%92.2
Daha fazla göster

Metin Arama Modelleri

Metin arama modelleri, metin sorgusu verilen bir belge koleksiyonu arasında ilgili bir belgeyi bulmak gibi büyük ölçekli arama görevlerini etkinleştiren yerleştirmeler sağlar. Belgeler ve sorgu için gömme ayrı olarak üretilir ve ardından sorgu ile her belge arasındaki benzerliği karşılaştırmak için kosinüs benzerliği kullanılır.

Gömme tabanlı arama, metnin anlamsal anlamını yakaladığı ve tam ifadelere veya kelimelere daha az duyarlı olduğu için, klasik anahtar kelime aramasında kullanılan kelime örtüşme tekniklerinden daha iyi genelleme yapabilir. Metin arama modelinin performansını BIR (Thakur ve ark. 2021) değerlendirme paketini arayın ve önceki yöntemlerden daha iyi arama performansı elde edin. Bizim metin arama kılavuzu arama görevleri için yerleştirmeleri kullanma hakkında daha fazla ayrıntı sağlar.

Kod Arama Modelleri

Kod arama modelleri, kod arama görevleri için kod ve metin yerleştirmeleri sağlar. Bir kod blokları koleksiyonu verildiğinde, görev bir doğal dil sorgusu için ilgili kod bloğunu bulmaktır. Üzerinde kod arama modellerini değerlendiriyoruz. KodArama Ağı (Husian ve diğerleri, 2019) yerleştirmelerimizin önceki yöntemlerden önemli ölçüde daha iyi sonuçlar elde ettiği değerlendirme paketi. Kontrol et kod arama kılavuzu kod araması için yerleştirmeleri kullanmak için.

6 programlama dilinde ortalama doğruluk
Önceki SOTA (Guo ve ark. 2021)
%77.4
kod-arama-babbage-{doc, sorgu}-001
%93.5
Daha fazla göster

Gömme API'sinin Eylemdeki Örnekleri

JetBrains Araştırması

JetBrains Araştırmaları Astropartikül Fizik Laboratuvarı gibi verileri analiz eder Gökbilimcinin Telgrafı ve NASA'nın GCN Genelgelerigeleneksel algoritmalar tarafından ayrıştırılamayan astronomik olayları içeren raporlardır.

OpenAI'nin bu astronomik raporları yerleştirmesiyle güçlendirilen araştırmacılar, artık birden fazla veri tabanı ve yayında “yengeç pulsar patlamaları” gibi olayları arayabiliyor. Gömmeler ayrıca k-ortalama kümeleme yoluyla veri kaynağı sınıflandırmasında %99.85 doğruluk elde etti.

İnce Ayar Öğrenimi

İnce Ayar Öğrenimi gibi öğrenme için hibrit insan-AI çözümleri oluşturan bir şirkettir. uyarlanabilir öğrenme döngüleri öğrencilerin akademik standartlara ulaşmalarına yardımcı olur.

OpenAI'nin yerleştirmeleri, öğrenme hedeflerine dayalı ders kitabı içeriği bulma görevini önemli ölçüde iyileştirdi. %5'lik bir ilk 89.1 doğruluğa ulaşan OpenAI'nin metin arama-küre yerleştirme modeli, Cümle-BERT (%64.5) gibi önceki yaklaşımlardan daha iyi performans gösterdi. İnsan uzmanlar hala daha iyi olsa da, FineTune ekibi artık tüm ders kitaplarını, uzmanların harcadığı saatlerin aksine, birkaç saniye içinde etiketleyebiliyor.

Gömmelerimizin Cümle-BERT ile karşılaştırılması, GPT-3 arama ve ders kitabı içeriğini öğrenilen hedeflerle eşleştirmek için insan konu uzmanları. rapor ediyoruz doğruluk@k, doğru cevabın ilk k tahminler içinde olduğu sayı.

Fabius

Fabius şirketlerin müşteri konuşmalarını, planlama ve önceliklendirme konusunda bilgi veren yapılandırılmış içgörülere dönüştürmesine yardımcı olur. OpenAI'nin yerleştirmeleri, şirketlerin müşteri arama dökümlerini özellik istekleriyle daha kolay bulmasına ve etiketlemesine olanak tanır.

Örneğin, müşteriler daha iyi bir self servis platformu istemek için "otomatik" veya "kullanımı kolay" gibi kelimeler kullanabilir. Daha önce Fabius, bu dökümleri self servis platform etiketiyle etiketlemeye çalışmak için bulanık anahtar kelime araması kullanıyordu. OpenAI'nin yerleştirmeleriyle, artık genel olarak 2 kat daha fazla örnek ve müşterilerin kullanabileceği net bir anahtar kelimeye sahip olmayan soyut kullanım durumlarına sahip özellikler için 6 kat – 10 kat daha fazla örnek bulabiliyorlar.

Tüm API müşterileri şunları kullanmaya başlayabilir: yerleştirme belgeleri uygulamalarında gömme kullanmak için.

Belgeleri okuyun


Teşekkürler

Bu sürüme katkılarından dolayı aşağıdakilere teşekkür ederiz:

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 Böyle, Kenny Hsu, Madeleine Thompson, Tabarak Khan ve Toki Sherbakov.

Bu gönderiyle ilgili geri bildirimleri için aşağıdakilere teşekkür ederiz: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagram img { görüntü: yok;
}
.vector-diagram img:ilk-çocuk { ekran: blok;
}

var printResponse = function (btn) { // yanıt ekle var answerEl = belge .querySelector('.endpoint-code-response') .querySelector('code') var callParentEl = document .querySelector('.endpoint-code-call' ) .querySelector('pre') if (!responseEl || !callParentEl) dönerse; callParentEl.appendChild(responseEl); // butonu gizle btn.style.display= 'yok';
}; var initRotate = function () { var döndürmeler = document.querySelectorAll('.js-rotate'); if (!rotates.length) dönüşü; // her döndürme grubu için rotarys.forEach(function (r) { // ilk çocuğu her n saniyede bir sona taşıyın window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (ebeveyn, çocuk) { parent.removeChild(alt); parent.appendChild(çocuk); // ebeveyne ekle
}; 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) döner; more.style.display = 'blok'; this.style.display = 'none'; }); });
}; // içinde
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
{Runtime, Inspector, Library}'yi "https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js" adresinden içe aktarın;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
notebook_embed3d'yi "https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3"den içe aktar const customWidth = function (selektör) { return (new Library).Generators.observe(function(change) { var width = change(document.querySelector(selector).clientWidth); function resize() { var w = document.querySelector(selector).clientWidth; if (w !== genişlik) change(width = w); } window.addEventListener(“ yeniden boyutlandır”, yeniden boyutlandır); dönüş işlevi() { window.removeEventListener(“yeniden boyutlandır”, yeniden boyutlandır); }; });
}; const topk_renders = { "chart": "#topk-chart",
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_render[name]; if (selektör) { // key var 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, ad => { const seçici = embed3d_render[ad]; if (seçici) { // anahtar var return new Inspector(document.querySelector(selector)); } else { return true; }
});

Zaman Damgası:

Den fazla OpenAI