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