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

Исходя из блок-схемы выше мы можем выделить следующие рычаги влияния на качество фичи или продукта на базе LLM:
- Выбор задачи, которая решается с помощью LLM?
- Изменение промпта
- Изменение используемой модели и/или ее параметров?
С помощью RAG мы влияем преимущественно на то, как сформирован промпт, добавляя к нему дополнительную важную информацию для ответа.
Сначала мы разберем суть подхода и типовые ситуации, где RAG может быть полезен. После этого сделаем обзор реальных кейсов с применением RAG.
Курс «AI/ML-симулятор для продакт-менеджеров» в группе с ментором:
🔹 Научитесь видеть возможности для применения AI/ML в вашей текущей роли
🔹 Запустите собственный продукт с AI/ML
RAG: суть подхода для улучшения качества LLM продуктов
Идея RAG заключается в том, что мы обогащаем промпт дополнительными знаниями, которые отсутствовали в обучающем датасете большой языковой модели (LLM).
Существуют различные модификации RAG, но основные шаги подхода одинаковы:

Шаг 1: Retrieval
На основе пользовательского запроса происходит обращение в заранее определенные источники данных. Источниками данных могут быть внутренние базы данных компании, документы, внешние ресурсы (например, поисковые системы, специализированные сервисы, API).
Поиск дополнительной информации осуществляется либо на основе исходного запроса пользователя, либо его трансформации (запрос пользователя может быть превращен в SQL-запрос, набор поисковых запросов, Embedding).
По результатам этого шага мы получаем дополнительные данные, которые обогащают базовую информацию, с которой работает LLM при ответе на вопрос.