Какво е семантично търсене срещу лексикално търсене?
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})")
Този код ще намери изречения, близки по смисъл до думата "кола".