chatgpt嵌入 chatgpt api中文文档,chatgpt怎么下载,chatgpt官网,chatgpt国内能用吗
PHP
0
嵌入
什么是嵌入?
- 搜索(其中结果按与查询字符串的相关性排名)
- 聚类分析(其中文本字符串按相似性分组)
- 建议(建议使用具有相关文本字符串的项目)
- 异常检测(识别相关性不大的异常值)
- 多样性测量(分析相似性分布)
- 分类(其中文本字符串按其最相似的标签分类)
如何获取嵌入
text-embedding-ada-002
示例请求:
示例:获取嵌入
卷曲
1
2
3
4
5
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"}'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{ "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 } }
嵌入模型
-002
-001
我们建议对几乎所有用例使用文本嵌入-ada-002。它更好、更便宜、更易于使用。阅读博客文章公告。
模型生成 | 分词器 | 最大输入令牌数 | 知识截止 |
---|---|---|---|
V2 版 | cl100k_base | 8191 | 2021 年 <> 月 |
V1 版 | GPT-2/GPT-3 | 2046 | 2020 年 <> 月 |
型 | 每美元粗略页数 | BEIR 搜索评估中的示例性能 |
---|---|---|
嵌入-ADA-002 | 3000 | 53.9 |
*-达芬奇-*-001 | 6 | 52.8 |
*-居里-*-001 | 60 | 50.9 |
*-巴贝奇-*-001 | 240 | 50.4 |
*-阿达-*-001 | 300 | 49.0 |
第二代车型
型号名称 | 分词器 | 最大输入令牌数 | 输出尺寸 |
---|---|---|---|
文本嵌入-ADA-002 | cl100k_base | 8191 | 1536 |
第一代型号(不推荐)
使用案例
获取嵌入
1
2
3
4
5
6
def get_embedding(text, model="text-embedding-ada-002"): text = text.replace("\n", " ") return openai.Embedding.create(input = [text], model=model)['data'][0]['embedding'] df['ada_embedding'] = df.combined.apply(lambda x: get_embedding(x, model='text-embedding-ada-002')) df.to_csv('output/embedded_1k_reviews.csv', index=False)
1
2
3
4
import pandas as pd df = pd.read_csv('output/embedded_1k_reviews.csv') df['ada_embedding'] = df.ada_embedding.apply(eval).apply(np.array)
Data visualization in 2D
Embedding as a text feature encoder for ML algorithms
Classification using the embedding features
Zero-shot classification
Obtaining user and product embeddings for cold-start recommendation
Clustering
Text search using embeddings
Code search using embeddings
Recommendations using embeddings
Limitations & risks
Social bias
Limitation: The models encode social biases, e.g. via stereotypes or negative sentiment towards certain groups.We found evidence of bias in our models via running the SEAT (May et al, 2019) and the Winogender (Rudinger et al, 2018) benchmarks. Together, these benchmarks consist of 7 tests that measure whether models contain implicit biases when applied to gendered names, regional names, and some stereotypes. 例如,我们发现,与非裔美国人的名字相比,我们的模型更强烈地将(a)欧洲裔美国人的名字与积极的情绪联系起来,(b)消极的刻板印象与黑人女性联系起来。 这些基准在几个方面受到限制:(a)它们可能无法推广到您的特定用例,以及(b)它们仅测试一小部分可能的社会偏见。 这些测试是初步的,我们建议针对您的特定用例运行测试。这些结果应被视为该现象存在的证据,而不是您的用例的明确特征。请参阅我们的使用政策以获取更多详细信息和指导。 如果您有任何疑问,请通过聊天联系我们的支持团队;我们很乐意就此提供建议。
对最近发生的事件视而不见
限制:模型缺乏对 2020 年 <> 月之后发生的事件的了解。我们的模型在包含截至 8 年 2020 月的真实世界事件的一些信息的数据集上进行训练。如果您依赖代表最近事件的模型,那么它们可能无法很好地执行。
常见问题
在嵌入字符串之前,如何判断字符串有多少个标记?
tiktoken
将字符串拆分为代币。
示例代码:
1
2
3
4
5
6
7
8
9
import tiktoken def num_tokens_from_string(string: str, encoding_name: str) -> int: """Returns the number of tokens in a text string.""" encoding = tiktoken.get_encoding(encoding_name) num_tokens = len(encoding.encode(string)) return num_tokens num_tokens_from_string("tiktoken is great!", "cl100k_base")
text-embedding-ada-002
cl100k_base
更多详细信息和示例代码在 OpenAI 食谱指南如何使用 tiktoken 计算代币。
如何快速检索 K 最近的嵌入向量?
- 松果,一个完全托管的载体数据库
- Weaviate,一个开源的矢量搜索引擎
- Faiss,Facebook的矢量搜索算法
- 作为矢量数据库的 Redis
- Qdrant,一个矢量搜索引擎
- Typesense,开源搜索引擎,带矢量搜索
我应该使用哪种距离函数?
- 余弦相似性的计算速度稍快,只需使用点积即可
- 余弦相似性和欧几里得距离将导致相同的排名
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。