Sobes.tech
Middle — Senior

Čo je to sémantické vyhľadávanie vs lexikálne vyhľadávanie?

sobes.tech AI

Odpoveď od AI

Leksikálne vyhľadávanie (lexical search) je založené na presnej zhode slov alebo fráz v texte. Vyhľadáva dokumenty, ktoré obsahujú presne tie slová, ktoré sú uvedené vo vyhľadávacom dopyte, bez ohľadu na význam alebo kontext. Napríklad vyhľadávanie kľúčových slov v databáze alebo jednoduché filtrovanie podľa riadkov.

Semantické vyhľadávanie (semantic search) sa snaží pochopiť význam dopytu a dokumentov pomocou modelov, ktoré zohľadňujú kontext, synonymá a vzťahy medzi slovami. Umožňuje nájsť relevantné výsledky, aj keď nie sú presné zhody slov. Napríklad pri vyhľadávaní "auto" môže semantické vyhľadávanie vrátiť dokumenty s "vozidlo" alebo "doprava".

Takže, leksikálne vyhľadávanie je vyhľadávanie podľa doslovnej zhody, zatiaľ čo semantické podľa významovej zhody.

Príklad s použitím Pythonu a knižnice pre semantické vyhľadávanie:

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('all-MiniLM-L6-v2')

korpus = ["Rád jazdím svojím autom", "Počasie je dnes slnečné", "Automobily majú rôzne značky"]
korpus_embeddings = model.encode(korpus, convert_to_tensor=True)

dopyt = "auto"
 dopyt_embedding = model.encode(dopyt, convert_to_tensor=True)

výsledky = util.semantic_search(dopyt_embedding, korpus_embeddings, top_k=2)

for výsledok in výsledky[0]:
    print(korpus[výsledok['corpus_id']], f"(skóre: {výsledok['score']:.4f})")

Tento kód nájde vety, ktoré majú podobný význam ako slovo "auto".