Что такое RAG (Retrieval-Augmented Generation)?
RAG (Retrieval-Augmented Generation) — это подход, при котором перед ответом система сначала находит релевантные фрагменты в вашей базе знаний и передаёт их языковой модели вместе с вопросом. Модель отвечает не «по памяти», а по конкретным документам.
Схема состоит из двух этапов. Сначала документы режут на фрагменты, превращают в эмбеддинги и складывают в векторную базу. Затем на каждый вопрос пользователя система переводит запрос в вектор, находит несколько самых близких фрагментов и подставляет их в промпт: «ответь на вопрос, опираясь только на этот контекст».
RAG решает три реальные проблемы: модель не знает внутренних документов компании, её знания устаревают, и она склонна выдумывать факты. Обновить базу знаний в RAG-системе — это просто загрузить новый документ, без переобучения модели.
Где применяется
RAG — стандартный способ сделать помощника по собственным документам: база знаний поддержки, внутренние регламенты, техническая документация, юридические материалы, каталог товаров. Именно этот подход стоит за большинством корпоративных AI-ассистентов.
Сборка состоит из нескольких этапов: документы режут на фрагменты, превращают в эмбеддинги, складывают в векторную базу, а при запросе находят несколько ближайших и передают модели вместе с вопросом. Качество чаще всего упирается не в модель, а в нарезку и поиск — именно там теряется нужный фрагмент.
Пример
Сотрудник спрашивает про условия возврата оборудования. Система находит три фрагмента из внутреннего регламента, передаёт их модели и получает ответ со ссылкой на конкретный пункт — вместо правдоподобного пересказа общих правил из интернета.
question = 'Каковы условия возврата оборудования?'
chunks = vector_db.search(embed(question), limit=5)
context = '\n\n'.join(c.text for c in chunks)
answer = llm.complete(
system='Отвечай только по приведённым фрагментам. '
'Если ответа в них нет — так и скажи.',
prompt=f'Документы:\n{context}\n\nВопрос: {question}',
) RAG или fine-tuning — что выбрать
RAG подмешивает актуальные факты в момент запроса — идеален для баз знаний, регламентов и документации, которые меняются. Fine-tuning закрепляет стиль и формат ответа в весах модели — нужен, когда важно устойчивое поведение, а не свежие данные. Если сомневаетесь, начинайте с RAG: он дешевле, быстрее и его результат можно проверить по ссылкам на источники.
Частые вопросы
Подходит ли RAG для небольшой базы документов?
Да, и порог входа здесь низкий: для нескольких сотен страниц хватает расширения к обычной базе данных и одной модели эмбеддингов. Выигрыш заметен уже на этом объёме — сотрудники перестают искать нужный пункт регламента вручную по файлам и переписке.
Избавляет ли RAG от галлюцинаций?
Снижает их заметно, но не устраняет полностью. Модель по-прежнему может домыслить деталь или неверно понять фрагмент. Помогают требование ссылаться на источник, разрешение ответить «в документах этого нет» и выборочная проверка ответов человеком.
Как правильно нарезать документы на фрагменты?
По смысловым границам — разделам и пунктам, а не по фиксированному числу символов. Полезно небольшое перекрытие между соседними фрагментами, чтобы мысль не обрывалась, и сохранение заголовка раздела внутри каждого фрагмента для контекста.
Сколько фрагментов передавать модели?
Обычно от трёх до десяти. Слишком мало — нужный кусок может не попасть в выборку; слишком много — важное теряется среди лишнего, а запрос дорожает. Оптимум подбирают экспериментально на наборе реальных вопросов с известными ответами.