RAG
RAG (Retrieval-Augmented Generation) — схема, в которой нейросеть отвечает по найденным фрагментам вашей базы знаний, а не только по памяти. Подход описан в статье Патрика Льюиса и соавторов 2020 года.
Содержание
- 01RAG простыми словами: открытая книга вместо экзамена по памяти
- 02Путь вопроса через RAG: от нарезки документов до ответа
- 03Где RAG приносит деньги: поддержка, продажи, внутренний поиск
- 04Разбор на цифрах: бот поддержки по базе из 400 страниц
- 05RAG, дообучение и длинный контекст: что чем заменить
- 06Где RAG ломается: пять причин неверных ответов
- 07Частые вопросы
RAG простыми словами: открытая книга вместо экзамена по памяти
RAG (Retrieval-Augmented Generation, «генерация, дополненная поиском») — схема, в которой языковая модель отвечает не только по собственной памяти, а по найденным фрагментам ваших документов. Сначала система ищет в базе знаний куски текста, близкие по смыслу к вопросу, затем вставляет их в запрос к модели, и модель формулирует ответ по этим кускам.
Обычная модель сдаёт экзамен по памяти, модель с RAG — с открытой книгой. Память у первой закончилась в день окончания обучения: вашего прайс-листа и вчерашних правок в условиях доставки в ней нет, а на пробелах она склонна придумывать правдоподобное. С книгой под рукой данные свежие, источник известен, вымысла меньше, хотя полностью он не исчезает.
Термин закрепила статья «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks» Патрика Льюиса и соавторов: первую версию подали в мае 2020 года, а работу приняли на конференцию NeurIPS 2020. Авторы соединили предобученную модель с плотным векторным индексом Википедии, откуда отдельный модуль достаёт нужные фрагменты.
Путь вопроса через RAG: от нарезки документов до ответа
Подготовка базы делается заранее, обработка вопроса — каждый раз заново.
| Этап | Что происходит | Что можно сломать |
|---|---|---|
| Нарезка | Документы делят на фрагменты по смыслу: раздел, абзац, пара «вопрос — ответ» | Крупные куски размывают смысл, мелкие теряют контекст |
| Векторизация | Модель эмбеддингов превращает фрагмент в набор чисел — вектор — и кладёт в индекс | Смена модели эмбеддингов требует пересчитать всю базу |
| Поиск | Вопрос тоже становится вектором, система берёт ближайшие по смыслу фрагменты | Находится похожее, а не нужное: например, прошлогодний тариф |
| Ответ | Модель получает вопрос, фрагменты и инструкцию «отвечай только по ним» | Лишние фрагменты не помещаются в окно контекста и отбрасываются |
Главная деталь — векторный поиск. Эмбеддинг переводит смысл в координаты: фразы «как вернуть деньги за заказ» и «условия возврата товара» оказываются рядом, хотя общих слов у них почти нет. Поиск по ключевым словам такую пару пропустит, зато точнее находит артикулы и номера договоров, поэтому в рабочих системах комбинируют оба подхода и добавляют переранжирование — вторую модель, которая пересортировывает найденное.
Векторы хранят в специализированных базах вроде Qdrant или Milvus либо в обычной СУБД с расширением: для PostgreSQL это pgvector. Облачные платформы дают готовые части конвейера: в Yandex AI Studio есть Files API и Vector Store API, у GigaChat — модели эмбеддингов Embeddings, Embeddings-2 и EmbeddingsGigaR.
Где RAG приносит деньги: поддержка, продажи, внутренний поиск
RAG нужен там, где ответ лежит в ваших документах, а не в общем знании мира.
- Поддержка клиентов. Чат-бот с RAG отвечает по инструкциям, условиям доставки и возврата, а при сомнении передаёт диалог оператору.
- Продажи. Ассистент подбирает товар по описанию задачи, а менеджер получает подсказку по условиям договора.
- Внутренний поиск. Сотрудник спрашивает про отпуск или регламент и получает ответ вместо поиска по сетевым папкам.
- Договоры и закупки. Система находит нужный пункт и показывает цитату со ссылкой на документ.
Тот же механизм служит «памятью» для AI-ассистентов и агентов, о которых мы писали в обзоре ИИ-агентов для бизнеса.
Разбор на цифрах: бот поддержки по базе из 400 страниц
Допустим, у магазина 400 страниц инструкций и ответов, по 1 500 токенов на страницу — всего 600 000 токенов. Нарезка по 400 токенов даёт около 1 500 фрагментов.
- Индексация. Базу векторизуют один раз. По прайсу Yandex AI Studio эмбеддинги стоят около 0,01 ₽ за 1 000 токенов, значит, вся база обойдётся примерно в 6 ₽.
- Один вопрос. Пять найденных фрагментов — 2 000 токенов, вопрос с инструкцией — 200, ответ — ещё 300. Итого 2 500 токенов.
- Цена ответа. Допустим, модель стоит 1 ₽ за 1 000 токенов: ответ обойдётся в 2,5 ₽, а 3 000 обращений в месяц — в 7 500 ₽.
- Без RAG. Если отправлять всю базу в каждом запросе, вопрос потянет на 600 000 токенов, то есть 600 ₽, а месяц выйдет в 1 800 000 ₽. Разница — в 240 раз, и база может не влезть в окно модели.
Основные расходы проекта — не токены, а подготовка: очистка документов, настройка поиска, проверка ответов. Если RAG входит в крупный продукт — личный кабинет или SaaS-платформу, — его закладывают в архитектуру на этапе комплексной разработки.
RAG, дообучение и длинный контекст: что чем заменить
| Подход | Что делает | Слабое место |
|---|---|---|
| RAG | Подставляет нужные фрагменты в момент вопроса | Качество ответа упирается в качество поиска |
| Дообучение | Меняет веса модели на ваших примерах: стиль, формат, лексика | Знания «запекаются» в модель, обновление — новое обучение, источников нет |
| Длинный контекст | Кладёт документы целиком в запрос | Дорого на каждый вопрос и ограничено размером окна |
Подходы не исключают друг друга. Типичная связка — RAG для знаний и аккуратный промпт для тона и формата: промпт задаёт поведение, RAG подаёт материал. Дообучение добавляют, когда ответы нужно держать в жёстком корпоративном стиле.
Где RAG ломается: пять причин неверных ответов
- Мусор в базе. Рядом лежат три версии прайса и сканы без распознавания, и система честно отвечает по прошлогоднему тарифу.
- Неудачная нарезка. Правило попало в один фрагмент, исключение — в другой, поиск достал только первый.
- Нет права сказать «не знаю». При пустой выдаче модель отвечает из общей памяти, и вы возвращаетесь к исходной проблеме.
- Нет разграничения доступа. Сотрудник получает фрагмент закрытого документа. Права проверяют на этапе поиска, а не после генерации.
- Персональные данные в базе. Отправка писем и анкет во внешний сервис — передача данных третьему лицу, нужны основание и договор; детали — в разделе о соответствии 152-ФЗ.
Страховка одна: набор реальных вопросов с эталонными ответами, по которому бота прогоняют перед запуском и после каждого изменения базы или модели.
Частые вопросы
RAG в нейросетях — что это такое и зачем нужен?
Это способ подключить к языковой модели вашу базу знаний без переобучения. Система находит в документах нужные фрагменты и передаёт их модели вместе с вопросом. Бот отвечает по актуальным данным компании, может сослаться на источник и реже выдумывает факты, которых нет в базе.
Чем RAG отличается от дообучения модели?
Дообучение меняет саму модель: она усваивает стиль и терминологию, но знания внутри трудно обновлять и нельзя проверить по источнику. RAG модель не трогает, а подаёт ей материал в момент ответа. Для быстро устаревающих данных — цен, регламентов, наличия — берут RAG, для стиля иногда добавляют дообучение.
Нужна ли для RAG векторная база данных?
Для прототипа хватает обычной СУБД с векторным расширением, например pgvector в PostgreSQL, или готового хранилища облачной платформы. Специализированные базы вроде Qdrant или Milvus берут, когда фрагментов много и нужна высокая скорость поиска. Для сотен страниц отдельная инфраструктура обычно избыточна.
Убирает ли RAG галлюцинации полностью?
Нет, он снижает риск, но не обнуляет его. Если нужного фрагмента в базе нет или поиск достал не тот, модель ответит неточно. Помогают инструкция «отвечай только по документам», ссылки на источники, ответ «не знаю» при пустой выдаче и регулярная проверка на наборе контрольных вопросов.
Можно ли построить RAG на российских моделях?
Да. GigaChat и YandexGPT доступны по API, и у каждого есть модели эмбеддингов для векторного поиска. Индекс хранят в облачном хранилище платформы или в собственной базе на вашем сервере. Какую модель взять, решает тест на ваших реальных вопросах: на разных базах они дают разный результат.