在 OpenAI API PlatoBlockchain 数据智能中引入文本和代码嵌入。垂直搜索。人工智能。

在 OpenAI API 中引入文本和代码嵌入

在 OpenAI API 中引入文本和代码嵌入

我们正在引入嵌入,这是 OpenAI API 中的一个新端点,可以轻松执行自然语言和代码任务,如语义搜索、聚类、主题建模和分类。 嵌入是转换为数字序列的概念的数字表示,它使计算机更容易理解这些概念之间的关系。 我们的嵌入在 3 个标准基准测试中优于顶级模型,其中包括 20% 的代码搜索相对改进。

阅读文件阅读论文

嵌入对于使用自然语言和代码很有用,因为它们可以很容易地被其他机器学习模型和算法(如聚类或搜索)使用和比较。

在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入

数值相似的嵌入在语义上也相似。 例如,“canine companions say”的嵌入向量将更类似于“woof”的嵌入向量,而不是“meow”的嵌入向量。

在 OpenAI API 中引入文本和代码嵌入
在 OpenAI API 中引入文本和代码嵌入

新端点使用神经网络模型(GPT-3 的后代)将文本和代码映射到向量表示——将它们“嵌入”到高维空间中。 每个维度都捕获输入的某些方面。

新的 /嵌入 端点在 开放人工智能API 通过几行代码提供文本和代码嵌入:

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

我们正在发布三个嵌入模型系列,每个系列都经过调整以在不同的功能上表现出色:文本相似性、文本搜索和代码搜索。 这些模型将文本或代码作为输入并返回一个嵌入向量。

型号 用例
文本相似度:捕获文本之间的语义相似性。 文本相似性-{ada、巴贝奇、居里、达芬奇}-001 聚类、回归、异常检测、可视化
文字搜寻: 对文档进行语义信息检索。 文本搜索-{ada、巴贝奇、居里、达芬奇}-{查询、文档}-001 搜索、上下文相关性、信息检索
代码搜索:使用自然语言查询查找相关代码。 代码搜索-{ada, babbage}-{代码, 文本}-001 代码搜索和相关性

文本相似性模型

文本相似性模型提供了捕获文本片段语义相似性的嵌入。 这些模型可用于许多任务,包括 集群, 数据可视化分类.

以下交互式可视化显示了来自 DBpedia 数据集的文本样本的嵌入:

拖动以平移、滚动或捏合以缩放

嵌入来自 text-similarity-babbage-001 模型,应用于 DBpedia中 数据集。 我们从涵盖 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)

嵌入的一种流行用途是将它们用作机器学习任务中的特征,例如分类。 在机器学习文献中,当使用线性分类器时,这种分类任务称为“线性探针”。 我们的文本相似性模型在线性探针分类方面取得了新的最先进的结果 发送评估 (Conneau 等人,2018 年),用于评估嵌入质量的常用基准。

超过 7 个数据集的线性探针分类
以前的 SOTA (高等人。 2021)
90.2%
文本相似度-davinci-001
92.2%
显示更多

文本搜索模型

文本搜索模型提供了支持大规模搜索任务的嵌入,例如在给定文本查询的文档集合中查找相关文档。 分别对文档和查询进行嵌入,然后使用余弦相似度来比较查询和每个文档之间的相似度。

基于嵌入的搜索可以比经典关键字搜索中使用的单词重叠技术更好地概括,因为它捕获了文本的语义含义并且对确切的短语或单词不太敏感。 我们评估文本搜索模型在 贝雷尔 (塔库尔等人。 2021) 搜索评估套件并获得比以前的方法更好的搜索性能。 我们的 文本搜索指南 提供有关使用嵌入进行搜索任务的更多详细信息。

代码搜索模型

代码搜索模型为代码搜索任务提供代码和文本嵌入。 给定一组代码块,任务是为自然语言查询找到相关的代码块。 我们评估代码搜索模型 代码搜索网 (Husian 等, 2019) 评估套件,其中我们的嵌入比以前的方法取得了明显更好的结果。 查看 代码搜索指南 使用嵌入进行代码搜索。

超过 6 种编程语言的平均准确度
以前的 SOTA (郭等人。 2021)
77.4%
代码搜索巴贝奇-{doc,查询}-001
93.5%
显示更多

Embeddings API 实例

JetBrains 研究

JetBrains Research 的 天体粒子物理实验室 分析数据,如 天文学家的电报 和美国宇航局的 GCN 通函,即包含传统算法无法解析的天文事件的报告。

在 OpenAI 嵌入这些天文报告的支持下,研究人员现在能够在多个数据库和出版物中搜索“螃蟹脉冲星爆发”等事件。 Embeddings 还通过 k-means 聚类实现了 99.85% 的数据源分类准确率。

微调学习

微调学习 是一家为学习构建混合人类-人工智能解决方案的公司,例如 自适应学习循环 帮助学生达到学术标准。

OpenAI 的嵌入显着改进了根据学习目标查找教科书内容的任务。 OpenAI 的 text-search-curie 嵌入模型实现了 5% 的 top-89.1 准确率,优于之前的方法,如 Sentence-BERT (64.5%)。 虽然人类专家仍然更好,但 FineTune 团队现在能够在几秒钟内标记整本教科书,而专家则需要几个小时。

我们的嵌入与 Sentence-BERT 的比较, GPT-3 搜索 和人类主题专家,用于将教科书内容与学习目标相匹配。 我们报告 准确度@k,正确答案在前 k 个预测中的次数。

法比尤斯

法比尤斯 帮助公司将客户对话转化为结构化的洞察力,从而为规划和优先级排序提供依据。 OpenAI 的嵌入使公司能够更轻松地找到并标记带有功能请求的客户通话记录。

例如,客户可能会使用“自动化”或“易于使用”等词来要求更好的自助服务平台。 以前,Fabius 使用模糊关键字搜索来尝试使用自助服务平台标签来标记这些成绩单。 借助 OpenAI 的嵌入,他们现在能够找到 2 倍以上的一般示例,以及 6 至 10 倍以上具有抽象用例且客户可能使用的关键字不明确的功能示例。

所有 API 客户都可以开始使用 嵌入文档 在他们的应用程序中使用嵌入。

阅读文件


致谢

感谢以下人员对此版本的贡献:

徐涛、克里斯·哈拉西、劳尔·普瑞、亚历克·雷德福、杰西·迈克尔·韩、杰瑞·托雷克、袁启明、尼古拉斯·特扎克、金钟旭、约翰内斯·海德克、普拉纳夫·希亚姆、泰娜·埃隆杜·内库尔、吉里什·萨斯特里、格雷琴·克鲁格、大卫·施努尔、费利佩·彼得罗斯基比如,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 图 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) 返回; 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 = function (parent, child) { 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();
});
从“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 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 !== width) change(width = w); } window.addEventListener(“调整大小”,调整大小);返回函数(){ window.removeEventListener(“调整大小”,调整大小);};});
}; const topk_renders = {“图表”:“#topk-chart”,
};
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