Giới thiệu tính năng nhúng văn bản và mã trong OpenAI API PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Giới thiệu về Nhúng văn bản và mã trong API OpenAI

Giới thiệu về Nhúng văn bản và mã trong API OpenAI

Chúng tôi đang giới thiệu tính năng nhúng, một điểm cuối mới trong API OpenAI giúp dễ dàng thực hiện các tác vụ mã và ngôn ngữ tự nhiên như tìm kiếm ngữ nghĩa, phân cụm, lập mô hình chủ đề và phân loại. Nhúng là các biểu diễn số của các khái niệm được chuyển đổi thành chuỗi số, giúp máy tính dễ dàng hiểu được mối quan hệ giữa các khái niệm đó. Hoạt động nhúng của chúng tôi hoạt động tốt hơn các mô hình hàng đầu ở 3 điểm chuẩn tiêu chuẩn, bao gồm cải thiện tương đối 20% trong tìm kiếm mã.

Đọc tài liệuĐọc báo

Nhúng rất hữu ích khi làm việc với ngôn ngữ tự nhiên và mã, vì chúng có thể dễ dàng được sử dụng và so sánh bởi các mô hình và thuật toán máy học khác như phân cụm hoặc tìm kiếm.

Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI

Các nhúng tương tự nhau về mặt số lượng cũng tương tự về mặt ngữ nghĩa. Ví dụ: vectơ nhúng của "chó đồng hành nói" sẽ giống với vectơ nhúng của "gâu gâu" hơn là "meo meo".

Giới thiệu về Nhúng văn bản và mã trong API OpenAI
Giới thiệu về Nhúng văn bản và mã trong API OpenAI

Điểm cuối mới sử dụng các mô hình mạng nơ-ron, là con cháu của GPT-3, để ánh xạ văn bản và mã thành biểu diễn vectơ— “nhúng” chúng vào không gian chiều cao. Mỗi thứ nguyên nắm bắt một số khía cạnh của đầu vào.

Mới / nhúng điểm cuối trong API OpenAI cung cấp nhúng văn bản và mã với một vài dòng mã:

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

Chúng tôi đang phát hành ba họ mô hình nhúng, mỗi họ được điều chỉnh để hoạt động tốt trên các chức năng khác nhau: tương tự văn bản, tìm kiếm văn bản và tìm kiếm mã. Các mô hình lấy văn bản hoặc mã làm đầu vào và trả về một vectơ nhúng.

mô hình Trường hợp sử dụng
Tương tự văn bản: Chụp sự giống nhau về ngữ nghĩa giữa các phần văn bản. text-same- {ada, babbage, curie, davinci} -001 Phân cụm, hồi quy, phát hiện bất thường, trực quan hóa
Tìm kiếm văn bản: Truy xuất thông tin ngữ nghĩa trên các tài liệu. text-search- {ada, babbage, curie, davinci} - {query, doc} -001 Tìm kiếm, liên quan đến ngữ cảnh, truy xuất thông tin
Tìm kiếm mã: Tìm mã có liên quan với truy vấn bằng ngôn ngữ tự nhiên. code-search- {ada, babbage} - {code, text} -001 Tìm kiếm mã và mức độ liên quan

Các mô hình giống nhau về văn bản

Các mô hình tương tự văn bản cung cấp các phương pháp nhúng để nắm bắt sự giống nhau về ngữ nghĩa của các đoạn văn bản. Các mô hình này hữu ích cho nhiều tác vụ bao gồm tập hợp, trực quan hóa dữ liệuphân loại.

Hình ảnh trực quan tương tác sau đây cho thấy nhúng các mẫu văn bản từ tập dữ liệu DBpedia:

Kéo để xoay, cuộn hoặc chụm để thu phóng

Nhúng từ text-similarity-babbage-001 mô hình, được áp dụng cho DBpedia tập dữ liệu. Chúng tôi chọn ngẫu nhiên 100 mẫu từ tập dữ liệu bao gồm 5 danh mục và tính toán các lần nhúng thông qua / nhúng điểm cuối. Các danh mục khác nhau hiển thị dưới dạng 5 cụm rõ ràng trong không gian nhúng. Để hình dung không gian nhúng, chúng tôi đã giảm kích thước nhúng từ 2048 xuống 3 bằng cách sử dụng PCA. Có sẵn mã về cách trực quan hóa không gian nhúng trong không gian 3D tại đây.

Để so sánh sự giống nhau của hai đoạn văn bản, bạn chỉ cần sử dụng sản phẩm chấm trên nhúng văn bản. Kết quả là "điểm tương tự", đôi khi được gọi là "cosine tương tự, ”Từ –1 đến 1, trong đó số càng cao có nghĩa là càng giống nhau. Trong hầu hết các ứng dụng, quá trình nhúng có thể được tính toán trước và sau đó việc so sánh sản phẩm chấm được thực hiện cực kỳ nhanh chóng.

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)

Một cách sử dụng phổ biến của nhúng là sử dụng chúng làm các tính năng trong các tác vụ học máy, chẳng hạn như phân loại. Trong tài liệu học máy, khi sử dụng bộ phân loại tuyến tính, nhiệm vụ phân loại này được gọi là “thăm dò tuyến tính”. Các mô hình tương tự văn bản của chúng tôi đạt được kết quả hiện đại mới về phân loại đầu dò tuyến tính trong Đã gửiEval (Conneau và cộng sự, 2018), một tiêu chuẩn thường được sử dụng để đánh giá chất lượng nhúng.

Phân loại đầu dò tuyến tính trên 7 bộ dữ liệu
SOTA trước đây (Gao và cộng sự. Năm 2021)
90.2%
text-same-davinci-001
92.2%
Cho xem nhiều hơn

Mô hình Tìm kiếm Văn bản

Các mô hình tìm kiếm văn bản cung cấp tính năng nhúng cho phép các tác vụ tìm kiếm quy mô lớn, như tìm một tài liệu có liên quan trong số một tập hợp các tài liệu được đưa ra một truy vấn văn bản. Nhúng cho các tài liệu và truy vấn được tạo riêng biệt, sau đó tính tương tự cosine được sử dụng để so sánh sự giống nhau giữa truy vấn và mỗi tài liệu.

Tìm kiếm dựa trên nhúng có thể khái quát hóa tốt hơn các kỹ thuật chồng chéo từ được sử dụng trong tìm kiếm từ khóa cổ điển, vì nó nắm bắt được ý nghĩa ngữ nghĩa của văn bản và ít nhạy cảm hơn với các cụm từ hoặc từ chính xác. Chúng tôi đánh giá hiệu suất của mô hình tìm kiếm văn bản trên HẠNH PHÚC (Thakur và cộng sự. Năm 2021) bộ đánh giá tìm kiếm và đạt được hiệu suất tìm kiếm tốt hơn so với các phương pháp trước đây. Của chúng tôi hướng dẫn tìm kiếm văn bản cung cấp thêm chi tiết về cách sử dụng nhúng cho các tác vụ tìm kiếm.

Mô hình tìm kiếm mã

Các mô hình tìm kiếm mã cung cấp mã và nhúng văn bản cho các tác vụ tìm kiếm mã. Đưa ra một bộ sưu tập các khối mã, nhiệm vụ là tìm khối mã có liên quan cho một truy vấn ngôn ngữ tự nhiên. Chúng tôi đánh giá các mô hình tìm kiếm mã trên MãTìm KiếmNet (Husian và cộng sự, 2019) bộ đánh giá trong đó việc nhúng của chúng tôi đạt được kết quả tốt hơn đáng kể so với các phương pháp trước đây. Kiểm tra hướng dẫn tìm kiếm mã để sử dụng nhúng để tìm kiếm mã.

Độ chính xác trung bình trên 6 ngôn ngữ lập trình
SOTA trước đây (Guo, et al. Năm 2021)
77.4%
code-search-babbage- {doc, query} -001
93.5%
Cho xem nhiều hơn

Ví dụ về API nhúng đang hoạt động

Nghiên cứu JetBrains

JetBrains Research's Phòng thí nghiệm vật lý hạt thiên văn phân tích dữ liệu như Điện tín của Nhà thiên văn học và của NASA Thông tư cấp GCN, là những báo cáo chứa các sự kiện thiên văn mà các thuật toán truyền thống không thể phân tích cú pháp.

Được hỗ trợ bởi việc nhúng các báo cáo thiên văn này của OpenAI, các nhà nghiên cứu hiện có thể tìm kiếm các sự kiện như “vụ nổ xung cua” trên nhiều cơ sở dữ liệu và ấn phẩm. Nhúng cũng đạt được độ chính xác 99.85% về phân loại nguồn dữ liệu thông qua phân cụm k-mean.

Học FineTune

Học FineTune là một công ty xây dựng các giải pháp kết hợp giữa con người-AI để học tập, như vòng lặp học tập thích ứng giúp học sinh đạt được các tiêu chuẩn học tập.

Các bản nhúng của OpenAI đã cải thiện đáng kể nhiệm vụ tìm kiếm nội dung sách giáo khoa dựa trên các mục tiêu học tập. Đạt được độ chính xác top 5 là 89.1%, mô hình nhúng văn bản-tìm kiếm-curie của OpenAI vượt trội so với các cách tiếp cận trước đây như Câu-BERT (64.5%). Trong khi các chuyên gia về con người vẫn giỏi hơn, nhóm FineTune hiện có thể dán nhãn toàn bộ sách giáo khoa chỉ trong vài giây, trái ngược với số giờ mà các chuyên gia đã mất.

So sánh các cách nhúng của chúng tôi với Câu-BERT, Tìm kiếm GPT-3 và các chuyên gia về vấn đề con người để phù hợp nội dung sách giáo khoa với các mục tiêu đã học. Chúng tôi báo cáo độ chính xác @ k, số lần câu trả lời đúng nằm trong k dự đoán hàng đầu.

fabius

fabius giúp các công ty biến các cuộc trò chuyện của khách hàng thành thông tin chi tiết có cấu trúc để cung cấp thông tin về việc lập kế hoạch và ưu tiên. Việc nhúng của OpenAI cho phép các công ty dễ dàng tìm và gắn thẻ bản ghi cuộc gọi của khách hàng với các yêu cầu tính năng.

Ví dụ: khách hàng có thể sử dụng các từ như “tự động” hoặc “dễ sử dụng” để yêu cầu một nền tảng tự phục vụ tốt hơn. Trước đây, Fabius đã sử dụng tìm kiếm từ khóa mờ để cố gắng gắn thẻ các bảng điểm đó với nhãn nền tảng tự phục vụ. Với cách nhúng của OpenAI, giờ đây họ có thể tìm thấy thêm gấp 2 lần ví dụ nói chung và thêm 6x – 10 lần ví dụ cho các tính năng có các trường hợp sử dụng trừu tượng không có từ khóa rõ ràng mà khách hàng có thể sử dụng.

Tất cả khách hàng API đều có thể bắt đầu với tài liệu nhúng để sử dụng nhúng trong các ứng dụng của họ.

Đọc tài liệu


Lời cảm ơn

Cảm ơn những người sau đây vì những đóng góp của họ cho bản phát hành này:

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 Chẳng hạn như Kenny Hsu, Madeleine Thompson, Tabarak Khan và Toki Sherbakov.

Cảm ơn những người sau đây đã phản hồi về bài đăng này: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-graph img {display: none;
}
.vector-graph img: first-child {display: block;
}

var printResponse = function (btn) {// append response 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); // ẩn nút btn.style.display = 'none';
}; var initRotate = function () {var rotates = document.querySelectorAll ('. js-xoay'); if (! rotates.length) return; // đối với mỗi tập hợp các phép quay thì rotates.forEach (function (r) {// di chuyển con đầu tiên đến cuối mỗi n giây window.setInterval (function () {moveToEnd (r, r.firstElementChild);}, 1500);}) ;
};
var moveToEnd = function (parent, child) {parent.removeChild (child); parent.appendChild (con); // nối vào phụ huynh
}; 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';});});
}; // trong đó
document.addEventListener ('DOMContentLoaded', function () {initRotate (); initShowMore ();
});
nhập {Runtime, Inspector, Library} từ “https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js”;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
nhập notebook_embed3d từ “https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3” const customWidth = function (selector) {return (new Library) .Generators.observe (function (thay đổi) {var width = change (document.querySelector (selector) .clientWidth); function resize () {var w = document.querySelector (selector) .clientWidth; if (w! == width) change (width = w);} window.addEventListener (“ thay đổi kích thước ”, đã thay đổi kích thước); return function () {window.removeEventListener (“ thay đổi kích thước ”, đã thay đổi kích thước);};});
}; const topk_renders = {“biểu đồ”: “# topk-chart”,
};
new Runtime (Object.assign (new Library, {width: customWidth (“# topk-chart”)})). mô-đun (notebook_topk, name => {const selector = topk_renders [name]; if (selector) {// key tồn tại trả về Thanh tra mới (document.querySelector (selector));} else {return true;}
}); const nhúng3d_renders = {“biểu đồ”: “# nhúng3d-biểu đồ”, “chú thích”: “# nhúng3d-chú thích”,
};
new Runtime (Object.assign (new Library, {width: customWidth (“# nhúng3d-chart”)})). mô-đun (notebook_embed3d, name => {const selector = emb3d_renders [name]; if (selector) {// key tồn tại trả về Thanh tra mới (document.querySelector (selector));} else {return true;}
});

Dấu thời gian:

Thêm từ OpenAI