Эмбеддинг (векторное представление)
Идея эмбеддингов проста: вместо того чтобы сравнивать слова по буквам, мы превращаем их в точки в многомерном пространстве (обычно 512, 1024 или больше измерений). Чем ближе точки друг к другу, тем ближе их смысл.
Что важно
- Эмбеддинги хорошо ловят синонимы и связанные понятия. «Машина» и «автомобиль» будут лежать рядом, хотя написаны по-разному.
- Они работают не только для слов, но и для предложений, абзацев, документов, изображений, аудио.
- Эмбеддинги, полученные на одной модели, нельзя смешивать с эмбеддингами другой — векторное пространство у каждой модели своё.
Типичные применения
- Семантический поиск — найти документ по смыслу, а не по точному совпадению слов.
- RAG — отобрать релевантные куски базы знаний для большого языкового модели.
- Рекомендательные системы — найти похожие фильмы, товары, статьи.
- Кластеризация — автоматически разбить заявки клиентов на смысловые группы.
Когда применять и когда нет
Применять
- Нужен поиск или сравнение по смыслу, а не по точному совпадению
- Хотите строить RAG поверх своей базы знаний
- Нужно дешёвое и быстрое сравнение тысяч или миллионов объектов
Не применять
- Точный поиск по идентификатору или строгая фильтрация — здесь обычный SQL быстрее и надёжнее
- Очень маленький объём данных — можно обойтись классическим полнотекстовым поиском
Примеры применения
Если в базе вопросов поддержки лежат «как восстановить пароль», «не могу войти в аккаунт» и «забыл код», они окажутся рядом в пространстве эмбеддингов, хотя ни одно слово в них не совпадает. Когда новый клиент пишет «не могу зайти», система через эмбеддинги быстро находит этот кластер и подсовывает оператору готовые шаблоны ответов.
Часто задаваемые вопросы
Обычный поиск (например, по индексам в базе данных или через Elasticsearch без векторов) ищет совпадения по словам и их формам. Эмбеддинги ищут по смыслу: «доктор» найдётся по запросу «врач», а «не могу зайти» — по запросу «проблемы со входом», даже если в документах нет таких слов вообще.
Нет, у каждой модели своё векторное пространство и свои размерности. Если вы поменяли эмбеддинг-модель, придётся пересчитать векторы для всей базы и заново построить индекс в векторной базе данных.