RAG

retrieval-augmented generation — поиск документов + генерация ответа

Раздел
Языковые модели
Сокращ.
Retrieval-Augmented Generation
Обновлено
03.07.26

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 шагов.

  1. Indexing (заранее). Все документы базы превращаются в embedding'и. Длинные документы разбиваются на куски (chunks) по 200–800 токенов. Каждый чанк хранится в векторной БД вместе с исходным текстом и метаданными.
  2. Embedding запроса. Когда пользователь задаёт вопрос, его текст превращается в embedding той же моделью, которой индексировали базу.
  3. Vector search. Векторная БД находит top-K самых близких embedding'ов (обычно 3–10). Это потенциально релевантные куски.
  4. Augmented prompt. Найденные тексты подставляются в промпт LLM перед самим вопросом:
    Используя контекст ниже, ответь на вопрос.
    Если ответа нет в контексте — скажи «не знаю».
    
    Контекст:
    [фрагмент 1]
    [фрагмент 2]
    ...
    
    Вопрос: ...
    
  5. 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 — это последний шаг.