開始使用免費開始

產品的語意搜尋

來實際運用你的 find_n_closest() 函式吧!你會用一個測試查詢來試跑語意商品搜尋,根據先前提供給模型的強化資料,計算並排序出語意上最相似的前五個商品。

以下是你在上一個練習中建立的 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() 函式也可使用。回想一下,它會接收一些文字,並回傳一個清單,其中包含每段文字的嵌入向量(embedding)。另外,你之前建立的 products 字典與 product_embeddings 也都已載入。

本練習屬於課程

Introduction to Embeddings with the OpenAI API

檢視課程

練習說明

  • query_text 建立查詢向量。
  • 使用 find_n_closest() 找出最接近的五個距離及其對應索引。
  • 迴圈走訪 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"])
編輯並執行程式碼