Sobes.tech
Middle — Senior
32

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

Companies where asked
ИннотехИннотех
Сибур
ГазпромбанкГазпромбанк

Answer from AI

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})")

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