О чём материал
В этой статье я расскажу про устройство нашего RAG (Retrieval-Augmented Generation) — подхода, при котором языковая модель перед генерацией ответа сначала извлекает релевантные фрагменты из базы знаний.
Разберу, какие гиперпараметры влияют на качество сильнее всего, и покажу, как мы выбили из системы максимум — включая часть, где кодовый агент сам оптимизировал промпт и код по результатам собственных eval-прогонов.
Архитектура системы
Ключевые компоненты нашего RAG — стратегия чанкинга (разбивки документов на фрагменты), гибридный поиск и реранкер. Каждый из этих элементов влияет на итоговое качество ответов, и я подробно разберу, как именно.
Гибридный поиск совмещает плотный поиск по векторным эмбеддингам и разреженный (keyword-based) поиск — оба метода дополняют друг друга, позволяя находить релевантные фрагменты там, где один из подходов даёт осечку. Реранкер (модель, переоценивающая порядок найденных результатов) позволяет улучшить точность финальной выборки.
Гиперпараметры и их влияние
Не все настройки влияют на качество одинаково. Я разберу, какие гиперпараметры оказывают наибольший эффект на итоговые метрики, и покажу, на что стоит тратить время при настройке системы, а что можно оставить по умолчанию.
Кодовый агент за штурвалом
Один из самых интересных экспериментов — ситуация, когда кодовый агент сам оптимизировал промпт и код, опираясь на результаты собственных eval-прогонов. Это позволило автоматизировать часть итерационного цикла, который обычно требует ручного вмешательства разработчика.
Такой подход — когда система сама оценивает свои результаты и корректирует логику работы — представляет собой практический пример self-improvement loop в рамках production RAG-пайплайна.