Memperkenalkan Penyematan Teks dan Kode di OpenAI API PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Memperkenalkan Penyematan Teks dan Kode di OpenAI API

Memperkenalkan Penyematan Teks dan Kode di OpenAI API

Kami memperkenalkan embeddings, titik akhir baru di OpenAI API yang memudahkan untuk melakukan tugas bahasa dan kode alami seperti pencarian semantik, pengelompokan, pemodelan topik, dan klasifikasi. Embeddings adalah representasi numerik dari konsep yang diubah menjadi urutan angka, yang memudahkan komputer untuk memahami hubungan antara konsep-konsep tersebut. Penyematan kami mengungguli model teratas dalam 3 tolok ukur standar, termasuk peningkatan relatif 20% dalam pencarian kode.

Baca dokumentasiBaca kertas

Penyematan berguna untuk bekerja dengan bahasa dan kode alami, karena dapat dengan mudah digunakan dan dibandingkan dengan model dan algoritme pembelajaran mesin lainnya seperti pengelompokan atau pencarian.

Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API

Embeddings yang serupa secara numerik juga serupa secara semantik. Misalnya, vektor penyematan "kata teman anjing" akan lebih mirip dengan vektor penyematan "guk" daripada "meong".

Memperkenalkan Penyematan Teks dan Kode di OpenAI API
Memperkenalkan Penyematan Teks dan Kode di OpenAI API

Titik akhir baru menggunakan model jaringan saraf, yang merupakan turunan dari GPT-3, untuk memetakan teks dan kode ke representasi vektorโ€”โ€œmenyematkanโ€ mereka dalam ruang dimensi tinggi. Setiap dimensi menangkap beberapa aspek input.

Baru / embedding titik akhir di API OpenAI menyediakan penyematan teks dan kode dengan beberapa baris kode:

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

Kami merilis tiga kelompok model penyematan, masing-masing disetel untuk bekerja dengan baik pada fungsi yang berbeda: kesamaan teks, pencarian teks, dan pencarian kode. Model mengambil teks atau kode sebagai input dan mengembalikan vektor embedding.

Model Gunakan Kasus
Kesamaan teks: Menangkap kesamaan semantik antara potongan teks. teks-kemiripan-{ada, babbage, curie, davinci}-001 Pengelompokan, regresi, deteksi anomali, visualisasi
Pencarian Teks: Pengambilan informasi semantik atas dokumen. pencarian teks-{ada, babbage, curie, davinci}-{query, doc}-001 Pencarian, relevansi konteks, pencarian informasi
Pencarian kode: Temukan kode yang relevan dengan kueri dalam bahasa alami. pencarian-kode-{ada, babbage}-{kode, teks}-001 Pencarian kode dan relevansi

Model Kesamaan Teks

Model kesamaan teks menyediakan embeddings yang menangkap kesamaan semantik potongan teks. Model-model ini berguna untuk banyak tugas termasuk: kekelompokan, visualisasi data, dan klasifikasi.

Visualisasi interaktif berikut menunjukkan penyematan sampel teks dari kumpulan data DBpedia:

Seret untuk menggeser, menggulir, atau mencubit untuk memperbesar

Penyematan dari text-similarity-babbage-001 model, diterapkan pada DBpedia Himpunan data. Kami secara acak memilih 100 sampel dari kumpulan data yang mencakup 5 kategori, dan menghitung embeddings melalui / embedding titik akhir. Kategori yang berbeda muncul sebagai 5 cluster yang jelas di ruang embedding. Untuk memvisualisasikan ruang penyematan, kami mengurangi dimensi penyematan dari 2048 menjadi 3 menggunakan PCA. Kode untuk cara memvisualisasikan ruang embedding dalam dimensi 3D tersedia di sini.

Untuk membandingkan kesamaan dua bagian teks, Anda cukup menggunakan produk titik pada penyematan teks. Hasilnya adalah "skor kesamaan", kadang-kadang disebut "kesamaan cosinus,โ€ antara -1 dan 1, di mana angka yang lebih tinggi berarti lebih banyak kesamaan. Di sebagian besar aplikasi, embeddings dapat dihitung sebelumnya, dan kemudian perbandingan produk titik sangat cepat dilakukan.

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)

Salah satu penggunaan embeddings yang populer adalah menggunakannya sebagai fitur dalam tugas pembelajaran mesin, seperti klasifikasi. Dalam literatur pembelajaran mesin, saat menggunakan pengklasifikasi linier, tugas klasifikasi ini disebut "penyelidikan linier". Model kesamaan teks kami mencapai hasil mutakhir baru pada klasifikasi probe linier di TerkirimEval (Conneau dkk., 2018), tolok ukur yang umum digunakan untuk mengevaluasi kualitas penyematan.

Klasifikasi probe linier lebih dari 7 set data
SOTA sebelumnya (Gao dkk. 2021)
90.2%
teks-kesamaan-davinci-001
92.2%
Menampilkan lebih banyak

Model Pencarian Teks

Model pencarian teks menyediakan penyematan yang memungkinkan tugas pencarian skala besar, seperti menemukan dokumen yang relevan di antara kumpulan dokumen yang diberikan kueri teks. Penyematan untuk dokumen dan kueri diproduksi secara terpisah, lalu kesamaan kosinus digunakan untuk membandingkan kesamaan antara kueri dan setiap dokumen.

Pencarian berbasis embedding dapat menggeneralisasi lebih baik daripada teknik tumpang tindih kata yang digunakan dalam pencarian kata kunci klasik, karena menangkap makna semantik teks dan kurang sensitif terhadap frasa atau kata yang tepat. Kami mengevaluasi kinerja model pencarian teks di BEIR (Thakur, dkk. 2021) rangkaian evaluasi pencarian dan dapatkan kinerja pencarian yang lebih baik daripada metode sebelumnya. Kita panduan pencarian teks memberikan detail lebih lanjut tentang penggunaan penyematan untuk tugas pencarian.

Model Pencarian Kode

Model pencarian kode menyediakan penyisipan kode dan teks untuk tugas pencarian kode. Diberikan kumpulan blok kode, tugasnya adalah menemukan blok kode yang relevan untuk kueri bahasa alami. Kami mengevaluasi model pencarian kode di CodeSearchNet (Husian dkk., 2019) rangkaian evaluasi tempat penyematan kami mencapai hasil yang jauh lebih baik daripada metode sebelumnya. Lihat panduan pencarian kode untuk menggunakan embeddings untuk pencarian kode.

Akurasi rata-rata lebih dari 6 bahasa pemrograman
SOTA sebelumnya (Gua, dkk. 2021)
77.4%
kode-pencarian-babbage-{doc, query}-001
93.5%
Menampilkan lebih banyak

Contoh Embeddings API dalam Tindakan

Penelitian JetBrains

Penelitian JetBrains Lab Fisika Astropartikel menganalisis data seperti Telegram Astronom dan NASA Surat Edaran GCN, yang merupakan laporan yang berisi peristiwa astronomi yang tidak dapat diuraikan oleh algoritme tradisional.

Didukung oleh embeddings OpenAI dari laporan astronomi ini, para peneliti sekarang dapat mencari peristiwa seperti "ledakan pulsar kepiting" di beberapa database dan publikasi. Embeddings juga mencapai akurasi 99.85% pada klasifikasi sumber data melalui k-means clustering.

Pembelajaran FineTune

Pembelajaran FineTune adalah perusahaan yang membangun solusi AI manusia hibrida untuk pembelajaran, seperti loop pembelajaran adaptif yang membantu siswa mencapai standar akademik.

Penyematan OpenAI secara signifikan meningkatkan tugas menemukan konten buku teks berdasarkan tujuan pembelajaran. Mencapai akurasi 5 teratas sebesar 89.1%, model embeddings pencarian teks-curie OpenAI mengungguli pendekatan sebelumnya seperti Sentence-BERT (64.5%). Sementara ahli manusia masih lebih baik, tim FineTune sekarang dapat melabeli seluruh buku teks dalam hitungan detik, berbeda dengan jam yang dibutuhkan para ahli.

Perbandingan embeddings kami dengan Kalimat-BERT, Pencarian GPT-3 dan ahli materi pelajaran manusia untuk mencocokkan konten buku teks dengan tujuan yang dipelajari. Kami melaporkan akurasi@k, berapa kali jawaban yang benar berada dalam k prediksi teratas.

Fabius

Fabius membantu perusahaan mengubah percakapan pelanggan menjadi wawasan terstruktur yang menginformasikan perencanaan dan prioritas. Penyematan OpenAI memungkinkan perusahaan untuk lebih mudah menemukan dan menandai transkrip panggilan pelanggan dengan permintaan fitur.

Misalnya, pelanggan mungkin menggunakan kata-kata seperti "otomatis" atau "mudah digunakan" untuk meminta platform layanan mandiri yang lebih baik. Sebelumnya, Fabius menggunakan pencarian kata kunci fuzzy untuk mencoba menandai transkrip tersebut dengan label platform layanan mandiri. Dengan penyematan OpenAI, mereka sekarang dapat menemukan 2x lebih banyak contoh secara umum, dan 6xโ€“10x lebih banyak contoh untuk fitur dengan kasus penggunaan abstrak yang tidak memiliki kata kunci yang jelas yang mungkin digunakan pelanggan.

Semua pelanggan API dapat memulai dengan dokumentasi penyematan untuk menggunakan embeddings dalam aplikasi mereka.

Baca dokumentasi


Ucapan Terima Kasih

Terima kasih kepada yang berikut atas kontribusi mereka pada rilis ini:

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

Terima kasih kepada yang berikut untuk umpan balik mereka pada posting ini: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vektor-diagram img { tampilan: tidak ada;
}
.vektor-diagram img:anak pertama { tampilan: blok;
}

var printResponse = function (btn) { // tambahkan respons var responseEl = document .querySelector('.endpoint-code-response') .querySelector('code') var callParentEl = document .querySelector('.endpoint-code-call' ) .querySelector('pre') jika (!responseEl || !callParentEl) kembali; callParentEl.appendChild(responseEl); // sembunyikan tombol btn.style.display= 'tidak ada';
}; var initRotate = function() { var rotates = document.querySelectorAll('.js-rotate'); if (!rotates.length) kembali; // untuk setiap set rotasi rotates.forEach(function (r) { // pindahkan anak pertama ke akhir setiap n detik window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (induk, anak) { parent.removeChild(anak); parent.appendChild(anak); // tambahkan ke induk
}; 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'; }); });
}; // inisiasi
document.addEventListener('DOMContentLoaded', fungsi () { initRotate(); initShowMore();
});
impor {Runtime, Inspector, Library} dari โ€œ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); fungsi diubah ukurannya() { var w = document.querySelector(selector).clientWidth; if (w !== lebar) change(width = w); } window.addEventListener(โ€œ ubah ukuranโ€, ubah ukuran); return function() { window.removeEventListener(โ€œmengubah ukuranโ€, diubah ukurannya); }; });
}; const topk_renders = { โ€œbaganโ€: โ€œ#topk-baganโ€,
};
runtime baru(Object.assign(Perpustakaan baru, {width: customWidth("#topk-chart")})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key ada kembalikan Inspektur baru(document.querySelector(selector)); } else { kembalikan true; }
}); const embed3d_renders = { โ€œbaganโ€: โ€œ#embed3d-chartโ€, โ€œlegendโ€: โ€œ#embed3d-legendโ€,
};
runtime baru(Object.assign(Perpustakaan baru, {width: customWidth("#embed3d-chart")})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // key ada kembalikan Inspektur baru(document.querySelector(selector)); } else { kembalikan true; }
});

Stempel Waktu:

Lebih dari OpenAI