Урок курса

Семантический поиск и эмбеддинги: как это работает

Vector DB & RAG Developer

Семантический поиск пытается найти совпадение по смыслу, даже если вопрос и документ используют разные слова. Запрос «как вернуть деньги за заказ» должен находить раздел «условия оформления возврата», хотя точного совпадения фраз нет.

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

Embedding-модель превращает текст в вектор фиксированной длины — набор чисел, описывающий его положение в многомерном пространстве. Тексты с похожим смыслом обычно получают близкие векторы.

Для поиска заранее вычисляют эмбеддинги документов. При запросе той же моделью строят вектор вопроса и сравнивают его с индексом. Популярная мера — cosine similarity:

cosine(a, b) = (a · b) / (||a|| × ||b||)

Чем ближе направление векторов, тем выше сходство. Сам вектор человеку не объясняет смысл; интерпретация появляется только через сравнение и тестовый набор.

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

Классический BM25 хорошо ловит точные термины: артикулы, имена функций, коды ошибок. Семантический поиск устойчивее к синонимам и перефразированию, но может пропустить редкий идентификатор или считать похожими тексты с разными важными деталями.

Поэтому в RAG часто используют гибридную схему: BM25 и vector search формируют два списка кандидатов, затем результаты объединяются и при необходимости проходят reranking.

Качество зависит от нескольких решений:

  • одна и та же embedding-модель должна использоваться для документов и запросов;
  • смена модели требует переиндексации корпуса;
  • документы нужно делить на осмысленные чанки;
  • язык и предметная область должны быть представлены в данных модели;
  • фильтры доступа и метаданных применяются вместе с поиском.

Высокая близость не является доказательством правильного ответа — это только сигнал релевантности.

Минимальный эксперимент

Возьмите набор документов и 20 реальных вопросов. Для каждого вопроса заранее отметьте правильный фрагмент. Постройте эмбеддинги, верните top-5 и посчитайте, как часто правильный результат оказался среди пяти.

Проверьте трудные случаи отдельно: отрицания, числа, версии продукта, короткие запросы и термины с несколькими значениями. Если семантический поиск путает версии или коды, добавьте metadata-фильтр либо лексическую компоненту.

Не сравнивайте embedding-модели только по публичному benchmark. Важнее Recall@k на вашем корпусе, задержка, цена индексации и разрешение на обработку данных.

Семантический поиск — это не замена всем видам поиска. Он добавляет понимание перефразирования, а точные совпадения и бизнес-фильтры продолжают выполнять свою работу.

Попробуйте решить

Почему для документов и пользовательского запроса используют одну embedding-модель?

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку