Sobes.tech
Middle — Senior

Какво е семантично търсене срещу лексикално търсене?

sobes.tech AI

Отговор от AI

Лексикалното търсене (lexical search) се основава на точно съвпадение на думи или фрази в текста. Търси документи, които съдържат точно посочените думи в заявката, без да взема предвид смисъла или контекста. Например, търсене по ключови думи в база данни или прост филтър по редове.

Семантичното търсене (semantic search) се опитва да разбере смисъла на заявката и документите, използвайки модели, които вземат предвид контекста, синонимите и връзките между думите. То позволява да се намерят релевантни резултати, дори ако няма точни съвпадения на думите. Например, при търсене "автомобил", семантичното търсене може да върне документи с "кола" или "транспорт".

По този начин, лексикалното търсене е търсене по буквално съвпадение, а семантичното — по смислово съответствие.

Пример с използване на Python и библиотека за семантично търсене:

from sentence_transformers import SentenceTransformer, util

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

корпус = ["Обичам да шофирам с моята кола", "Днес времето е слънчево", "Колите имат различни марки"]
корпус_ембедингите = model.encode(корпус, convert_to_tensor=True)

заявка = "кола"
заявка_ембединг = model.encode(заявка, convert_to_tensor=True)

резултати = util.semantic_search(заявка_ембединг, корпус_ембедингите, top_k=2)

for резултат in резултати[0]:
    print(корпус[резултат['corpus_id']], f"(точка: {резултат['score']:.4f})")

Този код ще намери изречения, близки по смисъл до думата "кола".