Como comparar embeddings de consultas e produtos para procurar candidatos relevantes?
sobes.tech IA
Resposta da IA
Para comparar as embeddings de consultas e produtos, geralmente usam-se medidas de similaridade ou distâncias no espaço vetorial. As principais abordagens:
-
Similaridade do cosseno (Cosine Similarity): mede o ângulo entre dois vetores, ignorando o seu comprimento. Frequentemente usada, pois reflete bem a proximidade semântica.
-
Distância Euclidiana (Euclidean Distance): mede a distância direta entre pontos no espaço.
-
Distância de Manhattan (Manhattan Distance): soma das diferenças absolutas em cada coordenada.
Para procurar produtos relevantes por consulta:
- Converta a consulta e os produtos em embeddings usando um modelo (por exemplo, BERT, Word2Vec).
- Calcule a similaridade do cosseno entre o embedding da consulta e cada embedding de produto.
- Ordene os produtos por similaridade decrescente — os mais relevantes ficarão no topo.
Exemplo em Python usando similaridade do cosseno:
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, número_de_produtos)
# Índices de produtos ordenados por similaridade decrescente
sorted_indices = np.argsort(-similarities[0])
print("Produtos relevantes por ordem de similaridade decrescente:", sorted_indices)
Para buscas escaláveis em grandes coleções de embeddings, usam-se bibliotecas e índices especializados, como FAISS ou Annoy.