文本相似度

使用 OpenAI API 的 Embeddings 入门

Emmanuel Pire

Senior Software Engineer, DataCamp

回顾…

 

  • 语义相近的文本在向量空间中距离更近
  • 用距离衡量相似度
  • 支持以下嵌入应用:
    • 语义搜索
    • 推荐
    • 分类

 

一个二维向量空间示意图,显示同一情感与主题的评论在向量空间中更接近。

使用 OpenAI API 的 Embeddings 入门

衡量相似度

 

余弦距离

from scipy.spatial import distance

distance.cosine([0, 1], [1, 0])
1.0
  • 取值范围 0 到 2
  • 数值越小=相似度越高

 

两条向量及其夹角直线示意图。

使用 OpenAI API 的 Embeddings 入门

示例:比较标题相似度

包含标题及其嵌入的字典列表。

使用 OpenAI API 的 Embeddings 入门

示例:比较标题相似度

def create_embeddings(texts):
  response = client.embeddings.create(
    model="text-embedding-3-small",
    input=texts
  )
  response_dict = response.model_dump()

  return [data['embedding'] for data in response_dict['data']]
print(create_embeddings(["Python is the best!", "R is the best!"]))

print(create_embeddings("DataCamp is awesome!")[0])
[[0.0050565884448587894, ..., , -0.04000323638319969],
 [-0.0018890155479311943, ..., -0.04085670784115791]]

[0.00037010075175203383, ..., -0.021759100258350372]
使用 OpenAI API 的 Embeddings 入门

示例:比较标题相似度

from scipy.spatial import distance
import numpy as np

search_text = "computer"
search_embedding = create_embeddings(search_text)[0]
distances = []
for article in articles:
dist = distance.cosine(search_embedding, article["embedding"])
distances.append(dist)
min_dist_ind = np.argmin(distances)
print(articles[min_dist_ind]['headline'])
科技公司发布创新产品以提升在线无障碍性
使用 OpenAI API 的 Embeddings 入门

Passons à la pratique !

使用 OpenAI API 的 Embeddings 入门

Preparing Video For Download...