RAG или длинный контекст — вкладывать документы или искать по ним

Ещё недавно, чтобы бот отвечал по твоим документам, RAG был обязателен: контекстное окно было крошечным, весь текст туда не влезал. Теперь у моделей окна на сотни тысяч и даже до миллиона токенов — можно просто вложить весь документ прямо в запрос. Логичный вопрос: RAG умер? Вот ответ, который сэкономит тебе деньги и нервы: нет. Они решают разные задачи. Разберём, когда что.
Два способа дать модели знания
Оба про «чтобы модель знала твой текст», но работают по-разному.
Длинный контекст — ты вкладываешь весь документ (или все документы) прямо в запрос. Модель видит всё сразу и отвечает. Просто как копипаст: вставил — спросил.
RAG — ты не вкладываешь всё. Система сначала находит нужные куски под конкретный вопрос и подкладывает в запрос только их — как шпаргалку. Модель читает не всю книгу, а три страницы по теме.
Сравнение на понятных осях
| Критерий | Длинный контекст | RAG (поиск кусков) | |---|---|---| | Что делаешь | вкладываешь весь текст в запрос | ищешь нужное, вкладываешь только его | | Цена | платишь за все токены каждый раз | платишь только за найденный кусок | | Объём данных | до предела окна | хоть гигабайты — в окно всё и не должно влезать | | Свежесть | надо переслать заново | правишь документ в базе, и всё | | Надёжность | «теряется» в середине длинного текста | подаёшь только нужное — меньше шума | | Сложность | проще некуда: вставил и спросил | нужна векторная база и поиск |
Кому что подойдёт — без увиливаний
Бери длинный контекст, если задача разовая, документ один и влезает в окно, а тебе важна простота. «Разбери вот этот договор», «суммируй эту статью», «найди ошибку в этом файле». Вставил текст — получил ответ. Городить поиск тут незачем.
Бери RAG, если данных много, они часто меняются, и гонять их целиком каждый раз дорого. База знаний компании, поддержка по сотням статей, твоя личная вики. RAG подаёт модели только релевантное — это дешевле, быстрее и масштабируется без предела окна.
А правда, что модель «теряет» середину?
Да, и это важный нюанс против «просто вложи всё». У длинного контекста есть эффект «потерялось в середине»: модель лучше всего помнит начало и конец вложенного текста, а середину длинного полотна вспоминает хуже. Плюс качество ответа заметно проседает на очень больших объёмах. Так что «миллион токенов в окне» ≠ «модель одинаково хорошо помнит весь миллион». RAG обходит это тем, что подаёт мало и по делу.
Длинный контекст убьёт RAG?
Нет. Он забрал у RAG простые случаи «один документ, разовый вопрос» — раньше и там приходилось строить поиск, теперь можно вложить напрямую. Но на масштабе (много данных, частые обновления, экономия на токенах) RAG остаётся выгоднее. Скорее они уживаются: мелочь — контекстом, объём — RAG-ом.
Что дешевле?
Почти всегда RAG — если данных много и обращаешься часто. Длинный контекст заставляет платить за весь вложенный текст на каждый запрос; вложил книгу — платишь за книгу снова и снова. RAG платит только за найденные куски. На одном разовом вопросе разница копеечная, но на потоке она решает. Кстати, не путай этот выбор с RAG против дообучения — то про другое: как дать модели знания насовсем.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.




