Sobes.tech
Middle — Senior
30

Что такое semantic search vs lexical search?

Компании, где спрашивали
ИннотехИннотех
Сибур
ГазпромбанкГазпромбанк

Ответ от нейросети

sobes.tech AI

Лексический поиск (lexical search) основан на точном совпадении слов или фраз в тексте. Он ищет документы, содержащие именно те слова, которые указаны в запросе, без учета смысла или контекста. Например, поиск по ключевым словам в базе данных или простая фильтрация по строкам.

Семантический поиск (semantic search) пытается понять смысл запроса и документов, используя модели, которые учитывают контекст, синонимы и отношения между словами. Он позволяет находить релевантные результаты, даже если точных совпадений слов нет. Например, при поиске "автомобиль" семантический поиск может вернуть документы с "машина" или "транспорт".

Таким образом, лексический поиск — это поиск по буквальному совпадению, а семантический — по смысловому соответствию.

Пример с использованием Python и библиотеки для семантического поиска:

from sentence_transformers import SentenceTransformer, util

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

corpus = ["Я люблю ездить на машине", "Погода сегодня солнечная", "Автомобили бывают разных марок"]
corpus_embeddings = model.encode(corpus, convert_to_tensor=True)

query = "автомобиль"
query_embedding = model.encode(query, convert_to_tensor=True)

hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=2)

for hit in hits[0]:
    print(corpus[hit['corpus_id']], f"(score: {hit['score']:.4f})")

Этот код найдет предложения, близкие по смыслу к слову "автомобиль".