Sobes.tech
Middle — Senior
43

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

Сұралған компаниялар
ИннотехИннотех
Сибур
ГазпромбанкГазпромбанк

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

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