¿Cómo comparar los embeddings de consultas y productos para buscar candidatos relevantes?
sobes.tech AI
Respuesta de la IA
Para comparar las incrustaciones de consultas y productos, generalmente se utilizan medidas de similitud o distancias en el espacio vectorial. Los enfoques principales:
-
Similitud coseno (Cosine Similarity): mide el ángulo entre dos vectores, ignorando su longitud. Se usa a menudo, ya que refleja bien la cercanía semántica.
-
Distancia Euclidiana (Euclidean Distance): mide la distancia recta entre puntos en el espacio.
-
Distancia Manhattan (Manhattan Distance): suma las diferencias absolutas en cada coordenada.
Para buscar productos relevantes por consulta:
- Convierte la consulta y los productos en incrustaciones usando un modelo (por ejemplo, BERT, Word2Vec).
- Calcula la similitud coseno entre la incrustación de la consulta y cada incrustación del producto.
- Ordena los productos por la similitud en orden descendente — los más relevantes estarán arriba.
Ejemplo en Python usando similitud coseno:
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, number_of_products)
# Índices de productos ordenados por similitud descendente
sorted_indices = np.argsort(-similarities[0])
print("Productos relevantes en orden descendente de similitud:", sorted_indices)
Para búsquedas escalables en colecciones grandes de incrustaciones, se utilizan bibliotecas e índices especializados, como FAISS o Annoy.