Как сравнивать эмбеддинги запросов и товаров для поиска релевантных кандидатов?
Answer from AI
sobes.tech AI
Для сравнения эмбеддингов запросов и товаров обычно используют меры сходства или расстояния в векторном пространстве. Основные подходы:
-
Косинусное сходство (Cosine Similarity): измеряет угол между двумя векторами, игнорируя их длину. Часто используется, так как хорошо отражает семантическую близость.
-
Евклидово расстояние (Euclidean Distance): измеряет прямое расстояние между точками в пространстве.
-
Манхэттенское расстояние (Manhattan Distance): сумма абсолютных разниц по каждой координате.
Для поиска релевантных товаров по запросу:
- Преобразуйте запрос и товары в эмбеддинги с помощью модели (например, BERT, Word2Vec).
- Вычислите косинусное сходство между эмбеддингом запроса и каждым эмбеддингом товара.
- Отсортируйте товары по убыванию сходства — самые релевантные будут сверху.
Пример на Python с использованием косинусного сходства:
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
query_embedding = np.array([[0.1, 0.3, 0.5]])
product_embeddings = np.array([
[0.2, 0.1, 0.4],
[0.9, 0.8, 0.7],
[0.05, 0.3, 0.5]
])
similarities = cosine_similarity(query_embedding, product_embeddings)
# similarities.shape = (1, number_of_products)
# Индексы товаров, отсортированные по убыванию сходства
sorted_indices = np.argsort(-similarities[0])
print("Релевантные товары по убыванию сходства:", sorted_indices)
Для масштабируемого поиска по большим коллекциям эмбеддингов применяют специализированные библиотеки и индексы, например, FAISS или Annoy.