OpenAI API PlatoBlockchain 데이터 인텔리전스에서 텍스트 및 코드 임베딩을 소개합니다. 수직 검색. 일체 포함.

OpenAI API의 텍스트 및 코드 임베딩 소개

OpenAI API의 텍스트 및 코드 임베딩 소개

의미 검색, 클러스터링, 주제 모델링 및 분류와 같은 자연어 및 코드 작업을 쉽게 수행할 수 있게 해주는 OpenAI API의 새로운 끝점인 임베딩을 도입합니다. 임베딩은 컴퓨터가 이러한 개념 간의 관계를 쉽게 이해할 수 있도록 하는 숫자 시퀀스로 변환된 개념의 숫자 표현입니다. 우리의 임베딩은 코드 검색의 3% 상대적 개선을 포함하여 20가지 표준 벤치마크에서 상위 모델을 능가합니다.

문서 읽기신문 읽기

임베딩은 클러스터링 또는 검색과 같은 다른 기계 학습 모델 및 알고리즘에서 쉽게 사용하고 비교할 수 있기 때문에 자연어 및 코드 작업에 유용합니다.

OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개

수치적으로 유사한 임베딩은 의미적으로도 유사합니다. 예를 들어 "canine friend say"의 임베딩 벡터는 "야옹"의 임베딩 벡터보다 "woof"의 임베딩 벡터와 더 유사합니다.

OpenAI API의 텍스트 및 코드 임베딩 소개
OpenAI API의 텍스트 및 코드 임베딩 소개

새로운 엔드포인트는 GPT-3의 후손인 신경망 모델을 사용하여 텍스트와 코드를 벡터 표현에 매핑하여 고차원 공간에 "임베딩"합니다. 각 차원은 입력의 일부 측면을 캡처합니다.

새로운 /임베딩 끝점 오픈AI API 몇 줄의 코드로 텍스트 및 코드 임베딩을 제공합니다.

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

텍스트 유사성, 텍스트 검색 및 코드 검색과 같은 서로 다른 기능에서 각각 잘 수행되도록 조정된 세 가지 임베딩 모델 제품군을 출시합니다. 모델은 텍스트 또는 코드를 입력으로 사용하고 임베딩 벡터를 반환합니다.

모델 고객 사례
텍스트 유사성: 텍스트 조각 간의 의미적 유사성을 캡처합니다. 텍스트 유사성-{ada, babbage, curie, davinci}-001 클러스터링, 회귀, 이상 감지, 시각화
텍스트 검색: 문서에 대한 의미 정보 검색. 텍스트 검색-{ada, babbage, curie, davinci}-{query, doc}-001 검색, 컨텍스트 관련성, 정보 검색
코드 검색: 자연어 쿼리로 관련 코드를 찾습니다. 코드 검색-{ada, babbage}-{code, text}-001 코드 검색 및 관련성

텍스트 유사성 모델

텍스트 유사성 모델은 텍스트 조각의 의미론적 유사성을 포착하는 임베딩을 제공합니다. 이 모델은 다음을 포함한 많은 작업에 유용합니다. 클러스터링, 데이터 시각화분류.

다음 대화형 시각화는 DBpedia 데이터 세트의 텍스트 샘플 임베딩을 보여줍니다.

드래그하여 팬, 스크롤 또는 핀치하여 확대/축소

임베딩 text-similarity-babbage-001 모델, 적용 DB피디아 데이터 세트. 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)

임베딩의 일반적인 용도 중 하나는 분류와 같은 기계 학습 작업의 기능으로 임베딩을 사용하는 것입니다. 기계 학습 문헌에서 선형 분류기를 사용할 때 이 분류 작업을 "선형 프로브"라고 합니다. 우리의 텍스트 유사성 모델은 선형 프로브 분류에 대한 새로운 최첨단 결과를 얻습니다. 전송된 평가 (코노 등, 2018) 임베딩 품질을 평가하기 위해 일반적으로 사용되는 벤치마크입니다.

7개 데이터 세트에 대한 선형 프로브 분류
이전 SOTA(Gao et al. 2021년)
90.2%
텍스트 유사성-davinci-001
92.2%
더 보기

텍스트 검색 모델

텍스트 검색 모델은 텍스트 쿼리가 주어진 문서 모음 중에서 관련 문서를 찾는 것과 같은 대규모 검색 작업을 가능하게 하는 임베딩을 제공합니다. 문서에 대한 임베딩과 쿼리는 별도로 생성한 다음 코사인 유사도를 사용하여 쿼리와 각 문서 간의 유사도를 비교합니다.

임베딩 기반 검색은 텍스트의 의미론적 의미를 포착하고 정확한 구 또는 단어에 덜 민감하기 때문에 기존 키워드 검색에서 사용되는 단어 겹침 기술보다 일반화할 수 있습니다. 우리는 텍스트 검색 모델의 성능을 평가합니다. 베이어 (Thakur, et al. 2021년) 평가 제품군을 검색하고 이전 방법보다 더 나은 검색 성능을 얻습니다. 우리의 텍스트 검색 가이드 검색 작업에 임베딩을 사용하는 방법에 대한 자세한 내용을 제공합니다.

코드 검색 모델

코드 검색 모델은 코드 검색 작업을 위한 코드 및 텍스트 임베딩을 제공합니다. 주어진 코드 블록 모음에서 작업은 자연어 쿼리에 대한 관련 코드 블록을 찾는 것입니다. 우리는 코드 검색 모델을 평가합니다. 코드서치넷 (후시안 외, 2019) 임베딩이 이전 방법보다 훨씬 더 나은 결과를 달성하는 평가 제품군. 체크 아웃 코드 검색 가이드 코드 검색에 임베딩을 사용합니다.

6개 프로그래밍 언어에 대한 평균 정확도
이전 SOTA(Guo, et al. 2021년)
77.4%
코드 검색-babbage-{문서, 쿼리}-001
93.5%
더 보기

작동 중인 Embeddings API의 예

JetBrains 연구

JetBrains Research의 천체 입자 물리학 연구실 다음과 같은 데이터를 분석합니다. 천문학자의 전보 그리고 NASA의 GCN 회람, 기존 알고리즘으로 구문 분석할 수 없는 천문학적 사건이 포함된 보고서입니다.

이러한 천문 보고서의 OpenAI 임베딩에 힘입어 연구원들은 이제 여러 데이터베이스 및 출판물에서 "게 펄서 폭발"과 같은 이벤트를 검색할 수 있습니다. 임베딩은 또한 k-평균 클러스터링을 통해 데이터 소스 분류에서 99.85%의 정확도를 달성했습니다.

FineTune 학습

FineTune 학습 학습을 위한 인간-AI ​​하이브리드 솔루션을 구축하는 회사입니다. 적응 학습 루프 학생들이 학업 표준에 도달하는 데 도움이 됩니다.

OpenAI의 임베딩은 학습 목표를 기반으로 교과서 콘텐츠를 찾는 작업을 크게 개선했습니다. 5%의 상위 89.1위 정확도를 달성한 OpenAI의 텍스트-검색-퀴리 임베딩 모델은 Sentence-BERT(64.5%)와 같은 이전 접근 방식을 능가했습니다. 인간 전문가가 여전히 더 낫지만 FineTune 팀은 이제 전문가가 몇 시간이 걸렸던 것과 달리 몇 초 만에 전체 교과서에 레이블을 지정할 수 있습니다.

Sentence-BERT와 임베딩 비교, GPT-3 검색 학습된 목표와 교과서 내용을 일치시키기 위한 인간 주제 전문가. 우리는보고 정확도@k, 정답이 top-k 예측 내에 있는 횟수입니다.

파비우스

파비우스 기업이 고객 대화를 계획 및 우선 순위를 알려주는 구조화된 통찰력으로 전환할 수 있도록 지원합니다. OpenAI의 임베딩을 통해 기업은 기능 요청이 있는 고객 통화 기록을 보다 쉽게 ​​찾고 태그를 지정할 수 있습니다.

예를 들어 고객은 "자동화" 또는 "사용하기 쉬운"과 같은 단어를 사용하여 더 나은 셀프 서비스 플랫폼을 요청할 수 있습니다. 이전에 Fabius는 퍼지 키워드 검색을 사용하여 이러한 스크립트에 셀프 서비스 플랫폼 레이블로 태그를 지정하려고 시도했습니다. OpenAI의 임베딩을 통해 이제 고객이 사용할 수 있는 명확한 키워드가 없는 추상적인 사용 사례가 있는 기능의 경우 일반적으로 2배 더 많은 예와 6-10배 더 많은 예를 찾을 수 있습니다.

모든 API 고객은 임베딩 문서 애플리케이션에 임베딩을 사용하기 위한 것입니다.

문서 읽기


감사의

이 릴리스에 대한 기여에 감사드립니다.

Tao Xu, Chris Hallacy, Raul Puri, Alec Radford, Jesse Michael Han, Jerry Tworek, Qiming Yuan, Nikolas Tezak, 김종욱, Johannes Heidecke, Pranav Shyam, Tyna Eloundou Nekoul, Girish Sastry, Gretchen Krueger, David Schnurr, Felipe Petroskirr Kenny Hsu, Madeleine Thompson, Tabarak Khan, Toki Sherbakov가 그 예입니다.

이 게시물에 대한 피드백을 제공한 Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang에게 감사드립니다.

.vector-diagram img { 표시: 없음;
}
.vector-diagram img:first-child { 표시: 블록;
}

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 회전 = document.querySelectorAll('.js-rotate'); if (!rotates.length) 반환; // 각 회전 세트에 대해 rotates.forEach(function (r) { // n초마다 첫 번째 자식을 끝으로 이동 window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = 함수(부모, 자식) { parent.removeChild(자식); 부모.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) 반환, more.style.display = '차단', this.style.display = '없음', }), }),
}; // 초기화
document.addEventListener('DOMContentLoaded', function() { initRotate(); initShowMore();
});
"https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js"에서 {런타임, 인스펙터, 라이브러리} 가져오기;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
"https://api.observablehq.com/d/fef3cb0801a0b0.js?v=322"에서 notebook_embed3d 가져오기 const customWidth = function (selector) { return (new Library).Generators.observe(function(change) { var 너비 = change(document.querySelector(selector).clientWidth); function resized() { var w = document.querySelector(selector).clientWidth; if (w !== 너비) change(width = w); } window.addEventListener(“ 크기 조정", 크기 조정), return function() { window.removeEventListener("크기 조정", 크기 조정); }; });
}; const topk_renders = { "차트": "#톱k-차트",
};
new Runtime(Object.assign(new 라이브러리, {width: customWidth("#topk-chart")})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // 키 존재 return new Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { "차트": "#embed3d-chart", "범례": "#embed3d-legend",
};
new Runtime(Object.assign(new 라이브러리, {width: customWidth("#embed3d-chart")})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // 키 존재 return new Inspector(document.querySelector(selector)); } else { return true; }
});

타임 스탬프 :

더보기 OpenAI