Sobes.tech
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:

  1. Zet de zoekopdracht en de producten om in embeddings met behulp van een model (bijvoorbeeld BERT, Word2Vec).
  2. Bereken de cosine similarity tussen de embedding van de zoekopdracht en elke productembedding.
  3. 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.