Итак, каждый из нас хоть раз в жизни попадал на “умного ИИ-ассистента”, когда звонил в банк, оператору сотовой связи или писал в техподдержку на каком-то сайте.
Именно в таких системах и работает RAG-подход (Retrieval-Augmented Generation).
Если говорить совсем приземленно: RAG - это способ заставить нейросеть отвечать не из головы, а на основе реальных данных.
Увы, нейросети, которыми вы когда-либо пользовались (ChatGPT, Алиса GPT, DeepSeek и др.), не обучены выдавать вам ответ по режиму работы отделения Сбербанка или, например, отвечать на вопросы как заблокировать сим-карту. Но они это делать умеют. Как?
Как это работает
Логика устроена на самом деле достаточно просто:
- Представим что у вас есть база знаний вашей организации (документы, статьи, лекции, база компании)
- Пользователь задаёт вопрос через звонок в службу поддержки или в чат с оператором
- Алгоритм сравнивает вопрос пользователя с ответами, которые есть в базе знаний
- Потом алгоритм передаёт найденные по совпадениям куски в нейросеть и говорит ей:
“Вот информация из нашей базы знаний “”. А вот вопрос пользователя “”. Ответь пользователю, исходя из контекста информации из базы знаний.” - Нейросеть отвечает, опираясь на найденную информацию
Таким образом у вас создается впечатление что на той стороне трубки/чата работает какая-то суперинтеллектуальная обученная нейросеть которая все знает о банке/операторе/магазине.
Но на самом деле нейросеть просто отвечает согласно тому контексту, что у нее есть.
Пример:
Вы идете на экзамен и вас будут спрашивать по конкретной дисциплине. Чтобы отвечать на вопросы, вам надо прочитать несколько книг. Логика в RAG абсолютно такая же.
Почему важны данные
Самое важное, что саму нейросеть вы можете взять любую — умную и дорогую или не очень умную, но зато дешёвую, а вот качество данных, которые есть в базе, должно постоянно стремиться к идеалу.
Ведь если в нейросеть попадёт “мусор” по вашему вопросу то и ответить ничего внятного она не сможет.
Именно поэтому некоторые боты/ИИ-операторы такие бесячие и ничего не могут сказать по существу. Они просто плохо обучены.
Несмотря на кажущуюся простоту архитектуры таких систем, качество самих данных (их разметка) зачастую очень сильно хромают. Поэтому, часто вместо умного ИИ-помощника вы получаете надоедливого, бестолкового бота который не даёт пробиться к оператору - живому человеку по реально важному вопросу.
Как это устроено под капотом
Дальше техничка, для тех кому интересно как это устроено под капотом:
-
Сначала данные надо подготовить. Т.е. “почистить” наши лекции/инструкции/руководства от лишнего мусора (главы, параграфы, нерелевантные символы). Потом разбить все данные на некоторые куски, это называется чанками.
-
Потом нам надо эти чанки превратить в векторы (это называется embeddings). Каждый чанк переводится в числовое представление - вектор. Делает это специальная нейросеть, которая обучена чтобы переводить тексты в числа. Вектора хранятся в специальной векторной базе. Зачем нужны векторы - ответ дальше.
-
Поиск ответа на вопрос пользователя. Вот тут начинается самое интересное: вопрос, который пришёл от пользователя мы должны также перевести в вектор (через спец. нейросеть). Далее найти ближайшие чанки через специальный метод сравнения векторов (косинусное сходство). Да, мы сравниваем вектор вопроса от нашего пользователя со всеми векторами наших чанков в векторной базе. Даже если их миллион, в векторной базе такое сравнение происходит быстро. После мы получаем топ N наиболее релевантных чанков (т.е. таких чанков, в базе знаний которые похожи на вопрос нашего пользователя).
-
Генерация ответа нейросетью (LLM): после того как мы нашли топ N похожих чанков, мы берем эти кусочки + вопрос пользователя и отправляем в LLM с таким промтом (инструкцией):
“Вот тебе вопрос пользователя, вот тебе информация из нашей базы данных, дай ответ, исходя из контекста”
Итог
Поэтому на практике — 80% качества RAG зависит не от модели, а от данных.
Если совсем коротко: RAG = поиск информации + генерация ответа на её основе.
Где используется RAG
Типичные случаи:
- чат-боты с документацией
- поиск по базе знаний
- support-ассистенты
- телефонные помощники
- образовательные сервисы
Простой пример
И наконец простой пример из жизни:
Допустим, у нас есть база лекций по Machine Learning.
Мы делаем чат-бот, где пользователь спрашивает: “Что такое производная?”
Теперь, применяя RAG, мы можем использовать наши лекции по Machine Learning чтобы модель объясняла что-то, как преподаватель на лекции.
Я как раз и сделал такую систему, чтобы показать, как это работает, переходите на мой сайт:
https://johngear.dev/n-gpt_rag_llm_service/