НачатьНачать бесплатно

Семантический поиск товаров

Пора применить функцию 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(), созданная ранее, также доступна. Напомним: она принимает текст и возвращает список списков с эмбеддингами (векторными представлениями) для каждого текста. Словарь products и ранее созданные product_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"])
Редактировать и запускать код