Sobes.tech
Middle

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:

  1. Zamień zapytanie i produkty na osadzenia za pomocą modelu (np. BERT, Word2Vec).
  2. Oblicz podobieństwo kosinusowe między osadzeniem zapytania a każdym osadzeniem produktu.
  3. 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.