Middle
Jak porovnat embeddingy dotazů a produktů pro hledání relevantních kandidátů?
sobes.tech AI
Odpověď od AI
Pro porovnání vložení dotazů a produktů se obvykle používají míry podobnosti nebo vzdálenosti vektorového prostoru. Hlavní přístupy:
-
Kosinusová podobnost (Cosine Similarity): měří úhel mezi dvěma vektory, ignoruje jejich délku. Často se používá, protože dobře odráží sémantickou blízkost.
-
Euklidovská vzdálenost (Euclidean Distance): měří přímou vzdálenost mezi body v prostoru.
-
Manhattanská vzdálenost (Manhattan Distance): součet absolutních rozdílů v každé souřadnici.
Pro hledání relevantních produktů podle dotazu:
- Převádějte dotaz a produkty na vložení pomocí modelu (například BERT, Word2Vec).
- Spočítejte kosinusovou podobnost mezi vložením dotazu a každým vložením produktu.
- Seřaďte produkty podle sestupné podobnosti — nejrelevantnější budou nahoře.
Příklad v Pythonu s použitím kosinusové podobnosti:
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, počet_produktů)
# Indexy produktů seřazené podle sestupné podobnosti
sorted_indices = np.argsort(-similarities[0])
print("Relevantní produkty podle sestupné podobnosti:", sorted_indices)
Pro škálovatelné vyhledávání ve velkých kolekcích embedů se používají specializované knihovny a indexy, například FAISS nebo Annoy.