Чанкер и эмбеддер
Как работает чанкер и зачем нужен эмбеддер.
Так.
Вот в прошлых статьях мы поняли предназначение рага — ситуативно подавать модели информацию для генерации, и значение контекстного окна — хранить всю информацию, которую модель должна использовать при генерации.
А теперь давай коротко пройдемся по архитектуре рага. Разберём из чего состоит и как работает каждый элемент.
Всего в раге есть четыре обязательные сущности: чанкер, эмбеддер, векторная база данных, ретривер.
Чанкер — клац-клац.
Это сущность для дробления текста на куски перед отправкой этих кусков в эмбеддер для последующей векторизации и добавления в векторную базу данных. Такие куски называются чанки.
Отсюда и адаптированное название — «Нарезатель».
— Не боись, ща разберём все эти термины.
Смари, у тебя есть какой-то пдф с инструкцией про подключение, использование и ремонт холодильника, страниц на 100. Если загрузить в раг весь этот пдф в исходном виде, то при каждом запросе пользователя к ллмке про холодильник, раг будет подгружать в контекстное окно весь этот файл целиком.
Так вроде и отлично, да? Нет! Ты читал предыдущую статью про контекстное окно? Такое событие приведет к деградации ответов — они станут не точные, модель будет терять данные и тупить.
Как так?
Современные модели адекватно и чётко воспринимают информацию, когда её объём не превышает примерно 35% от размера контекстного окна в токенах. После этой отметки, чем больше подаём в контекст, тем более повышается вероятность получить не чёткий ответ, растёт стохастика.
— Ллмка это ведь просто 12 летний ребёнок, запомнивший весь интернет. Не надо на неё давить.
Если мы говорим о корпоративной разработке, пдф файлов точно будет много сотен и далеко не по 100 страниц. А если нужная инфа для ответа ещё и находится в нескольких файлах? Подавать в контекст модели 500 страниц текста? Нет, будет деградация.

Вот тут и нужен чанкер.
По установленным параметрам, он нарежет текст нашей инструкции к холодильнику. Причём нарежет не бестолково, а чтоб смысл полученных кусков отличался. Текст про ремонт радиатора был в одном чанке, а текст про его установку уже в другом. Так модель будет отвечать чётче, а сделать чёткие и надёжные ответы модели как раз и работа ИИ-инженера.
После такой умной нарезки текста, пришло время передать полученные куски в эмбеддер.
Эмбеддер — нормально распределил.
Это маленькая моделька, обычно до 1б параметров, формирующая эмбеддинги для каждого токена текста чанка.
Адаптированный перевод будет выглядеть как «Оцифровщик». Такой перевод отразит суть его работы — перевести текст в цифры.
— Ух, написал как кандидат наук. Не будем так.
Эмбеддер берёт текст, разбивает его на токены и делает вектора для каждого из них. В статье Токен и токенизатор говорили о том, что такое токен, а в цикле Математика нейронов сформировали понимание векторов. В контексте рага, вектор называется «Эмбеддинг».
Сценариев работы у эмбеддера 2:
- 1. Взять запрос пользователя, векторизовать его и передать в векторную базу данных для поиска релевантных кусков текста. Это базовый сценарий работы рага на проде.
- 2. Взять чанки, сформировать для них вектора и отправить в векторную БД. Это сценарий, когда мы добавляем новый пдф в раг, чтоб модель смогла отвечать, используя его содержимое.
Важно чтобы эмбеддер для чанков и эмбеддер для запроса пользователя был одной моделью. Тогда вектора запроса и чанков будут находится в единой системе координат, что повысит точность векторного поиска.
Вывод.
Чанкером нарезали текст на куски, стараясь соблюсти структуру повествования, а эмбеддером сформировали вектора для всех чанков.
Вне зависимости от сценария, после эмбеддера подключается векторная база данных.
Что это такое и какую функцию выполняет — простым языком без усложнений читай далее.