奇妙的向量嵌入世界!

使用 OpenAI API 的 Embeddings 入门

Emmanuel Pire

Senior Software Engineer, DataCamp

什么是嵌入?

  • 来自自然语言处理(NLP)的概念
  • 文本的数值表示

将单词输入嵌入模型并输出文本的数值表示。

使用 OpenAI API 的 Embeddings 入门

什么是嵌入?

 

  • 将文本映射到_多维_向量空间
  • 模型输出的数字是文本在空间中的位置
  • 相似词彼此更_接近_
  • 不相似词更_远离_

文本以数值表示,相似文本更近。

使用 OpenAI API 的 Embeddings 入门

为何嵌入有用?

  • 嵌入可捕捉语义含义
  • 语义含义:文本的上下文与意图

 

  • 示例
    • "去超市怎么走?"
    • "能给我去商店的路线吗?"

文本以数值表示,相似文本更近。

使用 OpenAI API 的 Embeddings 入门

语义搜索引擎

 

  • 传统搜索引擎
    • 使用关键词匹配
    • 可能错过真实意图
    • 会漏掉词形变化

 

传统搜索引擎显示无关结果。

使用 OpenAI API 的 Embeddings 入门

语义搜索引擎

  • 使用嵌入理解意图与上下文

"comfortable running shoes" 文本被转换为嵌入。

使用 OpenAI API 的 Embeddings 入门

语义搜索引擎

  • 使用嵌入理解意图与上下文

嵌入后的文本显示在多维空间中。

使用 OpenAI API 的 Embeddings 入门

推荐系统

 

  • 示例:职位推荐
    • 基于已查看的职位描述推荐
    • 缓解职位名称差异

以嵌入形式展示的职位推荐。

使用 OpenAI API 的 Embeddings 入门

分类

 

分类任务:

  • 情感分类
  • 聚类观察
  • 主题归类

 

示例

  • 新闻标题分类

 

将未知新闻标题以嵌入表示进行分类。

使用 OpenAI API 的 Embeddings 入门

创建嵌入请求

  • Embeddings 端点
from openai import OpenAI


client = OpenAI(api_key="<OPENAI_API_KEY>")
response = client.embeddings.create(
model="text-embedding-3-small",
input="Embeddings are a numerical representation of text that can be used to measure the relatedness between two pieces of text."
)
response_dict = response.model_dump() print(response_dict)
1 https://platform.openai.com/docs/api-reference/embeddings
使用 OpenAI API 的 Embeddings 入门

嵌入响应

{'object': 'list',
 'data': [
    {
      "embedding": [0.0023064255, ..., -0.0028842222],
      "index": 0,
      "object": "embedding"
    }
  ],
 'model': 'text-embedding-3-small',
 'usage': {
  "prompt_tokens": 24,
  "total_tokens": 24
  }
}
使用 OpenAI API 的 Embeddings 入门

提取嵌入向量

print(response_dict['data'][0]['embedding'])
[0.0023064255, ...., -0.0028842222]
使用 OpenAI API 的 Embeddings 入门

Let's practice!

使用 OpenAI API 的 Embeddings 入门

Preparing Video For Download...