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

  1. Převádějte dotaz a produkty na vložení pomocí modelu (například BERT, Word2Vec).
  2. Spočítejte kosinusovou podobnost mezi vložením dotazu a každým vložením produktu.
  3. 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.