RAG-системы в трёх наших кейсах
Всем привет, это Андрей Соколов, руководитель команды обучения моделей с внешним контекстом в Яндекс R&D. В этом посте я на примере трёх наших продуктов расскажу, как устроены RAG-системы и какие подходы работают на практике.
Алиса
Это универсальный ассистент, который работает с пользовательскими запросами. Здесь RAG используется как дополнительная веб-выдача: прежде чем дать ответ, Алиса идёт в поиск за актуальной информацией.
Как мы оцениваем качество
У нас есть три типа бенчмарков:
Multi-Hop QA — насколько модель хорошо работает с несколькими документами одновременно
Атрибуция — умеет ли она цитировать текст и понимать, откуда именно взята информация
Подтверждённость — как она выделяет релевантные данные среди всех остальных
Но чтобы оценивать E2E-качество, этих бенчмарков недостаточно. А если мы замаксим какой-нибудь из них, вся продуктовая система может развалиться.
Поэтому мы проводим замеры: асессоры размечают ответы модели по разным критериям. Проблема в том, что показывать им весь контекст очень дорого и долго. Но как тогда оценивать его утилизацию?
Решение — искать баланс
Если асессорские метрики растут, а подтверждённость падает, модель перестаёт утилизировать контекст. Когда происходит обратная ситуация, модель просто занимается копипастом. Так что нужна золотая середина.
Затем наступает черёд end-to-end-замеров: A/B-экспериментов и улучшений на конечном пользователе. Кроме этого, мы оцениваем робастность и проверяем, не теряем ли мы качество, когда контекста становится больше.
Нейросаппорт
Это классический ассистент, который подключается к бизнесу и даёт ответы пользователям на основе базы знаний. В отличие от Алисы, здесь RAG действует по принципу закрытой генерации и работает с внутренней документацией. Но здесь возникает проблема: в данных часто хранится NDA-информация, а модель может слить её пользователю.
Поэтому в контексте можно выделить небезопасные и приватные чанки, а затем собрать бенчмарк и оценить процент инцидентов. Дообучать будем с SFT: соберём репрезентативный набор из 10 тысяч семплов с описанием поведения.
Затем подключаем RLHF: собираем пары хороших/плохих ответов, учим ревард-модели детектить инциденты, запускаем условные PPO/GRPO. В итоге получаем примерно 19% роста качества относительно промптируемых моделей.
Нейроюрист
Очень похож на саппорт, но с нюансом: баз знаний очень много. Это правовые акты, прецеденты, разные юридические источники, которые нужно глубоко анализировать. Получается очень сложная композитная система.
Сделаем агента — единую языковую модель, точку входа, которую мы сможем дообучать и улучшать. Для этого можно собрать среду с необходимыми инструментами и симулировать общение с пользователем:
Походы в базы знаний
Обращение к документам
Рассуждение
Модель получает observation и выдаёт ответ. Всё сохраняется в виде трейса, который отправляется на оценку ревардов: правильно ли дёрнулись тулы, насколько хорошо написан ответ, не ходила ли моделька по кругу. Затем всё агрегируется, а модель обновляется через policy update.
Какие выводы я сделал
Каждая RAG-система уникальна
Изменения одного компонента влияют на все остальные
Не существует универсального способа оценивать качество
Один из ключевых аспектов RAG — устойчивость и безопасность
LLM нужно продолжать обучать и модифицировать
А полную запись моего доклада смотрите на ютубе и в VK Видео.
Подписывайтесь:
@Yandex4ML
@YandexML