Представляємо вбудовування тексту та коду в API OpenAI PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Представляємо вбудовування тексту та коду в OpenAI API

Представляємо вбудовування тексту та коду в OpenAI API

Ми представляємо вбудовування, нову кінцеву точку в OpenAI API, яка полегшує виконання завдань природної мови та коду, таких як семантичний пошук, кластеризація, моделювання тем і класифікація. Вбудовування — це числові представлення понять, перетворені в числові послідовності, що полегшує комп’ютерам розуміння зв’язків між цими поняттями. Наші вбудовування перевершують найкращі моделі в 3 стандартних тестах, включаючи відносне покращення пошуку коду на 20%.

Прочитайте документаціюЧитати папір

Вбудовування корисно для роботи з природною мовою та кодом, оскільки їх можна легко використовувати та порівнювати іншими моделями та алгоритмами машинного навчання, такими як кластеризація чи пошук.

Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API

Чисельно подібні вбудовування також подібні семантично. Наприклад, вектор вбудовування «собачі компаньйони кажуть» буде більше схожий на вектор вбудовування «гав», ніж «мяу».

Представляємо вбудовування тексту та коду в OpenAI API
Представляємо вбудовування тексту та коду в OpenAI API

Нова кінцева точка використовує моделі нейронних мереж, які є нащадками GPT-3, для відображення тексту та коду у векторне представлення, «вбудовуючи» їх у простір високої вимірності. Кожен вимір фіксує певний аспект вхідних даних.

Новий /вставки кінцева точка в API OpenAI надає вбудовування тексту та коду з кількома рядками коду:

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

Ми випускаємо три сімейства моделей вбудовування, кожна з яких добре працює з різними функціями: схожість тексту, пошук тексту та пошук коду. Моделі беруть або текст, або код як вхідні дані і повертають вектор вбудовування.

моделі Використовуйте випадки
Подібність тексту: фіксує семантичну схожість між фрагментами тексту. подібність тексту-{ада, бебідж, кюрі, давінчі}-001 Кластеризація, регресія, виявлення аномалій, візуалізація
Пошук тексту: Семантичний пошук інформації над документами. текстовий пошук-{ада, бебідж, кюрі, давінчі}-{запит, док}-001 Пошук, відповідність контексту, пошук інформації
Пошук коду: Знайдіть відповідний код із запитом природною мовою. code-search-{ada, babbage}-{code, text}-001 Пошук і релевантність коду

Моделі подібності тексту

Моделі подібності тексту забезпечують вбудовування, які фіксують семантичну подібність фрагментів тексту. Ці моделі корисні для багатьох завдань, у тому числі Кластеризація, візуалізація даних та класифікація.

Наступна інтерактивна візуалізація показує вбудовування зразків тексту з набору даних DBpedia:

Перетягніть, щоб панорамувати, прокрутіть або стисніть, щоб збільшити

Вбудовування з text-similarity-babbage-001 модель, застосована до ДБпедія набір даних. Ми випадковим чином вибрали 100 зразків із набору даних, що охоплюють 5 категорій, і обчислили вбудовування за допомогою /вставки кінцева точка. Різні категорії відображаються у вигляді 5 чітких кластерів у просторі для вбудовування. Щоб уявити простір для вбудовування, ми зменшили розмірність вбудовування з 2048 до 3 за допомогою PCA. Доступний код для візуалізації простору для вбудовування в 3D-вимірі тут.

Щоб порівняти подібність двох фрагментів тексту, просто скористайтеся крапковий продукт на вбудовування тексту. Результатом є «оцінка подібності», яку іноді називають «косинусова подібність”, між –1 і 1, де більше число означає більше схожості. У більшості застосувань вбудовування можна попередньо обчислити, і тоді порівняння точкового добутку дуже швидко виконується.

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)

Одним із популярних варіантів використання вбудовування є використання їх як функцій у завданнях машинного навчання, таких як класифікація. У літературі з машинного навчання, коли використовується лінійний класифікатор, це завдання класифікації називається «лінійним зондом». Наші моделі подібності тексту досягають нових найсучасніших результатів щодо класифікації лінійних зондів SentEval (Конно та ін., 2018), часто використовуваний еталон для оцінки якості вбудовування.

Лінійна класифікація зонда за 7 наборами даних
Попередня SOTA (Гао та ін. 2021 рік)
90.2%
текст-подібність-давінчі-001
92.2%
Показати більше

Моделі текстового пошуку

Моделі текстового пошуку забезпечують вбудовування, що дає змогу виконувати широкомасштабні пошукові завдання, як-от пошук відповідного документа серед набору документів за текстовим запитом. Вбудовування для документів і запиту виконується окремо, а потім косинусоподібна подібність використовується для порівняння подібності між запитом і кожним документом.

Пошук на основі вбудовування може узагальнити краще, ніж методи накладання слів, які використовуються в класичному пошуку за ключовими словами, оскільки він фіксує семантичне значення тексту і менш чутливий до точних фраз або слів. Ми оцінюємо ефективність моделі текстового пошуку на BEIR (Тхакур та ін. 2021 рік) набір оцінки пошуку та отримати кращу результативність пошуку, ніж попередні методи. Наші посібник з текстового пошуку надає докладнішу інформацію про використання вбудовування для завдань пошуку.

Моделі пошуку коду

Моделі пошуку коду забезпечують вбудовування коду та тексту для завдань пошуку коду. Враховуючи набір блоків коду, завдання полягає в тому, щоб знайти відповідний блок коду для запиту природною мовою. Ми оцінюємо моделі пошуку коду на CodeSearchNet (Хусіан та ін., 2019) набір оцінки, де наші вбудовування досягають значно кращих результатів, ніж попередні методи. Перевірте посібник з пошуку коду використовувати вбудовування для пошуку коду.

Середня точність для 6 мов програмування
Попередня SOTA (Гуо та ін. 2021 рік)
77.4%
code-search-babbage-{doc, query}-001
93.5%
Показати більше

Приклади Embeddings API в дії

Дослідження JetBrains

JetBrains Research's Лабораторія фізики астрочастинок аналізує такі дані, як Телеграма астронома і НАСА Циркуляри GCN, які є звітами, які містять астрономічні події, які не можна проаналізувати традиційними алгоритмами.

Завдяки вбудованим OpenAI цих астрономічних звітів дослідники тепер можуть шукати такі події, як «сплески крабового пульсара» в багатьох базах даних і публікаціях. Вбудовування також досягло 99.85% точності щодо класифікації джерел даних за допомогою кластеризації k-середніх.

FineTune Learning

FineTune Learning є компанією, яка створює гібридні рішення людини та штучного інтелекту для навчання, наприклад адаптивні цикли навчання які допомагають студентам досягти академічних стандартів.

Вбудовування OpenAI значно покращило завдання пошуку змісту підручника на основі навчальних цілей. Досягнувши точності в топ-5 у 89.1%, модель вбудовування тексту-пошуку-кюрі OpenAI перевершила попередні підходи, такі як Sentence-BERT (64.5%). Хоча експерти-люди все ще кращі, команда FineTune тепер може позначати цілі підручники за лічені секунди, на відміну від годин, які знадобилися експертам.

Порівняння наших вставок із Sentence-BERT, Пошук GPT-3 та експертів з людських предметів для узгодження змісту підручника з цілями вивчення. Ми звітуємо точність@к, кількість разів, коли правильна відповідь знаходиться в межах K прогнозів.

Fabius

Fabius допомагає компаніям перетворювати розмови з клієнтами на структуровану інформацію, яка допомагає планувати та розставляти пріоритети. Вбудовування OpenAI дозволяють компаніям легше знаходити та позначати стенограми дзвінків клієнтів із запитами функцій.

Наприклад, клієнти можуть використовувати такі слова, як «автоматизований» або «простий у використанні», щоб попросити кращу платформу самообслуговування. Раніше Fabius використовував нечіткий пошук за ключовими словами, щоб спробувати позначити ці стенограми міткою платформи самообслуговування. Завдяки вбудовуванням OpenAI тепер вони можуть знайти в 2 рази більше прикладів загалом і в 6–10 разів більше прикладів для функцій з абстрактними випадками використання, які не мають чіткого ключового слова, яке можуть використовувати клієнти.

Усі клієнти API можуть розпочати роботу з документація про вбудовування за використання вбудовування в своїх програмах.

Прочитайте документацію


Подяки

Дякуємо за внесок у цей випуск:

Тао Сю, Кріс Халласі, Рауль Пурі, Алек Редфорд, Джессі Майкл Хан, Джеррі Турек, Цімін Юань, Ніколас Тезак, Джон Ук Кім, Йоханнес Хайдеке, Пранав Шьям, Тайна Елунду Некол, Гіріш Састрі, Гретхен Крюгер, Девід Шнурр, Феліпе Петро Такі, Кенні Хсу, Мадлен Томпсон, Табарак Хан і Токі Щербаков.

Дякуємо за відгуки про цю публікацію: Том Кляйнпетер, Морган Галлант, Сем Альтман, Ілля Суцкевер, Стів Доулінг, Рейчел Лім, Арун Віджайвергія, Раджив Наяк, Пітер Веліндер, Джастін Джей Ван.

.vector-diagram img { дисплей: немає;
}
.vector-diagram img:first-child { display: block;
}

var printResponse = function (btn) { // додати відповідь 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); // приховати кнопку btn.style.display= 'none';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!rotates.length) повернення; // для кожного набору обертань rotates.forEach(function (r) { // переміщати першу дочірню частину до кінця кожні n секунд window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = function (батька, дитина) { parent.removeChild(child); parent.appendChild(дитина); // додати до батьківського
}; 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'; }); });
}; // в цьому
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
імпортуйте {Runtime, Inspector, Library} із «https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js»;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
імпортувати notebook_embed3d із “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 !== ширина) change(width = w); } window.addEventListener(“ зміна розміру”, змінений розмір); return function() { window.removeEventListener(“resize”, resize); }; });
}; const topk_renders = { “діаграма”: “#topk-діаграма”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (селектор) { // ключ існує 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, name => { const selector = embed3d_renders[name]; if (селектор) { // ключ існує return new Inspector(document.querySelector(selector)); } else { return true; }
});

Часова мітка:

Більше від OpenAI