OpenAI API PlatoBlockchain Data Intelligence にテキストとコードの埋め込みを導入します。垂直検索。あい。

OpenAIAPIでのテキストとコードの埋め込みの紹介

OpenAIAPIでのテキストとコードの埋め込みの紹介

OpenAI APIの新しいエンドポイントである埋め込みを導入します。これにより、セマンティック検索、クラスタリング、トピックモデリング、分類などの自然言語およびコードタスクを簡単に実行できます。 埋め込みは、番号シーケンスに変換された概念の数値表現であり、コンピューターがそれらの概念間の関係を理解し​​やすくします。 私たちの埋め込みは、コード検索の3%の相対的な改善を含め、20つの標準ベンチマークでトップモデルを上回っています。

ドキュメントを読む論文を読む

埋め込みは、クラスタリングや検索などの他の機械学習モデルやアルゴリズムで簡単に使用および比較できるため、自然言語やコードでの作業に役立ちます。

OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介

数値的に類似している埋め込みも意味的に類似しています。 たとえば、「犬の仲間が言う」の埋め込みベクトルは、「ニャー」の埋め込みベクトルよりも「ウーフ」の埋め込みベクトルに似ています。

OpenAIAPIでのテキストとコードの埋め込みの紹介
OpenAIAPIでのテキストとコードの埋め込みの紹介

新しいエンドポイントは、GPT-3の子孫であるニューラルネットワークモデルを使用して、テキストとコードをベクトル表現にマッピングし、高次元空間に「埋め込み」ます。 各ディメンションは、入力のいくつかの側面をキャプチャします。

新しい /埋め込み のエンドポイント オープンAI API 数行のコードでテキストとコードの埋め込みを提供します。

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

埋め込みモデルのXNUMXつのファミリをリリースします。各ファミリは、テキストの類似性、テキスト検索、コード検索というさまざまな機能で適切に機能するように調整されています。 モデルは、入力としてテキストまたはコードのいずれかを受け取り、埋め込みベクトルを返します。

Models 使用事例
テキストの類似性:テキスト間の意味的類似性をキャプチャします。 テキストの類似性-{ada、babbage、curie、davinci} -001 クラスタリング、回帰、異常検出、視覚化
テキスト検索:ドキュメントのセマンティック情報検索。 text-search- {ada、babbage、curie、davinci}-{query、doc} -001 検索、コンテキストの関連性、情報検索
コード検索:自然言語のクエリで関連するコードを検索します。 コード検索-{ada、babbage}-{code、text} -001 コード検索と関連性

テキスト類似性モデル

テキスト類似性モデルは、テキストの断片の意味的類似性をキャプチャする埋め込みを提供します。 これらのモデルは、次のような多くのタスクに役立ちます クラスタリング, データの可視化, 分類.

次のインタラクティブな視覚化は、DBpediaデータセットからのテキストサンプルの埋め込みを示しています。

ドラッグしてパン、スクロール、またはピンチしてズーム

からの埋め込み text-similarity-babbage-001 モデル、に適用 DBpedia データセット。 100つのカテゴリをカバーするデータセットからランダムに5個のサンプルを選択し、 /埋め込み 終点。 さまざまなカテゴリが、埋め込みスペースに5つの明確なクラスターとして表示されます。 埋め込みスペースを視覚化するために、埋め込みの次元を2048から3に減らしました。 PCA。 埋め込みスペースを3D次元で視覚化する方法のコードが利用可能です こちら.

XNUMXつのテキストの類似性を比較するには、単に ドット積 テキストの埋め込み。 結果は「類似性スコア」であり、「類似性スコア」と呼ばれることもあります。コサイン類似性、」– 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)

埋め込みの一般的な使用法のXNUMXつは、分類などの機械学習タスクの機能として使用することです。 機械学習の文献では、線形分類器を使用する場合、この分類タスクは「線形プローブ」と呼ばれます。 私たちのテキスト類似性モデルは、線形プローブ分類に関する新しい最先端の結果を達成します。 送信評価 (Conneau et al。、2018)、埋め込み品質を評価するために一般的に使用されるベンチマーク。

7つのデータセットにわたる線形プローブ分類
以前のSOTA(Gaoetal。 2021年)
視聴者の38%が
テキスト類似性ダヴィンチ-001
視聴者の38%が
Show more

テキスト検索モデル

テキスト検索モデルは、テキストクエリが指定されたドキュメントのコレクションから関連するドキュメントを検索するなど、大規模な検索タスクを可能にする埋め込みを提供します。 ドキュメントとクエリの埋め込みは別々に作成され、コサイン類似度を使用してクエリと各ドキュメントの類似度が比較されます。

埋め込みベースの検索は、テキストの意味的な意味をキャプチャし、正確なフレーズや単語に対する感度が低いため、従来のキーワード検索で使用される単語の重複手法よりも一般化できます。 テキスト検索モデルのパフォーマンスを ベイル (タクール他2021年)評価スイートを検索し、以前の方法よりも優れた検索パフォーマンスを取得します。 私たちの テキスト検索ガイド 検索タスクに埋め込みを使用する方法の詳細を提供します。

コード検索モデル

コード検索モデルは、コード検索タスクにコードとテキストの埋め込みを提供します。 コードブロックのコレクションが与えられた場合、タスクは自然言語クエリに関連するコードブロックを見つけることです。 コード検索モデルを評価します コードサーチネット (Husian et al。、2019)埋め込みが以前の方法よりも大幅に優れた結果を達成する評価スイート。 をチェックしてください コード検索ガイド コード検索に埋め込みを使用します。

6つのプログラミング言語での平均精度
以前のSOTA(郭他2021年)
視聴者の38%が
code-search-babbage- {doc、query} -001
視聴者の38%が
Show more

動作中の埋め込みAPIの例

JetBrains リサーチ

JetBrainsResearchの 宇宙素粒子物理学研究室 次のようなデータを分析します アストロノマーズテレグラム とNASAの GCNサーキュラー、これは、従来のアルゴリズムでは解析できない天文現象を含むレポートです。

OpenAIによるこれらの天文レポートの埋め込みにより、研究者は複数のデータベースや出版物で「かにパルサーバースト」などのイベントを検索できるようになりました。 埋め込みは、k-meansクラスタリングによるデータソース分類で99.85%の精度も達成しました。

FineTuneラーニング

FineTuneラーニング は、次のような学習用のハイブリッド人間AIソリューションを構築している会社です。 アダプティブラーニングループ 学生が学術基準に到達するのに役立ちます。

OpenAIの埋め込みにより、学習目標に基づいて教科書のコンテンツを見つけるタスクが大幅に改善されました。 5%のトップ89.1の精度を達成し、OpenAIのtext-search-curie埋め込みモデルは、Sentence-BERT(64.5%)のような以前のアプローチを上回りました。 人間の専門家はまだ優れていますが、FineTuneチームは、専門家が費やした時間とは対照的に、教科書全体に数秒でラベルを付けることができるようになりました。

埋め込みとSentence-BERTの比較、 GPT-3検索 教科書の内容を学習した目的と一致させるための人間の対象分野の専門家。 報告します 精度@k、正解が上位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、Jong Wook Kim、Johannes Heidecke、Pranav Shyam、Tyna Eloundou Nekoul、Girish Sastry、Gretchen Krueger、David Schnurr、Felipそのような、ケニー・スー、マドレーヌ・トンプソン、タバラク・カーン、そしてトキ・シェルバコフ。

この投稿に対するフィードバックに感謝します: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 {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(){varrotates = document.querySelectorAll('。js-rotate'); if(!rotates.length)return; //回転のセットごとにrotates.forEach(function(r){//最初の子を移動してn秒ごとに終了window.setInterval(function(){moveToEnd(r、r.firstElementChild);}、1500);}) ;
};
var moveToEnd = function(parent、child){parent.removeChild(child); parent.appendChild(child); //親に追加
}; 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();
});
「https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js」から{Runtime、Inspector、Library}をインポートします。
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
「https://api.observablehq.com/d/fef3cb0801a0b0.js?v=322」からnotebook_embed3dをインポートしますconstcustomWidth= 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!== width)change(width = w);} window.addEventListener( "サイズ変更」、サイズ変更); return function(){window.removeEventListener(「サイズ変更」、サイズ変更);};});
}; const topk_renders = {“ chart”:“#topk-chart”、
};
new Runtime(Object.assign(new Library、{width:customWidth(“#topk-chart”)}))。module(notebook_topk、name =>{constセレクター=topk_renders [name]; if(selector){//キー存在するreturnnewInspector(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セレクター=embed3d_renders [name]; if(セレクター){//キー存在するreturnnewInspector(document.querySelector(selector));} else {return true;}
});

タイムスタンプ:

より多くの OpenAI