Kuidas võrrelda päringute ja toodete sisestusi, et leida asjakohaseid kandidaate?
sobes.tech AI
Vastus AI-lt
Küsimuste ja toodeteid sisaldavate sisendite võrdlemiseks kasutatakse tavaliselt vektori ruumis sarnasus- või kaugusmõõtmeid. Peamised lähenemisviisid:
-
Kosine sarnasus (Cosine Similarity): mõõdab kahe vektori vahelist nurka, ignoreerides nende pikkust. Sageli kasutatakse, kuna see peegeldab hästi semantilist lähedust.
-
Eukleidiline kaugus (Euclidean Distance): mõõdab sirgjoonelist kaugust punktide vahel ruumis.
-
Manhattani kaugus (Manhattan Distance): summa absoluutsetest erinevustest iga koordinaadi puhul.
Relevantsete toodete leidmiseks vastavalt päringule:
- Muutke päring ja tooted sisenditeks kasutades mudelit (näiteks BERT, Word2Vec).
- Arvutage kosine sarnasus päringu sisendi ja iga toote sisendi vahel.
- Sorteerige tooted vastavalt kahanevale sarnasusele — kõige relevantsemad on ülaosas.
Python näide kosine sarnasuse kasutamisest:
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, toodete arv)
# Toote indeksid kahanevas sarnasuses
sorted_indices = np.argsort(-similarities[0])
print("Relevantsed tooted kahanevas sarnasuses:", sorted_indices)
Skaleeritava otsingu jaoks suurte kogumite puhul kasutatakse spetsialiseeritud teeke ja indekseid, näiteks FAISS või Annoy.