Представляем встраивание текста и кода в API OpenAI PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

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

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

Читать документациюЧитать газету

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

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

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

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

Новая конечная точка использует модели нейронных сетей, которые являются потомками GPT-3, для преобразования текста и кода в векторное представление, «встраивая» их в многомерное пространство. Каждое измерение отражает некоторый аспект входных данных.

Новый /вложения конечная точка в API OpenAI обеспечивает встраивание текста и кода с помощью нескольких строк кода:

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

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

Модели Случаи использования
Текстовое сходство: Фиксирует семантическое сходство между фрагментами текста. сходство текста-{ада, бэббидж, кюри, давинчи}-001 Кластеризация, регрессия, обнаружение аномалий, визуализация
Поиск текста: Семантический поиск информации по документам. текстовый поиск-{ада, бэббидж, кюри, давинчи}-{запрос, документ}-001 Поиск, релевантность контекста, поиск информации
Поиск кода: поиск релевантного кода с запросом на естественном языке. код-поиск-{ада, бэббидж}-{код, текст}-001 Поиск по коду и релевантность

Модели подобия текста

Модели подобия текста обеспечивают вложения, которые фиксируют семантическое сходство фрагментов текста. Эти модели полезны для многих задач, включая кластеризации, визуализация данныхи классификация.

Следующая интерактивная визуализация показывает встраивание образцов текста из набора данных DBpedia:

Перетащите, чтобы панорамировать, прокрутите или сведите пальцы, чтобы увеличить

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

Чтобы сравнить сходство двух фрагментов текста, вы просто используете скалярное произведение на вложениях текста. Результатом является «оценка сходства», иногда называемая «оценкой сходства».косинусное подобие”, между –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)

Одним из популярных применений вложений является их использование в качестве функций в задачах машинного обучения, таких как классификация. В литературе по машинному обучению при использовании линейного классификатора эта задача классификации называется «линейным зондом». Наши модели подобия текста позволяют получить новые передовые результаты по классификации линейных проб в СентЭвал (Конно и др., 2018 г.), широко используемый эталон для оценки качества встраивания.

Классификация линейных датчиков по 7 наборам данных
Предыдущая СОТА (Гао и др. 2021)
90.2%
текст-сходство-davinci-001
92.2%
Показать больше

Модели текстового поиска

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

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

Модели поиска кода

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

Средняя точность по 6 языкам программирования
Предыдущая СОТА (Го и др. 2021)
77.4%
код-поиск-бэббидж-{документ, запрос}-001
93.5%
Показать больше

Примеры Embeddings API в действии

Исследования JetBrains

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

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

Обучение FineTune

Обучение FineTune — компания, разрабатывающая гибридные решения для обучения человека и искусственного интеллекта, такие как адаптивные циклы обучения которые помогают студентам достичь академических стандартов.

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

Сравнение наших вложений с Sentence-BERT, Поиск GPT-3 и эксперты-люди для сопоставления содержания учебника с изучаемыми целями. Мы сообщаем точность@k, количество раз, когда правильный ответ попадает в топ-k прогнозов.

Fabius

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

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

Все клиенты API могут начать работу с документация по вложениям за использование вложений в своих приложениях.

Читать документацию


Благодарности

Спасибо за их вклад в этот выпуск:

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

Спасибо за отзывы об этом посте: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-диаграмма img { display: none;
}
.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'); если (!rotates.length) вернуть; // для каждого набора поворотов rotates.forEach(function (r) { // перемещаем первого дочернего элемента в конец каждые n секунд window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = функция (родительский, дочерний) { parent.removeChild (дочерний); родитель.appendChild (дочерний); // присоединяем к родителю
}; var initShowMore = функция () { 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'); если (!more) вернуть, 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”;
импортировать note_embed3d из «https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3» const customWidth = function (selector) { return (new Library).Generators.observe(function(change) { var width = изменить(document.querySelector(селектор).clientWidth); function resized() { var w = document.querySelector(selector).clientWidth; if (w !== width) change(width = w); } window.addEventListener(" изменить размер», изменить размер); return function() { window.removeEventListener («изменить размер», изменить размер); }; });
}; const topk_renders = { "диаграмма": "#topk-диаграмма",
};
new Runtime(Object.assign(new Library, {width: customWidth("#topk-chart")})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // key существует return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { "диаграмма": "#embed3d-диаграмма", "легенда": "#embed3d-легенда",
};
new Runtime(Object.assign(new Library, {width: customWidth("#embed3d-chart")})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // key существует return new Inspector(document.querySelector(selector)); } else { return true; }
});

Отметка времени:

Больше от OpenAI