Č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".