Comment comparer les embeddings de requêtes et de produits pour rechercher des candidats pertinents?
sobes.tech IA
Réponse de l'IA
Pour comparer les embeddings de requêtes et de produits, on utilise généralement des mesures de similarité ou de distance dans l’espace vectoriel. Les approches principales :
-
Similarité cosinus (Cosine Similarity) : mesure l’angle entre deux vecteurs, en ignorant leur longueur. Souvent utilisée, car elle reflète bien la proximité sémantique.
-
Distance Euclidienne (Euclidean Distance) : mesure la distance directe entre deux points dans l’espace.
-
Distance de Manhattan (Manhattan Distance) : somme des différences absolues pour chaque coordonnée.
Pour rechercher des produits pertinents par requête :
- Convertissez la requête et les produits en embeddings à l’aide d’un modèle (par exemple, BERT, Word2Vec).
- Calculez la similarité cosinus entre l’embedding de la requête et chaque embedding de produit.
- Triez les produits par ordre décroissant de similarité — les plus pertinents seront en haut.
Exemple en Python utilisant la similarité cosinus :
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, nombre_de_produits)
# Indices des produits triés par similarité décroissante
sorted_indices = np.argsort(-similarities[0])
print("Produits pertinents par ordre décroissant de similarité :", sorted_indices)
Pour une recherche évolutive sur de grandes collections d’embeddings, on utilise des bibliothèques et des index spécialisés, comme FAISS ou Annoy.