
类型:人工智能
简介:一家开放人工智能研究和部署公司,推出了ChatGPT。
OpenAI文本嵌入是一种将文本转化为向量的技术,这些向量能够捕捉文本的语义信息。下面介绍OpenAI文本嵌入的使用场景及用于搜索的方式和相关操作指南。
一、OpenAI嵌入使用场景
1、搜索(根据与查询字符串的相关性对结果进行排名)
2、聚类(按相似度对文本字符串进行分组)
3、推荐(推荐与相关文本字符串相关的项目)
4、异常检测(识别与相关度较低的异常值)
5、多样性测量(分析相似度分布)
6、分类(根据其最相似的标签对文本字符串进行分类)
嵌入(Embeddings)是一个浮点数向量(列表)。两个向量之间的距离测量它们之间的相关性。较小的距离表明高相关性,而较大的距离则表明低相关性。
二、嵌入获取方法
要获取嵌入(Embeddings),将文本字符串与嵌入(Embeddings)模型ID(例如text-embedding-ada-002)一起发送到嵌入(Embeddings)API终端点(Completion)(opens in a new tab)。
响应将包含一个嵌入(Embeddings),可以提取、保存和使用。
示例请求:
curl https://api.openai.com/v1/embeddings -H "Content-Type: application/json" -H "Authorization: Bearer $OPENAI_API_KEY" -d '{ "input": "Your text string goes here", "model": "text-embedding-ada-002" }'
示例响应:
{ "data": [ { "embedding": [ -0.006929283495992422, -0.005336422007530928, ... -4.547132266452536e-05, -0.024047505110502243 ], "index": 0, "object": "embedding" } ], "model": "text-embedding-ada-002", "object": "list", "usage": { "prompt_tokens": 5, "total_tokens": 5 } }
三、OpenAI嵌入模型
OpenAI提供一个第二代嵌入(Embeddings)模型(模型ID中用-002表示),以及16个第一代模型(模型ID中用-001表示)。建议在几乎所有情况下使用text-embedding-ada-002。它更好、更便宜、更简单易用。
模型生成 | 分词工具 | 最大输入标记数 | 知识截止时间 |
V2 | cl100k_base | 8191 | 2021 年 9 月份 |
V1 | GPT-2/GPT-3 | 2046 | 2020 年 8 月份 |
使用价格按输入令牌计价,每1000个令牌价格为$0.0004,或约为每美元约3,000页(假设每页约有800个令牌):
模型(Model) | 一美元页数(Rough pages per dollar) | BEIR评分 |
text-embedding-ada-002 | 3000 | 53.9 |
-davinci–001 | 6 | 52.8 |
-curie–001 | 60 | 50.9 |
-babbage–001 | 240 | 50.4 |
-ada–001 | 300 | 49 |
1、第二代模型
模型名称 | 分词工具 | 最大输入标记数 | 输出维度 |
text-embedding-ada-002 | cl100k_base | 8191 | 1536 |
2、第一代嵌入 (不推荐)
所有第一代模型(以-001结尾的)使用GPT-3分词器(opens in a new tab),最多可输入2046个令牌。第一代嵌入(Embeddings)是由五个不同的模型家族生成,针对三种不同的任务进行了调整:文本搜索、文本相似度和代码搜索。
搜索模型以一对出现:一个用于短查询,一个用于长文档。(五个:文本搜索、文本相似度和代码搜索、短查询、长文档)
每个模型家族都包括高质量高速度等四个维度:
Model | output dimensions |
Ada | 1024 |
Babbage | 2048 |
Curie | 4096 |
Davinci | 12288 |
Davinci 是最强大的,但比其他模型慢且更贵。Ada 是最不强大的,但速度和价格都比较快和便宜。
四、相似度嵌入
相似度模型最擅长捕捉文本之间的语义相似性。
应用场景 | 可用模型 |
聚类、回归、异常检测、可视化 | text-similarity-ada-001“text-similarity-babbage-001“text-similarity-curie-001 text-similarity-davinci-001 |
五、文本搜索嵌入
文本搜索模型有助于衡量哪些长文档与短搜索查询最相关。文本搜索模型使用两种模型,一个用于嵌入(Embeddings)搜索查询,一个用于嵌入(Embeddings)要排序的文档。与搜索查询嵌入(Embeddings)最接近的文档嵌入(Embeddings)应该是最相关的。
应用场景 | 可用模型 |
搜索、上下文相关性、信息检索 | text-search-ada-doc-001“text-search-ada-query-001“text-search-babbage-doc-001“text-search-babbage-query-001“text-search-curie-doc-001“text-search-curie-query-001“text-search-davinci-doc-001“text-search-davinci-query-001 |
六、检索的代码片段嵌入
与搜索嵌入(Embeddings)类似,有两种类型:一种用于嵌入(Embeddings)自然语言搜索查询,一种用于嵌入(Embeddings)要检索的代码片段。
应用场景 | 可用模型 |
代码搜索和相关性 | code-search-ada-code-001“code-search-ada-text-001“code-search-babbage-code-001“code-search-babbage-text-001 |
对于-001文本嵌入(Embeddings)(不是-002和代码嵌入(Embeddings)),我们建议将输入中的换行符(\n)替换为单个空格,因为我们发现当存在换行符时结果更差。