Как выбрать чанки для контекста после retrieval
Retriever вернул top-K чанков. Как выбрать финальный контекст для LLM и где нужен reranker?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
После retrieval reranker сортирует top-K, дедупликация убирает повторяющиеся chunks, context assembly собирает компактный набор с цитатами и лимитом токенов.
Полный разбор
Dense или hybrid retriever отвечает за recall: нужные chunks должны попасть в top-K. Дальше reranker смотрит на query и chunk вместе и переставляет результаты по точной релевантности. Для legal RAG это может быть cross-encoder, learning-to-rank модель или LLM-judge на маленьком top-N, если latency позволяет.
После reranker pipeline убирает дубли, объединяет соседние chunks, сохраняет parent headings и не кладет в prompt несколько почти одинаковых фрагментов. Context assembly выбирает набор, который помещается в токен-бюджет и покрывает разные аспекты вопроса.
Метрики разделяются. Для retriever команда смотрит recall@K и hit rate. Для reranker - nDCG, MRR и precision@top. Для финального ответа - groundedness, цитаты, полнота и доля случаев, где система честно отвечает, что данных не хватает.
Теория
Reranker и context assembly локализуют ошибку между поиском и генерацией. Без этого RAG часто приносит правильный документ, но кладет в prompt не тот фрагмент.