RAG
retrieval-augmented generation — поиск документов + генерация ответа
RAG (Retrieval-Augmented Generation) — техника, в которой LLM перед ответом достаёт из внешней базы релевантные документы и использует их как контекст. Это решает две проблемы языковых моделей: устаревшие знания и галлюцинации. Пайплайн всегда один: запрос → embedding → поиск в векторной БД → подложить найденное в промпт → ответить. RAG — стандарт для чат-ботов с собственной базой знаний, поиска по документации и AI-ассистентов компаний.
Коротко
Коротко. RAG — это «модель плюс библиотека». Перед ответом система ищет в базе документов те, что относятся к вопросу, и подсовывает их LLM как контекст. Модель отвечает не «из памяти весов», а по конкретным фрагментам с возможностью указать источник. Это убирает галлюцинации, не требует переобучения и позволяет работать с свежими данными.
Что это такое
Лето 2023-го. Стартап делает чат-бот для службы поддержки. Они дообучают GPT-3.5 на своих внутренних документах через fine-tuning. Через месяц модель готова — и тут же выясняется, что половина продукта изменилась. Дообучать заново? Это дорого, долго, и каждое изменение в продукте требует нового обучения.
Тогда команда смотрит в сторону другого подхода. Вместо того чтобы «запихнуть знания внутрь модели», они выкладывают документы в обычную базу. Каждый раз перед ответом — ищут релевантные куски, подают их LLM как контекст. Модель остаётся той же, документы — внешние, обновление — мгновенное.
Это и есть RAG. Retrieval (поиск) + Augmented (расширение) + Generation (генерация). Идея простая, но именно она сделала LLM пригодными для бизнеса: компания не отдаёт данные в обучение OpenAI, не платит за fine-tuning, может обновлять базу как обычные документы — а модель отвечает поверх них.
К 2026-му RAG — стандарт для AI-чат-ботов, поиска по документации, юридических ассистентов, медицинских помощников. Платный ChatGPT с подключением Google Drive — это RAG. Cursor IDE с пониманием вашего кода — это RAG. Perplexity, которая отвечает с источниками — RAG.
Если хочется увидеть весь pipeline целиком — от нарезки документов до reranking и ответа с источниками — смотрите большой разбор «RAG и AI-поиск в 2026». Эта статья ниже объясняет сам термин, а разбор показывает, как из него собирают рабочую поисковую систему.
Как это работает
Базовый RAG-пайплайн — 5 шагов.
- Indexing (заранее). Все документы базы превращаются в embedding'и. Длинные документы разбиваются на куски (chunks) по 200–800 токенов. Каждый чанк хранится в векторной БД вместе с исходным текстом и метаданными.
- Embedding запроса. Когда пользователь задаёт вопрос, его текст превращается в embedding той же моделью, которой индексировали базу.
- Vector search. Векторная БД находит top-K самых близких embedding'ов (обычно 3–10). Это потенциально релевантные куски.
- Augmented prompt. Найденные тексты подставляются в промпт LLM перед самим вопросом:
Используя контекст ниже, ответь на вопрос. Если ответа нет в контексте — скажи «не знаю». Контекст: [фрагмент 1] [фрагмент 2] ... Вопрос: ... - Generation. LLM генерирует ответ, опираясь на поданные документы. Часто просят указать источник для каждого факта.
Что делает RAG мощным:
- Свежие данные. Обновили документы → следующий запрос уже использует новое.
- Цитируемость. Модель может указать, из какого документа взяла факт. Это критично в юридических, медицинских, корпоративных задачах.
- Контроль источников. В обучение модели вы не лезете, но контролируете, какие документы доступны.
- Снижение галлюцинаций. Когда модель отвечает на основе конкретного текста, она реже выдумывает.
Простой технологический стек:
| Компонент | Open-source | Облако |
|---|---|---|
| Embedding-модель | bge-small, all-MiniLM | OpenAI text-embedding-3-small, Cohere |
| Векторная БД | Chroma, Qdrant, Weaviate | Pinecone, Weaviate Cloud, Vespa |
| LLM | Llama 3, Mistral, Qwen | GPT-4o, Claude, Gemini |
| Оркестрация | LangChain, LlamaIndex | те же |
Пример на практике
Видеомонтажёр строит AI-помощника по своей базе знаний — 200 markdown-файлов с приёмами, чек-листами, настройками плагинов. Хочет задавать вопросы и получать ответы с цитатами из своих заметок.
Стек:
- Embedding:
bge-small-en-v1.5(130 МБ, CPU). - Vector DB: Chroma (in-memory, потом на диск).
- LLM: Llama 3.1 8B через Ollama (локально, 4.6 ГБ VRAM).
Шаг 1 — Indexing. Скрипт читает 200 .md файлов, разбивает каждый на куски по 400 токенов с overlap 50, считает embedding для каждого куска, складывает в Chroma. Один раз — 8 минут на ноутбуке.
Шаг 2 — запрос. Вопрос: «как я настраивал звук для интервью под открытым небом».
Шаг 3 — vector search. Chroma находит 5 ближайших векторов. Это куски из заметок: «работа с RODE NTG», «де-эссинг в DaVinci», «выезд на пленер», «контроль ветра микрофоном».
Шаг 4 — augmented prompt:
Ответь на основе контекста ниже. Цитируй каждый факт указанием [номер фрагмента].
Контекст:
[1] Использую RODE NTG-3 с ветрозащитой Rycote Softie...
[2] В DaVinci для голоса: компрессор 4:1, де-эссер 6–8 kHz...
[3] На улице — ветрозащита Mute Box или Dead Cat...
Вопрос: как я настраивал звук для интервью под открытым небом?
Шаг 5 — ответ Llama 3:
«Для интервью под открытым небом ты использовал RODE NTG-3 с ветрозащитой Rycote Softie [1] и дополнительной Mute Box на сильный ветер [3]. В постпродакшене в DaVinci: компрессор 4:1, де-эссер на 6–8 kHz [2].»
Ответ конкретный, цитирует фрагменты, говорит только о том, что есть в заметках. Если бы Llama отвечала «из памяти весов», получили бы общее «используйте качественный микрофон» без привязки к вашим реалиям.
В ComfyUI весь этот пайплайн собирается визуально: ноды Document Loader → Text Splitter → Embedding → Vector Store → LLM. Тот же подход — для image-RAG (искать похожие картинки) или мультимодального (текст ↔ картинка).
С чем часто путают
- RAG и Fine-tuning — fine-tuning меняет параметры модели. RAG не меняет ничего — добавляет внешний контекст. Дешевле, быстрее, обновляемо.
- RAG и semantic search — semantic search это половина RAG (этап retrieval). RAG = semantic search + LLM, который формулирует ответ.
- RAG и context window — context window это вместимость одного запроса. RAG помещает в этот контекст только релевантные куски, а не всю базу.
- RAG и веб-поиск с LLM — Perplexity, ChatGPT Browse, Gemini с Google — это RAG, где источник — интернет, а не локальная база.
- RAG и memory в чат-ботах — memory обычно тоже использует RAG: хранит факты о пользователе как документы, перед каждым запросом достаёт релевантные.
Частые ошибки и заблуждения
- «RAG — это сложно». Базовая реализация — 100 строк Python с LangChain или LlamaIndex. Сложности возникают на масштабе и в продакшене, не на старте.
- «RAG полностью убирает галлюцинации». Снижает на 60–90%, но не убирает. Модель может неправильно интерпретировать поданный документ или «вспомнить» что-то поверх него.
- «Чем больше документов передать модели, тем лучше ответ». Не работает. Слишком много контекста → «lost in the middle», деградация качества. Оптимум — 3–7 самых релевантных кусков.
- «RAG работает с любыми документами». PDF, презентации, скриншоты требуют сначала извлечения текста (OCR, парсинг таблиц). Качество извлечения — отдельная проблема.
- «Embedding-модель не важна, лишь бы был LLM». Качество retrieval определяет качество ответа. Слабый embedding → нерелевантные куски в контексте → плохой ответ даже у GPT-4.
Связанные термины
- Embedding — фундамент RAG: превращает текст в вектор для поиска.
- Vector Database — хранилище embedding'ов и поиск по близости.
- Chunking — разбиение длинных документов на части для индексации.
- Reranking — пере-сортировка найденных кусков более точной моделью.
- Hybrid search — комбинация keyword-поиска и векторного.
- LLM — модель, генерирующая финальный ответ из retrieved-контекста.
- Prompt Engineering — критично для качества augmented prompt'а.
- Hallucination — основная проблема, которую RAG смягчает.
Частые вопросы
Сколько документов можно держать в RAG? В Chroma локально — до миллиона chunks комфортно. Qdrant, Pinecone, Weaviate в облаке — миллиарды. Латентность поиска даже на больших объёмах остаётся в пределах секунды.
RAG требует больше токенов на запрос? Да. К промпту добавляются 1–5 тысяч токенов retrieved-контекста. Это удорожает каждый запрос, но обычно выгоднее fine-tuning'а.
Как обновлять документы в RAG? Изменённый документ переразбивается на куски, embedding пересчитывается, старые вектора удаляются из БД и заменяются новыми. Все vector DB поддерживают это нативно.
Чем хорош Reranking поверх retrieval'а? Vector search быстрый, но не самый точный. Reranking берёт top-50 от vector search и пересортирует через более точную (и медленную) cross-encoder модель. Получаем top-5 высокого качества. Стандарт в production.
Можно ли использовать RAG только для собственных документов? Конечно. Это и есть основной use-case: компанийная база, личная коллекция заметок, корпус кода, документация продукта. Главное — embedding не «утекает» в OpenAI (если использовать локальную модель).
Главное
RAG — это самая работающая на сегодня связка между LLM и реальными данными. Не fine-tuning, не дополнительное обучение, а простой пайплайн: ищи → подкладывай → отвечай. С этим стеком даже скромная Llama 3 8B на ноутбуке отвечает на вопросы по вашим документам точнее, чем GPT-4 без RAG. Это не означает, что обучение моделей умирает — оно решает другие задачи. Но для большинства «AI-помощников» в 2026-м фундамент — это RAG, а LLM — это последний шаг.