Middle
Hoe vergelijk je query- en product-embeddings om relevante kandidaten te vinden?
sobes.tech AI
Antwoord van AI
Om de embeddings van zoekopdrachten en producten te vergelijken, worden meestal gelijkenis- of afstandsmaten in de vectorruimte gebruikt. De belangrijkste benaderingen:
-
Cosine Similarity: meet de hoek tussen twee vectoren, negeert hun lengte. Wordt vaak gebruikt omdat het de semantische nabijheid goed weergeeft.
-
Euclidische afstand: meet de rechte afstand tussen punten in de ruimte.
-
Manhattan afstand: som van de absolute verschillen per coördinaat.
Om relevante producten te vinden op basis van een zoekopdracht:
- Zet de zoekopdracht en de producten om in embeddings met behulp van een model (bijvoorbeeld BERT, Word2Vec).
- Bereken de cosine similarity tussen de embedding van de zoekopdracht en elke productembedding.
- Sorteer de producten op basis van afnemende gelijkenis — de meest relevante bovenaan.
Voorbeeld in Python met cosine similarity:
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, aantal_producten)
# Indices van producten gesorteerd op afnemende gelijkenis
sorted_indices = np.argsort(-similarities[0])
print("Relevante producten in afnemende volgorde van gelijkenis:", sorted_indices)
Voor schaalbare zoekopdrachten in grote collecties embeddings worden gespecialiseerde bibliotheken en indexen gebruikt, zoals FAISS of Annoy.