文档地址:https://platform.openai.com/docs/guides/embeddings

嵌入(Embeddings)

什么是嵌入?

OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于:

  • 搜索(结果按与查询字符串的相关性排名)
  • 聚类(文本字符串按相似性分组)
  • 推荐(推荐具有相关文本字符串的项目)
  • 异常检测(识别出相关性很小的异常值)
  • 多样性测量(分析相似性分布)
  • 分类(文本字符串按最相似的标签进行分类)

我们很高兴地宣布,新的Assistants API 具有检索功能和内置消息历史记录管理功能。如果您不想自己制作和存储嵌入,请查看Assistants API以了解更多信息。

嵌入是浮点数的向量(列表)。两个向量之间的距离衡量它们的相关性。距离小表明相关性高,距离大表明相关性低。

要查看嵌入的实际效果,请查看我们的代码示例

如何获得嵌入

要获得嵌入,请将文本字符串以及选择嵌入的模型 ID (例如:text-embedding-ada-002)发送到 embeddings API endpoint 。响应将包含一个嵌入,您可以提取、保存和使用它。

请求示例

Curl 示例:

获取嵌入

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"
  }'

Python 请求示例:

from openai import OpenAI
client = OpenAI()

response = client.embeddings.create(
    input="Your text string goes here",
    model="text-embedding-ada-002"
)

print(response.data[0].embedding)

响应示例:

{
  "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 嵌入时,请牢记其限制和风险。

用例

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

获取嵌入

该数据集包含截至 2012 年 10 月亚马逊用户留下的总共 568,454 条食品评论。出于说明目的,我们将使用 1,000 条最新评论的子集。评论是英文的,往往是正面的或负面的。每条评论都有 ProductId、UserId、Score、评论标题(摘要)和评论正文(文本)。例如:

产品编号 用户身份 分数 概括 文本
B001E4KFG0 A3SGXH7AUHU8GW 5 Good Quality Dog Food I have bought several of the Vitality canned…
B00813GRG4 A1D87F6ZCVE5NK 1 Not as Advertised Product arrived labeled as Jumbo Salted Peanut…

我们将把评论摘要和评论文本合并成一个组合文本。该模型将对组合文本进行编码并输出单个向量嵌入。

作者:Jeebiz  创建时间:2023-12-17 00:50
最后编辑:Jeebiz  更新时间:2023-12-28 16:43