产品的语义搜索
是时候用上您的 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"])