AI-хайп. Что такое AI-агенты и как работает RAG?
RAG (Retrieval Augmented Generation) — это метод работы с большими языковыми моделями, когда пользователь пишет свой вопросы, а вы программно к этому вопросу «подмешиваете» дополнительную информацию из каких‑то внешних источников и подаете все целиком на вход языковой модели. Другими словами вы добавляете в контекст запроса к языковой модели дополнительную информацию, на основе которой языковая модель может дать пользователю более полный и точный ответ.
О том, что же такое RAG более подробно можно почитать
тут.
Как работает RAG.
Рассмотрим схему на рисунке.
1⃣ Предположим у нас есть UI (интерфейс). Сначала мы загрузим документы в нашу базу знаний (в любом формате: pdf, doc, да хоть в json) через сервис DocumentLoader.
2⃣ Сервис DocumentLoader перед тем, как поместить документы в хранилище, преобразует их в векторный вид с помощью Embedding Model - например из английского слова «cat» вы получите нечто похожее на [0.2, -0.4, 0.7]
3⃣ Получив в ответе от Embedding Model векторное представление документа сервис DocumentLoader сохраняет его в векторную БД Vector Database.
4⃣ После того, как мы загрузили в БД документы нашей базы знаний в векторном формате, мы можем начать работу с RAG и LLM.
Вопрос пользователя попадает в сервис Mediator, который направляет запрос в сервис RAG для поиска релевантной вопросу информации в хранилище.
5⃣ Сервис RAG преобразует вопрос пользователя в векторный вид с помощью Embedding Model и ищет совпадения в векторном хранилище, которые возвращает в качестве ответа.
6⃣ Сервис Mediator использует полученную в ответе от сервиса RAG информацию для обогащения контекста запроса в LLM.
7⃣ Ответ от LLM, при формировании которого был учтен контекст из базы знаний, возвращается пользователю на UI.
Как работают AI-агенты
Сервис Mediator в связке с LLM также может реализовывать функции AI-агента.
Если в процессе обработки запроса пользователя необходимо выполнить какие то действия, в том числе, основываясь на результатах обработки языковой моделью (LLM) вашего запроса, то здесь на помощь вам могут прийти AI-агенты.
Один из самых популярных подходов к реализации агентов называется ReAct - парадигма, объединяющая рассуждение и выполнение действий. Более подробно об устрйостве можно почитать по
ссылке.
Для примера:
Вы задаете LLM вопрос: проанализируй, как текущие новости о снижении нефтедобычи могут отразиться на стоимости моего портфеля акций.
При этом в векторное хранилище у вас загружена информация о вашем портфеле, предыдущих сделках, аналитическая информация о рынке акций и что нибудь еще.
Mediator сходит в векторное хранилище за релевантной информацией, затем вызовет LLM, которая, обработав запрос, может принять решение, что ей недостаточно данных для того, чтобы фактологически точно дать ответ на вопрос и вызовет ту часть (Tools - см. статью по ссылке выше) сервиса Mediator, которая имеет подключение к внешним API (например API поиска Google), для того, чтобы она нашла в интернете релевантную информацию с новостями о нефтедобыче, дообогатила ей контекст запроса и снова вызвала LLM, а затем вернула ответ пользователю.
P.S. Не претендую на фактологическую точность материала, рассказываю то, как я это понимаю сам и с чем сталкивался в работе. Если среди подписчиков есть специалисты в ds/ml/ai, буду рад комментариям/исправлениям/дополнениям 🐈