Сортування за схожістю
Тепер, коли ви створили вкладення (embeddings — векторні представлення) для всіх своїх ознак, наступний крок — обчислити схожість. У цій вправі ви визначите функцію find_n_closest(), яка обчислює косинусні відстані між вектором запиту та списком вкладень і повертає n найменших відстаней і їхні індекси.
У наступній вправі ви використаєте цю функцію, щоб увімкнути семантичний пошук товарів у вашому застосунку.
distance було імпортовано з scipy.spatial.
Ця вправа є частиною курсу
Вступ до Embeddings з OpenAI API
Інструкції до вправи
- Обчисліть косинусну відстань між
query_vectorіembedding. - Додайте до списку
distancesсловник, що міститьdistі йогоindex. - Відсортуйте список
distancesза ключем'distance'кожного словника. - Поверніть перші
nелементи зі спискуdistances_sorted.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
def find_n_closest(query_vector, embeddings, n=3):
distances = []
for index, embedding in enumerate(embeddings):
# Calculate the cosine distance between the query vector and embedding
dist = ____
# Append the distance and index to distances
distances.append({"distance": ____, "index": ____})
# Sort distances by the distance key
distances_sorted = ____
# Return the first n elements in distances_sorted
return ____