Открыть сервис

RAG-система

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

Принцип работы

RAG-система функционирует в несколько этапов, которые условно можно разделить на две фазы: индексация и инференс (выполнение запроса).

Индексация (подготовка базы знаний)

На этом этапе система обрабатывает исходные документы (тексты, PDF-файлы, HTML-страницы, базы данных) и преобразует их в формат, пригодный для быстрого поиска:

  1. Загрузка и очистка: Документы загружаются, извлекается чистый текст, удаляются лишние элементы (разметка, метаданные, шум).
  2. Разбиение на чанки: Текст разбивается на небольшие фрагменты (чанки) фиксированного или переменного размера (обычно от 200 до 1000 токенов). Размер чанка — критический параметр, влияющий на качество поиска: слишком короткие чанки теряют контекст, слишком длинные — снижают точность.
  3. Векторизация (эмбеддинг): Каждый чанк преобразуется в числовое представление — вектор (эмбеддинг) с помощью специальной нейросетевой модели-эмбеддера. Вектор фиксированной размерности (например, 768, 1024) кодирует семантический смысл текста.
  4. Индексация: Полученные векторы сохраняются в векторной базе данных (Vector Database, например, Pinecone, Weaviate, Qdrant, FAISS). В базе строится индекс, позволяющий быстро находить векторы, наиболее близкие к вектору запроса (по метрикам косинусного расстояния или скалярного произведения).

Инференс (обработка запроса пользователя)

Когда пользователь задаёт вопрос, система выполняет следующий цикл:

  1. Векторизация запроса: Вопрос пользователя преобразуется в вектор той же моделью-эмбеддером, которая использовалась при индексации.
  2. Поиск (Retrieval): Вектор запроса сравнивается со всеми векторами в базе данных. Система возвращает топ-K наиболее релевантных чанков (обычно K=3–10), которые семантически близки к запросу.
  3. Аугментация (Augmentation): Найденные чанки (контекст) объединяются с исходным запросом пользователя и специальным системным промптом (инструкцией) в единый текст — промпт для LLM. Промпт может выглядеть так: «Ответь на вопрос пользователя, используя только предоставленный контекст. Если контекст не содержит ответа, скажи, что не знаешь. Контекст: [текст чанков]. Вопрос: [вопрос пользователя]».
  4. Генерация (Generation): Сформированный промпт подаётся на вход большой языковой модели (например, GPT-4, Llama 3, YandexGPT). Модель генерирует ответ, опираясь на предоставленный контекст, а не на свои внутренние знания, которые могут быть устаревшими или неточными.
  5. Вывод: Сгенерированный ответ возвращается пользователю. Часто система также предоставляет ссылки на исходные документы (цитирование), что повышает доверие к ответу.

Классификация RAG-систем

Существует несколько подходов к реализации RAG, которые различаются по сложности и области применения:

  • Наивный RAG (Naive RAG): Базовая реализация, описанная выше. Простой конвейер: индексация → поиск → генерация. Характерные недостатки: низкая точность поиска при сложных запросах, потеря контекста при неоптимальном размере чанков, дублирование информации.
  • Продвинутый RAG (Advanced RAG): Включает дополнительные этапы предварительной и постобработки:
  • Предварительная обработка запроса: Переформулировка запроса, его разбиение на подвопросы, гипотетические документы (HyDE — Hypothetical Document Embeddings), когда сначала генерируется гипотетический ответ, а затем по нему ищутся релевантные чанки.
  • Поиск с переранжированием (Re-ranking): После первичного поиска по векторной базе применяется вторая, более точная модель (ранжировщик), которая переупорядочивает найденные чанки по релевантности.
  • Постобработка: Фильтрация избыточных или противоречивых чанков, сжатие контекста.
  • Модульный RAG (Modular RAG): Наиболее гибкая архитектура, где каждый этап (поиск, генерация, память, рассуждение) реализован как отдельный модуль. Модули могут комбинироваться, заменяться и настраиваться. Включает агентные подходы, когда LLM сама решает, когда и как выполнять поиск (например, используя инструменты для доступа к API или базам данных).
  • Графовый RAG (Graph RAG): Использует графы знаний (Knowledge Graphs) вместо плоских текстовых чанков. Информация хранится в виде узлов (сущности) и рёбер (связи). Поиск осуществляется по графу, что позволяет отвечать на многошаговые вопросы, требующие понимания сложных взаимосвязей (например, «Какие лекарства назначали пациентам с диагнозом X в 2023 году?»).

Преимущества и недостатки

Преимущества

  • Актуальность информации: Ответы основаны на свежих данных из внешних источников, что решает проблему устаревших знаний LLM (отсечка знаний).
  • Снижение галлюцинаций: Модель вынуждена опираться на предоставленный контекст, что значительно уменьшает вероятность выдумывания фактов.
  • Прозрачность и доверие: Возможность цитирования источников позволяет пользователю проверить информацию и понять, на чём основан ответ.
  • Контроль над данными: Организация может использовать RAG для работы с собственными закрытыми данными (документация, базы знаний, переписка), не передавая их на обучение LLM и не раскрывая конфиденциальную информацию.
  • Экономическая эффективность: Не требует дорогостоящего дообучения (fine-tuning) LLM для каждой новой предметной области. Достаточно обновить базу знаний.

Недостатки

  • Зависимость от качества поиска: Если поиск не находит релевантные чанки, ответ будет неверным, даже если модель хорошая.
  • Проблема «окна контекста»: LLM имеет ограниченный размер контекста (например, 128K или 1M токенов). Если в базу знаний попадает слишком много релевантных чанков, они могут не поместиться в окно, и часть информации будет потеряна.
  • Сложность настройки: Требуется тонкая настройка параметров (размер чанка, количество возвращаемых чанков K, выбор модели-эмбеддера, ранжировщика и LLM).
  • Затраты на инфраструктуру: Необходимо поддерживать векторную базу данных, модели-эмбеддеры и LLM, что требует вычислительных ресурсов и памяти.
  • Проблемы с разнородными данными: RAG-системы хуже работают с таблицами, изображениями, аудио и видео, если не используются специализированные мультимодальные модели.

Применение

RAG-системы находят широкое применение в различных областях:

  • Корпоративные чат-боты и помощники: Ответы на вопросы по внутренним документам (регламенты, инструкции, базы знаний). Например, помощник службы поддержки, который ищет ответы в базе знаний компании.
  • Поиск по юридическим и медицинским документам: Анализ больших массивов законов, судебных решений, медицинских карт и клинических рекомендаций.
  • Образовательные платформы: Создание персонализированных учебных ассистентов, которые могут отвечать на вопросы студентов, опираясь на учебные материалы.
  • Анализ новостей и научных статей: Быстрое извлечение ключевой информации из больших объёмов текстов, генерация кратких резюме.
  • Интеграция с поисковыми системами: Улучшение качества ответов на сложные запросы, когда обычный поиск возвращает много нерелевантных ссылок.

Критика и ограничения

Несмотря на эффективность, RAG-системы подвергаются критике по нескольким направлениям. Во-первых, они не решают фундаментальную проблему «понимания» языка моделью — LLM остаётся статистическим генератором, а не системой с истинным пониманием. Во-вторых, RAG-системы уязвимы к атакам на базу знаний: если в неё попадёт некорректная или вредоносная информация, модель будет её воспроизводить. В-третьих, существуют этические вопросы, связанные с авторскими правами на документы, которые используются в качестве контекста, особенно если они не являются общедоступными. Наконец, для сложных, многошаговых рассуждений (например, математических или логических задач) RAG-системы часто уступают специализированным моделям, обученным на таких задачах.

Источники

  • Lewis, P., Perez, E., Piktus, A., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. Advances in Neural Information Processing Systems.
  • Gao, Y., Xiong, Y., Gao, X., et al. (2023). Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv preprint arXiv:2312.10997.
  • Chen, J., & Zhang, Y. (2024). A Survey of Retrieval-Augmented Generation (RAG) in Large Language Models. IEEE Access.
  • Документация фреймворков LangChain, LlamaIndex, Haystack.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →