ПрименениеEmbeddings

Семантический поиск

За пределами поиска по ключевым словам

Проблема: Традиционный поиск по ключевым словам не работает, когда пользователи используют другие слова, чем в документах. Поиск "средство от головной боли" не найдёт "лечение мигрени". Как преодолеть этот разрыв?

Решение: Понимание смысла, а не слов

Semantic search использует эмбеддинги (embeddings) — плотные векторные представления смысла текста — чтобы находить контент по смыслу, а не по точному совпадению ключевых слов. Эмбеддинг-модель читает фрагмент текста и выдаёт список чисел (часто 384, 768 или 1536 штук), который кодирует его смысл. Тексты о похожих идеях оказываются рядом в этом многомерном пространстве, а несвязанные — далеко друг от друга. Запрос "средство от головной боли" находит "лечение мигрени", потому что оба отображаются в близкие векторы, хотя у них нет ни одного общего слова.

Как это работает

Пайплайн состоит из двух фаз. Сначала офлайн-индексация: каждый документ из твоей коллекции один раз прогоняется через эмбеддинг-модель, а полученные векторы сохраняются в векторной базе данных (vector database) — например, Pinecone, Qdrant или pgvector. Затем онлайн-фаза запроса: когда пользователь ищет, его запрос кодируется той же моделью, и ты сравниваешь вектор запроса с сохранёнными векторами документов. Стандартная мера сравнения — это косинусное сходство (cosine similarity): косинус угла между двумя векторами, от 1 (одинаковое направление) до 0 (не связаны) и -1 (противоположны). Документы с наибольшим сходством возвращаются как результаты top-k. Для больших коллекций векторы не сравнивают точно со всеми подряд — индекс приближённого поиска ANN (approximate nearest neighbor), например HNSW, ускоряет поиск ценой редких промахов по настоящему совпадению.

Когда использовать и какие компромиссы

Бери семантический поиск, когда пользователи формулируют запросы своими словами, когда важны синонимы и перефразировки или когда нужен кросс-языковой поиск. Он же — основа извлечения в RAG-системах, которые подают контекст в LLM. Но без ловушек не обходится. Эмбеддинги размывают точные детали: запрос с кодом продукта "X-450" или конкретным именем человека может поднять смутно похожий документ выше точного — ведь именно точность по ключевым словам эмбеддинги и сглаживают. На практике это лечит гибридный поиск (hybrid search): смешиваем семантическую оценку с сигналом по ключевым словам вроде BM25, чтобы получить и смысл, и точное совпадение. Ещё два правила: запросы и документы нужно кодировать одной и той же моделью, а длинные документы перед эмбеддингом стоит резать на маленькие фрагменты (chunks), потому что один вектор не может честно представить десять страниц разнородного текста.

Разобранный пример. Представь базу знаний поддержки из 3 статей: A = "Сброс пароля", B = "Обновление платёжной карты", C = "Восстановление заблокированного аккаунта". Пользователь пишет "я забыл вход". Поиск по ключевым словам не находит ничего — ни в одной статье нет слов "забыл" или "вход". Семантический поиск кодирует запрос и получает косинусные оценки примерно A = 0.81, C = 0.74, B = 0.22. Он возвращает наверх A и C, потому что "забыл вход" семантически близко к "сбросу пароля" и "заблокированному аккаунту", и справедливо отправляет вниз несвязанную статью про оплату.

Представьте это как библиотекарь, который понимает, что вы имеете в виду, а не только что вы сказали:

  • 1. Преобразуем документы в эмбеддинги: Каждый документ кодируется в плотный вектор и сохраняется в векторной базе данных
  • 2. Преобразуем запрос в эмбеддинг: Поисковый запрос пользователя кодируется той же эмбеддинг-моделью
  • 3. Вычисляем косинусное сходство: Измеряем угол между вектором запроса и каждым вектором документа
  • 4. Ранжируем по оценке сходства: Документы, наиболее близкие по смыслу к запросу, поднимаются в топ результатов
  • 5. Возвращаем top-k результатов: Возвращаем наиболее семантически релевантные совпадения, часто с дополнительным ранжированием

Где это используется?

  • Поиск по базе знаний: Поиск релевантных статей поддержки, даже когда пользователи описывают проблемы своими словами
  • Поиск по документации: Нахождение нужной страницы API-справочника по концептуальному вопросу
  • Поиск продуктов: "Удобная обувь для долгих прогулок" находит "эргономичную обувь" и "ортопедические кроссовки"
  • Кросс-языковой поиск: Запрос на английском находит семантически схожие документы на русском или французском
  • Частая ловушка: слепые пятна эмбеддингов: Эмбеддинг-модели плохо справляются с редкими именами собственными, кодами продуктов и свежей терминологией — гибридный поиск (семантика + BM25) лучше обрабатывает такие случаи

Интересный факт: В 1536-мерном пространстве эмбеддингов расстояние между "king" и "queen" почти идентично расстоянию между "man" и "woman". Так эмбеддинги фиксируют отношения. Современные эмбеддинг-модели обрабатывают 100+ языков в одном векторном пространстве — вопрос на русском может найти ответ на английском.

Попробуйте сами!

Попробуй интерактивный пример ниже, чтобы сравнить поиск по ключевым словам и семантический поиск, и увидеть, как поиск по смыслу находит то, что упускают ключевые слова.

Keyword vs Semantic Search

Посмотрите, как один запрос возвращает разные результаты

Выберите поисковый запрос:

Как мне писать код?
Keyword Search3 результатов

Начало работы с программированием на Python

Руководство для начинающих по написанию первого Python-скрипта.

pythonprogrammingbeginner
Both

Создание REST API на Node.js

Настройка маршрутов, middleware и деплой бэкенд-сервера.

RESTAPINode.jsbackend
Both

Продвинутые паттерны JavaScript

Замыкания, прототипы и паттерны проектирования для JS-разработчиков.

JavaScriptpatternsadvancedclosures
Both
Semantic Search7 результатов

Начало работы с программированием на Python

Руководство для начинающих по написанию первого Python-скрипта.

pythonprogrammingbeginner
Both
0.93

Продвинутые паттерны JavaScript

Замыкания, прототипы и паттерны проектирования для JS-разработчиков.

JavaScriptpatternsadvancedclosures
Both
0.90

Создание REST API на Node.js

Настройка маршрутов, middleware и деплой бэкенд-сервера.

RESTAPINode.jsbackend
Both
0.88

Введение в анализ данных

Использование pandas и статистики для извлечения инсайтов из данных.

Semantic Only
0.74

Руководство по архитектуре нейронных сетей

Погружение в слои, активации и дизайн моделей.

Semantic Only
0.62

Понимание трансформеров в ИИ

Механизм внимания, BERT, GPT и революция в NLP.

Semantic Only
0.55

Основы машинного обучения

Основные алгоритмы ML и как модели обучаются на данных.

Semantic Only
0.51
Key Insight
  • Семантический поиск понимает синонимы: "код" находит "программирование", даже если это слово отсутствует в запросе.
  • Keyword-поиск хрупок: отсутствие ОДНОГО слова означает пропуск документа.
  • Лучшие системы объединяют оба подхода (hybrid search): keyword для точных совпадений, семантический для смысла.
Keywordсовпадение по словамSemantic Onlyсемантика нашла, keyword — нетBothнайдено обоими методами

Частые вопросы

Чем семантический поиск отличается от поиска по ключевым словам?

Поиск по словам ищет точные совпадения — запрос «автомобиль» не найдёт «машина». Семантический поиск преобразует текст в эмбеддинги (числовые векторы) и сравнивает смысл, поэтому «автомобиль» найдёт «машина», «транспортное средство» и «седан».

Что такое эмбеддинги и как они работают?

Эмбеддинги — плотные числовые векторы (например, 1536 измерений), захватывающие смысл текста. Похожие значения дают похожие векторы. Генерируются специализированными моделями вроде text-embedding-3-small или Cohere embed.

Что такое косинусное сходство?

Косинусное сходство измеряет угол между двумя векторами, возвращая значение от -1 до 1. Значения близкие к 1 означают высокое сходство, близкие к 0 — отсутствие связи. Это стандартная метрика для сравнения эмбеддингов.

Когда использовать семантический поиск, а когда по ключевым словам?

Семантический — когда пользователи формулируют запросы на естественном языке, когда важны синонимы или для межъязыкового поиска. По ключевым словам — для точных идентификаторов (артикулы, имена). Лучшие системы комбинируют оба подхода (гибридный поиск).

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаНачинающийАнализ

Преобразуй вопрос пользователя в оптимальный поисковый запрос

Без техники
Без техники
Промпт
Улучши поисковый запрос: "почему мой ноутбук медленно работает"
Ответ

ноутбук медленно работает причины

Токены:18/8
Время:185ms
Качество:
С applications-semantic-search
С техникой
Промпт
Преобразуй вопрос пользователя в оптимальный поисковый запрос для семантического поиска. Правила: 1. Удали разговорные слова (почему, как, что) 2. Оставь ключевые существительные и глаголы 3. Добавь синонимы через OR для расширения покрытия 4. Укажи контекст (техническая документация) 5. Верни 1 основной запрос + 2 альтернативы Вопрос пользователя: "почему мой ноутбук медленно работает"
Ответ

Основной запрос: ноутбук медленная работа производительность снижение

Альтернатива 1 (симптомы): ноутбук тормозит зависает OR медленная загрузка приложений

Альтернатива 2 (причины): производительность ноутбука деградация причины OR перегрев процессор загрузка диска

👁️Разговорные вопросительные слова создают шум — их удаление повышает точность поиска
🧠Три варианта запроса покрывают разные углы проблемы: симптомы, причины и технические термины
🔍OR-синонимы увеличивают recall без потери precision в векторном поиске
Токены:95/85
Время:580ms
Качество:
Почему это работает

Качественный поисковый запрос — это не просто «лучшие слова», а несколько вариантов, покрывающих разные формулировки одной проблемы: это напрямую влияет на recall системы семантического поиска.

1 / 2

Квиз по уроку

1 из 3

1.Что использует семантический поиск для сравнения смысла текста?

Практика

Создайте бесплатный аккаунт для решения челленджей

1 челленджей с AI-проверкой для этого урока

Связанные уроки:Question AnsweringRag

Этот урок — часть структурированного курса по LLM.

Мой путь обучения