Компромисс качества и задержки в RAG

Автор: Salimov Shaliko Kamalovich, группа R4210
Генератор: Sphinx 8 + MyST

Retrieval-Augmented Generation (RAG) дополняет языковую модель найденными фрагментами внешней базы знаний [1]. На этой странице проверяется, как число переданных фрагментов \(k\) связано с полнотой контекста, фактической верностью ответа и задержкой.

Важно: это детерминированная синтетическая демонстрация структуры эксперимента, а не результат тестирования конкретной LLM или поискового индекса.

Методика

Для каждого \(k \in \{1,2,4,6,8,10,12\}\) моделируются восемь повторов. Полнота контекста растёт с увеличением \(k\), тогда как лишний контекст постепенно снижает фактическую верность и увеличивает задержку. Такое поведение согласуется с наблюдением, что модель использует длинный контекст неравномерно [2].

Интегральная полезность определяется уравнением (1):

(1)\[S(k) = 0.50R(k) + 0.35F(k) - 0.15\frac{L(k)}{\max_j L(j)},\]

где \(R\) — полнота контекста, \(F\) — фактическая верность, а \(L\) — задержка. Веса заданы заранее и не подбирались под результат.[1]

Устройство конвейера

Запрос преобразуется в top-\(k\) фрагментов, которые образуют контекст для LLM. Параметр \(k\) одновременно управляет объёмом доступных сведений и количеством шума. Дальнейшие результаты интерпретируются по правилам из раздела Результаты.

Результаты

Таблица 1. Средние показатели синтетического RAG-эксперимента
РежимkПолнотаВерностьЗадержка, сS(k)
Малый контекст10,5660,8880,5250,556
20,6560,8740,6220,588
Сбалансированный40,7570,8410,8670,610
60,8120,8141,1130,610
Большой контекст80,8420,7901,4080,595
100,8620,7321,7140,563
120,8740,6792,0650,525

Максимум по неокруглённым данным достигается при \(k=6\). После этой точки небольшой прирост полноты не компенсирует снижение верности и рост задержки.

Статический график качества и задержки RAG

Рис. 1 Статический график Matplotlib. Качество насыщается, а задержка продолжает расти.

На Рис. 1 виден общий тренд. Интерактивная версия ниже позволяет сопоставить точные значения наведением курсора.

Воспроизводимый расчёт

Список 1 Расчёт интегральной полезности для одной строки
1def rag_utility(recall: float, faithfulness: float,
2                latency: float, max_latency: float) -> float:
3    """Combine quality gains with a normalized latency penalty."""
4    return (
5        0.50 * recall
6        + 0.35 * faithfulness
7        - 0.15 * latency / max_latency
8    )

Полный генератор данных использует фиксированное зерно 4210, сохраняет исходные повторы и агрегаты в CSV и создаёт оба графика из одной таблицы. Поэтому отличие двух страниц определяется генератором сайта, а не данными.

Вывод

Для заданной модели полезности разумный компромисс достигается при \(k=6\). Увеличивать контекст автоматически невыгодно: полнота продолжает расти, но ответ становится медленнее и менее устойчив к нерелевантным фрагментам. Это вывод только о синтетическом сценарии; для практической RAG-системы функции из раздела Методика нужно заменить измерениями на фиксированном датасете.

Литература

[1]

Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Kuttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, and Douwe Kiela. Retrieval-augmented generation for knowledge-intensive nlp tasks. In Advances in Neural Information Processing Systems, volume 33, 9459–9474. 2020. URL: https://proceedings.neurips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html.

[2]

Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, and Percy Liang. Lost in the middle: how language models use long contexts. Transactions of the Association for Computational Linguistics, 12:157–173, 2024. doi:10.1162/tacl_a_00638.