RAG простыми словами: как корпоративный AI отвечает по вашим документам
Объяснение Retrieval-Augmented Generation на пальцах. Как AI находит ответ в ваших файлах, почему не галлюцинирует, и где грабли при внедрении.
RAG (Retrieval-Augmented Generation) — это способ заставить языковую модель отвечать по конкретным документам, а не по своему общему знанию. Алгоритм простой: сначала система ищет в ваших файлах самые подходящие куски, потом отдаёт их модели вместе с вопросом, и модель генерирует ответ строго на основе найденного.
Главное преимущество — модель ссылается на источник в каждой фразе. Не «примерно так думаю», а «согласно странице 17 договора №432». Это убирает галлюцинации и делает корпоративный AI пригодным для юристов, поддержки и аналитики.
Зачем нужен RAG
Языковые модели тренированы на огромном объёме публичных данных, но они ничего не знают о вашей компании. Никаких ваших договоров, регламентов, внутренних инструкций. Если просто спросить ChatGPT «какие у нас правила приёма заявок от Подрядчик ООО» — он либо признается что не знает, либо начнёт галлюцинировать.
Альтернатива — fine-tuning (дообучение модели). Но это дорого, медленно, и требует переобучения каждый раз когда меняется регламент. RAG решает ту же задачу без модификации модели — просто подсовывает релевантные документы в момент запроса.
Как это работает на практике
Шаг 1. Подготовка базы (один раз)
Все ваши документы (PDF, DOCX, тексты, таблицы) проходят через парсер:
- Извлечение текста — конвертация в чистый markdown с сохранением структуры (заголовки, таблицы, списки)
- Чанкирование — нарезка на куски 500-1500 токенов с перекрытием. Хорошие чанкеры режут по логическим границам (параграфы, секции), плохие — по словам
- Эмбеддинги — каждый чанк прогоняется через специальную модель (типа bge-m3 для русского) и превращается в вектор из 1024 чисел. Этот вектор кодирует «смысл» чанка
Полученные векторы складываются в векторную базу (Weaviate, Qdrant, Milvus или похожая). База позволяет быстро искать «похожие по смыслу» чанки — не по словам, а по семантике.
Шаг 2. Запрос пользователя
Пользователь задаёт вопрос: «Какие штрафы за просрочку поставки в договоре с Поставщиком ООО?»
- Эмбеддинг вопроса — тем же эмбеддером, что и документы
- Поиск в векторной базе — топ-20 самых похожих чанков
- Реранкер — отдельная модель (bge-reranker) пересортирует, чтобы наверху были самые точные совпадения
- Сборка контекста — топ-5 чанков отправляются в LLM вместе с вопросом
Шаг 3. Генерация ответа
LLM получает промпт примерно такого вида:
Ты юрист. Отвечай только на основе предоставленных документов.
Если ответа в документах нет — говори "не знаю".
Документы:
[Чанк 1: текст из договора с Поставщиком ООО, страница 4, пункт 7.3]
[Чанк 2: текст из приложения к договору, страница 12]
...
Вопрос: Какие штрафы за просрочку поставки?
Модель генерирует ответ с указанием источника: «Согласно пункту 7.3 договора (стр. 4), штраф составляет 0.1% от суммы поставки за каждый день просрочки, но не более 10% от общей суммы.»
Почему AI не галлюцинирует в RAG
Если правильно сформулировать промпт («отвечай только на основе документов»), модель не имеет права добавлять факты от себя. Она просто пересказывает то, что нашлось в чанках.
Если в найденных чанках ответа нет — система говорит «в предоставленных документах ответ не найден». Никаких выдумок, никаких «примерно так».
На практике галлюцинации в RAG случаются когда:
- Чанки нарезаны плохо и важная информация разорвана пополам
- Эмбеддер слабо ловит русский язык — релевантные чанки не находятся
- LLM не следует инструкции и всё равно добавляет от себя
Все три проблемы решаются техническим выбором компонентов и правильной настройкой.
Технические компоненты
В рабочей системе нужны:
- Парсер документов — обычно Docling, Unstructured или GROBID. Для русских PDF с OCR — RAGFlow или MinerU. Качество парсера определяет всё дальше — если в текст попадёт «г.0рловка» вместо «г. Горловка», AI это запомнит и будет повторять
- Эмбеддер для русского — bge-m3 (deepvk/USER-bge-m3 для русского после fine-tuning), GigaChatEmbeddings, или multilingual-e5-large
- Векторная база — Weaviate (хорошо для production), Qdrant (быстрая), Chroma (проще для прототипов), pgvector (встроено в PostgreSQL)
- Реранкер — bge-reranker-v2-m3 для русского. Прирост качества +10-20% по сравнению с поиском только эмбеддингами
- LLM — любая instruction-tuned модель, которая понимает по-русски. Llama 3.3, Qwen 3, GigaChat, gemma-4
Грабли при внедрении
Чанкинг таблиц. Стандартные чанкеры режут таблицы пополам, теряя контекст столбцов. Решение — специальные парсеры (типа RAGFlow) которые держат таблицы атомарно.
Длинные документы с подразделами. Регламент на 200 страниц лучше чанкировать иерархически — сначала по главам, потом по параграфам. Без этого ответ тонет в мусоре.
Многоязычные документы. Если в одной базе русские договоры и английские инструкции — нужен multilingual эмбеддер, не русско-only. Иначе теряется кросс-языковой поиск.
Картинки и схемы. Чистый RAG не видит картинки. Нужен vision-enabled пайплайн — vision-модель (gemma-4, Qwen-VL) описывает каждую картинку текстом, потом этот текст идёт в эмбеддер.
Обновление базы. Документы меняются. Хорошая система детектит изменения и переиндексирует только изменившиеся чанки, не всю базу.
Когда RAG не подходит
RAG — отличное решение для:
- Поиск ответов в большой документной базе
- AI-ассистент юриста / поддержки / HR
- Семантический поиск по корпоративным знаниям
RAG не справляется с:
- Запросами, требующими арифметики или агрегации («сколько договоров заключено в Q3?») — для этого нужны структурированные запросы или специальные tool-using агенты
- Запросами по живым данным («какой курс доллара сейчас?») — нужна интеграция с API
- Креативными задачами («напиши рекламный текст») — там нужна ровная генерация без привязки к источникам
Итог
RAG — это рабочий способ заставить корпоративный AI отвечать по вашим документам без галлюцинаций. Технически это пара компонентов (парсер + эмбеддер + векторная база + реранкер + LLM), которые можно собрать на open-source за пару недель.
В AGmind связка работает из коробки: Docling/RAGFlow парсит документы, bge-m3 эмбеддит, Weaviate хранит, bge-reranker сортирует, локальная Llama/Qwen генерирует. Всё в вашем контуре, без передачи данных в облако.
Технические детали и конфигурации — в статье на Habr или в нашем блог-посте про DGX Spark setup.
Если хотите понять как RAG встраивается в полный стек корпоративного ассистента — читайте обзорный гид по корпоративному ИИ-помощнику.
Хотите попробовать RAG на ваших документах — присылайте 50-100 файлов, за 2 рабочих дня делаем демо-стенд с поиском по ним. Без обязательств, без предоплаты.