Jak porównywać osadzenia zapytań i produktów w celu znalezienia odpowiednich kandydatów?
sobes.tech AI
Odpowiedź od AI
Aby porównać osadzenia zapytań i produktów, zwykle używa się miar podobieństwa lub odległości w przestrzeni wektorowej. Główne podejścia:
-
Podobieństwo kosinusowe (Cosine Similarity): mierzy kąt między dwoma wektorami, ignorując ich długość. Często używane, ponieważ dobrze odzwierciedla bliskość semantyczną.
-
Odległość euklidesowa (Euclidean Distance): mierzy bezpośrednią odległość między punktami w przestrzeni.
-
Odległość Manhattan (Manhattan Distance): suma wartości bezwzględnych różnic w każdej współrzędnej.
Aby znaleźć odpowiednie produkty dla zapytania:
- Zamień zapytanie i produkty na osadzenia za pomocą modelu (np. BERT, Word2Vec).
- Oblicz podobieństwo kosinusowe między osadzeniem zapytania a każdym osadzeniem produktu.
- Posortuj produkty według malejącego podobieństwa — najbardziej odpowiednie będą na górze.
Przykład w Pythonie z użyciem podobieństwa kosinusowego:
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, liczba_produktów)
# Indeksy produktów posortowane według podobieństwa
sorted_indices = np.argsort(-similarities[0])
print("Odpowiednie produkty w kolejności malejącego podobieństwa:", sorted_indices)
Dla skalowalnych wyszukiwań w dużych kolekcjach embeddingów używa się specjalistycznych bibliotek i indeksów, takich jak FAISS czy Annoy.