產品的語意搜尋
來實際運用你的 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"])