Урок курса
Семантический поиск и эмбеддинги: как это работает
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-модель?
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
