Middle
Hogyan hasonlítjuk össze a lekérdezés és termék beágyazásokat releváns jelöltek kereséséhez?
sobes.tech MI
Válasz az MI-től
A kérdések és termékek beágyazásainak összehasonlításához általában hasonlósági vagy távolságmérőket használnak a vektortérben. A fő megközelítések:
-
Koszinuszhasonlóság (Cosine Similarity): két vektor közötti szöget méri, figyelmen kívül hagyva azok hosszát. Gyakran használják, mivel jól tükrözi a szemantikus közelséget.
-
Euklideszi távolság (Euclidean Distance): a pontok közötti egyenes távolságot méri a térben.
-
Manhattan távolság (Manhattan Distance): az abszolút különbségek összege minden koordinátában.
Releváns termékek kereséséhez:
- Alakítsa át a kérdést és a termékeket beágyazásokra egy modell (pl. BERT, Word2Vec) segítségével.
- Számolja ki a koszinuszi hasonlóságot a kérés beágyazása és minden termékbeágyazás között.
- Rendezze a termékeket csökkenő hasonlóság szerint — a legrelevánsabbak legyenek az élén.
Python példával a koszinuszi hasonlóság használatával:
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, termékek száma)
# Termék indexek csökkenő hasonlóság szerint
sorted_indices = np.argsort(-similarities[0])
print("Releváns termékek csökkenő hasonlósági sorrendben:", sorted_indices)
Skálázható kereséshez nagy gyűjteményekben speciális könyvtárakat és indexeket használnak, például FAISS vagy Annoy.