Сортировка по схожести
Теперь, когда все признаки преобразованы в эмбеддинги (векторные представления), можно перейти к вычислению схожести. В этом упражнении вы определите функцию find_n_closest(), которая вычисляет косинусные расстояния между вектором запроса и списком эмбеддингов и возвращает n наименьших расстояний вместе с их индексами.
В следующем упражнении вы воспользуетесь этой функцией для создания приложения семантического поиска товаров.
distance уже импортирован из scipy.spatial.
Это упражнение является частью курса
Введение в эмбеддинги с 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 ____