Семантичний пошук товарів
Час застосувати вашу функцію 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(), яку ви створили раніше, також доступна. Нагадаємо: вона приймає текст і повертає список списків із вкладеннями (embeddings) для кожного тексту. Словник products і product_embeddings, які ви створили раніше, уже завантажено.
Ця вправа є частиною курсу
Вступ до Embeddings з OpenAI API
Інструкції до вправи
- Створіть вектор запиту з
query_text. - Знайдіть п'ять найближчих відстаней і їхні індекси за допомогою функції
find_n_closest(). - Пройдіться циклом по
hitsі дістаньте товар за кожним'index'у спискуhits.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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"])