vs чистый LLM
Модель без retrieval не обновляется без переобучения, галлюцинирует и не даёт источников. RAG добавляет обновляемую внешнюю память + provenance.
Survey Gao et al. (2023) называет три родовые болячки больших языковых моделей, ради которых и нужен RAG:
| Проблема LLM | В чём суть | Ответ RAG |
|---|---|---|
| Галлюцинации | модель уверенно выдумывает факты, которых не знает | заземление ответа на извлечённый текст |
| Устаревшее знание | параметрическое знание заморожено на момент обучения | внешний индекс можно обновлять без переобучения |
| Непрослеживаемость | непрозрачное рассуждение, нельзя проверить источник | provenance — конкретные документы-источники |
Первоисточник (Lewis et al., 2020) формулирует ту же мотивацию через память: чисто параметрические модели «не могут легко расширять/ревизировать память, не дают insight в свои предсказания и галлюцинируют».
RAG = гибрид двух видов памяти. Это центральная мысль статьи Lewis 2020.
| Параметрическая память | Непараметрическая память | |
|---|---|---|
| Где знание | в весах модели | во внешнем индексе текста |
| Обновление | требует переобучения | замена / правка индекса |
| Прозрачность | непрозрачна | человекочитаема, инспектируема |
| Пример (Lewis 2020) | генератор BART-large (400M) | dense-индекс Википедии + retriever DPR |
Naive RAG — это линейный конвейер из трёх фаз. Первая выполняется заранее (offline), две другие — на каждый запрос.
| Фаза | Когда | Что происходит |
|---|---|---|
| 1. Indexing | offline | документы → чистка в plain text → нарезка на чанки (из-за лимита контекста) → embedding-модель кодирует чанки в векторы → vector DB |
| 2. Retrieval | на запрос | запрос кодируется той же embedding-моделью → similarity-скоры запрос↔чанки → извлекаются top-K наиболее похожих |
| 3. Generation | на запрос | запрос + top-K чанки «synthesized into a coherent prompt» → LLM генерирует ответ (опирается на контекст и/или свою параметрическую память) |
«Почему так» = это минимальный жизнеспособный способ дать LLM свежее, проверяемое, доменное знание без переобучения. Разбор по альтернативам:
Модель без retrieval не обновляется без переобучения, галлюцинирует и не даёт источников. RAG добавляет обновляемую внешнюю память + provenance.
Дообучение зашивает знание в веса: дорого, медленно обновлять, нет traceability. RAG держит знание снаружи — дёшево обновлять, есть ссылки. Fine-tuning лучше для поведения/стиля, RAG — для фактического меняющегося знания.
Naive RAG выигрывает простотой: минимум компонентов, понятный baseline, быстро поднять. Это отправная точка, от которой отталкиваются усложнения.
Survey разбирает недостатки по трём осям — это и есть причины, по которым появились более сложные парадигмы.
Низкие precision и recall → выбор нерелевантных / misaligned чанков и пропуск критичной информации.
Галлюцинации поверх контекста («content not supported by the retrieved context»), а также irrelevance, toxicity, bias.
Редундантность и повторы при дублях из разных источников; плохая интеграция → «disjointed outputs»; over-reliance (ответ просто «эхо» извлечённого без синтеза).
«Naive» — не уничижительный термин, а базовый уровень, относительно которого определены усложнения. Каждая следующая парадигма устраняет недостатки предыдущей.
| Парадигма | Что добавляет | Структура |
|---|---|---|
| Naive RAG | базовый Retrieve-Read | линейная: indexing → retrieval → generation |
| Advanced RAG | pre-retrieval (query rewriting/expansion) и post-retrieval (re-ranking, сжатие контекста) оптимизация | та же последовательная, с обвязкой вокруг retrieval |
| Modular RAG | конфигурируемые модули (search, memory, routing); итеративный/адаптивный retrieval | гибкая: последовательная И итеративная |