Встречается на собеседованиях • сегодня

Как быстро отранжировать вектора по близости к запросу

Для ранжирования векторов по близости к запросу можно использовать косинусное расстояние или евклидову норму. В Python с помощью numpy и scipy это делается в несколько строк:

python
import numpy as np
from scipy.spatial.distance import cdist

query = np.array([0.5, 0.2, 0.3]) # Вектор запроса
vectors = np.random.rand(100, 3) # Массив векторов для сравнения

Косинусная близость (чем больше, тем ближе)

cos_sim = 1 - cdist([query], vectors, 'cosine')[0]
sorted_indices = np.argsort(cos_sim)[::-1] # Сортировка по убыванию

Или евклидово расстояние (чем меньше, тем ближе)

eucl_dist = cdist([query], vectors, 'euclidean')[0]
sorted_indices = np.argsort(eucl_dist)

text

Для больших датасетов эффективнее использовать `faiss` или `annoy` для приближенного поиска.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы