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

  1. Alakítsa át a kérdést és a termékeket beágyazásokra egy modell (pl. BERT, Word2Vec) segítségével.
  2. Számolja ki a koszinuszi hasonlóságot a kérés beágyazása és minden termékbeágyazás között.
  3. 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.