开始使用免费开始使用

产品的语义搜索

是时候用上您的 find_n_closest() 函数了!请在一个测试查询上试试您的产品语义搜索,根据您为模型提供的增强数据,计算并排序出与查询最相近的 5 个产品。

下面是上一道练习中您编写的 find_n_closest() 函数回顾:

def find_n_closest(query_vector, embeddings, n=3):
    distances = []
    for index, embedding in enumerate(embeddings):
        distance = spatial.distance.cosine(query_vector, embedding)
        distances.append({"distance": distance, "index": index})
    distances_sorted = sorted(distances, key=lambda x: x["distance"])
    return distances_sorted[0:n]

您之前创建的 create_embeddings() 函数也可用。回忆一下,它接收一些文本,并返回一个由列表组成的列表,其中包含每段文本的嵌入向量。此前创建的 products 字典和 product_embeddings 也已加载。

本练习是课程的一部分

使用 OpenAI API 的 Embeddings 入门

查看课程

练习说明

  • query_text 创建查询向量。
  • 使用 find_n_closest() 查找 5 个最近的距离及其对应的索引。
  • 遍历 hits,并从 hits 列表中每个 'index' 提取相应的产品。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Create the query vector from query_text
query_text = "computer"
query_vector = ____[0]

# Find the five closest distances
hits = ____

print(f'Search results for "{query_text}"')
for hit in hits:
  # Extract the product at each index in hits
  product = products[____]
  print(product["title"])
编辑并运行代码