庆云php

庆云php

chatgpt嵌入 chatgpt api中文文档,chatgpt怎么下载,chatgpt官网,chatgpt国内能用吗

PHP 0

嵌入

什么是嵌入?

OpenAI的文本嵌入衡量文本字符串的相关性。嵌入通常用于:
  • 搜索(其中结果按与查询字符串的相关性排名)
  • 聚类分析(其中文本字符串按相似性分组)
  • 建议(建议使用具有相关文本字符串的项目)
  • 异常检测(识别相关性不大的异常值)
  • 多样性测量(分析相似性分布)
  • 分类(其中文本字符串按其最相似的标签分类)
嵌入是浮点数的向量(列表)。两个向量之间的距离衡量它们的相关性。小距离表示高相关性,大距离表示低相关性。 访问我们的定价页面,了解嵌入定价。请求根据发送的输入中的令牌数计费。
若要查看嵌入的实际应用,请查看我们的代码示例
  • 分类
  • 主题聚类
  • 搜索
  • 建议
浏览示例

如何获取嵌入

要获取嵌入,请将文本字符串发送到嵌入 API 终结点,同时选择嵌入模型 ID(例如,)。响应将包含一个嵌入,您可以提取、保存和使用嵌入。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 } }
在 OpenAI Cookbook 中查看更多 Python 代码示例。 使用 OpenAI 嵌入时,请记住它们的局限性和风险

嵌入模型

OpenAI 提供 16 个第二代嵌入模型(在模型 ID 中表示)和 <> 个第一代模型(在模型 ID 中表示)。-002-001 我们建议对几乎所有用例使用文本嵌入-ada-002。它更好、更便宜、更易于使用。阅读博客文章公告
模型生成 分词器 最大输入令牌数 知识截止
V2 版 cl100k_base 8191 2021 年 <> 月
V1 版 GPT-2/GPT-3 2046 2020 年 <> 月
使用量按每个输入令牌定价,费率为每 0 个令牌 0004.1000 USD,或每美元约 ~3,000 页(假设每页 ~800 个令牌):
每美元粗略页数 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

使用案例

在这里,我们展示了一些具有代表性的用例。对于以下示例,我们将使用亚马逊美食评论数据集

获取嵌入

该数据集包含截至 568 年 454 月亚马逊用户留下的 2012,1 条食品评论。我们将使用 000,<> 条最新评论的子集进行说明。评论是英文的,往往是正面或负面的。每条评论都有一个产品 ID、用户 ID、分数、评论标题(摘要)和评论正文(文本)。例如:
产品编号 用户标识 得分 总结 发短信
B001E4KFG0 A3SGXH7AUHU8GW 5 优质狗粮 我买了几个活力罐头...
B00813GRG4 A1D87F6ZCVE5NK 1 不像广告上所说的那样 产品到达时标有巨型盐渍花生...
我们将评论摘要和评论文本合并为一个组合文本。该模型将对此组合文本进行编码并输出单个向量嵌入。 Obtain_dataset.ipynb
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)

Limitations & risks

Our embedding models may be unreliable or pose social risks in certain cases, and may cause harm in the absence of mitigations.

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 月的真实世界事件的一些信息的数据集上进行训练。如果您依赖代表最近事件的模型,那么它们可能无法很好地执行。

常见问题

在嵌入字符串之前,如何判断字符串有多少个标记?

在Python中,你可以使用OpenAI的tokenizer 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-002cl100k_base 更多详细信息和示例代码在 OpenAI 食谱指南如何使用 tiktoken 计算代币

如何快速检索 K 最近的嵌入向量?

为了快速搜索多个载体,我们建议使用矢量数据库。您可以在 GitHub 上的食谱中找到使用矢量数据库和 OpenAI API 的示例。 矢量数据库选项包括:
  • 松果,一个完全托管的载体数据库
  • Weaviate,一个开源的矢量搜索引擎
  • Faiss,Facebook的矢量搜索算法
  • 作为矢量数据库的 Redis
  • Qdrant,一个矢量搜索引擎
  • Typesense,开源搜索引擎,带矢量搜索

我应该使用哪种距离函数?

我们建议余弦相似性。距离函数的选择通常并不重要。 OpenAI 嵌入被规范化为长度 1,这意味着:
  • 余弦相似性的计算速度稍快,只需使用点积即可
  • 余弦相似性和欧几里得距离将导致相同的排名