Все статьи
обновлено 7 мин

RAG простыми словами: как корпоративный AI отвечает по вашим документам

Объяснение Retrieval-Augmented Generation на пальцах. Как AI находит ответ в ваших файлах, почему не галлюцинирует, и где грабли при внедрении.

ragself-hosted-aiкорпоративный-aivector-searchagmind

RAG (Retrieval-Augmented Generation) — это способ заставить языковую модель отвечать по конкретным документам, а не по своему общему знанию. Алгоритм простой: сначала система ищет в ваших файлах самые подходящие куски, потом отдаёт их модели вместе с вопросом, и модель генерирует ответ строго на основе найденного.

Главное преимущество — модель ссылается на источник в каждой фразе. Не «примерно так думаю», а «согласно странице 17 договора №432». Это убирает галлюцинации и делает корпоративный AI пригодным для юристов, поддержки и аналитики.

Зачем нужен RAG

Языковые модели тренированы на огромном объёме публичных данных, но они ничего не знают о вашей компании. Никаких ваших договоров, регламентов, внутренних инструкций. Если просто спросить ChatGPT «какие у нас правила приёма заявок от Подрядчик ООО» — он либо признается что не знает, либо начнёт галлюцинировать.

Альтернатива — fine-tuning (дообучение модели). Но это дорого, медленно, и требует переобучения каждый раз когда меняется регламент. RAG решает ту же задачу без модификации модели — просто подсовывает релевантные документы в момент запроса.

Как это работает на практике

Шаг 1. Подготовка базы (один раз)

Все ваши документы (PDF, DOCX, тексты, таблицы) проходят через парсер:

  1. Извлечение текста — конвертация в чистый markdown с сохранением структуры (заголовки, таблицы, списки)
  2. Чанкирование — нарезка на куски 500-1500 токенов с перекрытием. Хорошие чанкеры режут по логическим границам (параграфы, секции), плохие — по словам
  3. Эмбеддинги — каждый чанк прогоняется через специальную модель (типа bge-m3 для русского) и превращается в вектор из 1024 чисел. Этот вектор кодирует «смысл» чанка

Полученные векторы складываются в векторную базу (Weaviate, Qdrant, Milvus или похожая). База позволяет быстро искать «похожие по смыслу» чанки — не по словам, а по семантике.

Шаг 2. Запрос пользователя

Пользователь задаёт вопрос: «Какие штрафы за просрочку поставки в договоре с Поставщиком ООО?»

  1. Эмбеддинг вопроса — тем же эмбеддером, что и документы
  2. Поиск в векторной базе — топ-20 самых похожих чанков
  3. Реранкер — отдельная модель (bge-reranker) пересортирует, чтобы наверху были самые точные совпадения
  4. Сборка контекста — топ-5 чанков отправляются в LLM вместе с вопросом

Шаг 3. Генерация ответа

LLM получает промпт примерно такого вида:

Ты юрист. Отвечай только на основе предоставленных документов.
Если ответа в документах нет — говори "не знаю".

Документы:
[Чанк 1: текст из договора с Поставщиком ООО, страница 4, пункт 7.3]
[Чанк 2: текст из приложения к договору, страница 12]
...

Вопрос: Какие штрафы за просрочку поставки?

Модель генерирует ответ с указанием источника: «Согласно пункту 7.3 договора (стр. 4), штраф составляет 0.1% от суммы поставки за каждый день просрочки, но не более 10% от общей суммы.»

Почему AI не галлюцинирует в RAG

Если правильно сформулировать промпт («отвечай только на основе документов»), модель не имеет права добавлять факты от себя. Она просто пересказывает то, что нашлось в чанках.

Если в найденных чанках ответа нет — система говорит «в предоставленных документах ответ не найден». Никаких выдумок, никаких «примерно так».

На практике галлюцинации в RAG случаются когда:

  • Чанки нарезаны плохо и важная информация разорвана пополам
  • Эмбеддер слабо ловит русский язык — релевантные чанки не находятся
  • LLM не следует инструкции и всё равно добавляет от себя

Все три проблемы решаются техническим выбором компонентов и правильной настройкой.

Технические компоненты

В рабочей системе нужны:

  1. Парсер документов — обычно Docling, Unstructured или GROBID. Для русских PDF с OCR — RAGFlow или MinerU. Качество парсера определяет всё дальше — если в текст попадёт «г.0рловка» вместо «г. Горловка», AI это запомнит и будет повторять
  2. Эмбеддер для русского — bge-m3 (deepvk/USER-bge-m3 для русского после fine-tuning), GigaChatEmbeddings, или multilingual-e5-large
  3. Векторная база — Weaviate (хорошо для production), Qdrant (быстрая), Chroma (проще для прототипов), pgvector (встроено в PostgreSQL)
  4. Реранкер — bge-reranker-v2-m3 для русского. Прирост качества +10-20% по сравнению с поиском только эмбеддингами
  5. 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 рабочих дня делаем демо-стенд с поиском по ним. Без обязательств, без предоплаты.