🚀 Pro-сообщество тут (мы там даже построили автоматизацию, которая вызывается прямо из Google Sheets за секунды!):
https://t.me/iishenka_pro_bot
⭐️ Бесплатные материалы из этого видео тут:
https://t.me/+W1SnvvkcV6A3NWMy
Следующее видео:
https://youtu.be/9aIWxih5f3s
В этом видео я расскажу, как настроить RAG Агента буквально за 5 минут. Что особенного в этом видео? Мы не только изучим новые принципы RAG на Pinecone, но и научимся делать автоматизации и ИИ Агентов на основе этих знаний.
🔥 Независимо от того, работаете ли вы с AI-агентами или только начинаете осваивать автоматизации в n8n, этот урок поможет вам овладеть процессом настройки ИИ для любых задач.
💡 Не забудьте поставить лайк и подписаться, чтобы не пропустить новые уроки по n8n и AI-агентам. Давайте сделаем AI-автоматизации простыми! 🙌
Тайм-коды:
00:01 - Введение. Зачем это?
00:48 - Строим автоматизацию
02:01 - Подключаем Pinecone
10:50 - Возвращаем прямые цитаты RAG
Я — Илья Бовкунов, основатель и СЕО Sendforsign — это компания, занимающаяся AI-автоматизацией договоров и документооборота. В прошлом был Директором по продукту и продуктовому дизайну в международных AI-стартапах.
Позвать в подкаст или предложить другое сотрудничество aiiszdes@gmail.com
Не забудьте поставить лайк, подписаться и нажать на колокольчик, чтобы не пропустить новые видео об AI-агентах и автоматизациях!
построим раг агента, который умеет возвращать прямые цитаты, имена документов, конкретные страницы, с которых он забирал информацию, и потратим мы на это буквально 5 7-10 минут. То есть это самый быстрый раггент, который вы можете, в принципе, построить без кода абсолютно, не заморачиваясь с метаданными, с локальными базами данных, с векторными базами данных. То есть всё будет происходить буквально через одного ассистента и один API запрос. Интересно? Ну, значит, смотрим до конца. Так, ну, только прямо сейчас лайк, коммент, подписка и только после этого продолжай просмотр. Спасибо. Как вы видите, у меня автоматизация выглядит мегапросто. То есть это обычный ассистент, у которого есть один HTTP запрос куда-то. Да
давайте попробуем спросить какой-нибудь сложный вопрос. У меня сейчас подгружен Гражданский кодекс, да? То есть, например, хочу, чтобы ты мне рассказал про статью девять, пункт О. Давайте спросим, посмотрим, что делает агент. Делает всего лишь один API call и формирует нам ответ. Ответ формируется довольно быстро, и ответ выглядит очень интересным для нас образом. То есть, смотрите, статья девять, пункт один гласит: "Граждане и юридические лица по своему усмотрению осуществляют принадлежащие им гражданские права". Дальше идёт прямая цитата для того, чтобы вы всегда могли перепроверить. То есть сначала идёт просто размышление, ответ. Дальше идёт конкретно имя документа, откуда был взят, э, откуда была взята база для этого ответа. И дальше даже страницы. То есть это всё можно делать вручную, да, и для этого есть специальные техники, но это всё требует прямо довольно больших затрат, времени, работы с метаданными. А здесь всё произошло буквально за 5 минут. Каким образом это всё работает? Для того, чтобы нам осуществить подобное, нам потребуется сервис, который называется Pinecon. Мы гуглим pinecon. ai, прямо проваливаемся на этот
сайт. Мы этот сайт уже, этот сервис использовали в своих автоматизациях когда-то. А впоследствии он, скажем так, э проиграл конкуренцию Superbase, но в принципе у него есть ещё много дополнительных крутых фишек, которые мы мало использовали. Давайте сразу к ним перейдём. А нужно залогиниться на этот сайт, и вам будет предоставлен какой-то бесплатный usage. То есть у вас здесь просчитается стартер usage, и нас будет интересовать вкладчика ассистенты. То есть внутри этого сервиса можно не только векторизовать наши собственные данные, то есть пользоваться им не как векторной базой данных, а у этого сервиса есть свои ассистенты, которые работают на основе баз данных, которые есть у Пайнкона. Здесь нам потребуется создать нового ассистента. Давайте я его назову Demo 2. Мы создаём ассистента. И самое интересное, что и у ассистента тоже есть некоторый бесплатный usage. То есть мы сможем довольно хорошо, а поэкспериментировать с ним, да, даже позагружать данные. А каким образом работает ассистент? Ассистент - это, по сути, набор некоторых инструкций, моделей и, а, базы данных или некоторых файлов, которые этот ассистент может использовать как свою долговременную память. То есть он их викторизует и потом отвечает на основе этих файлов. Если мы перейдём на вкладочку файлы, здесь мы видим как раз окно, которое а позволяет загрузить несколько файлов. Вот я только что а скачал Гражданский кодекс, да, для того, что для того, чтобы были довольно серьёзные у нас документы, да, они какие-то детские. И мы видим, как ассистент процессит эти этот документ. То есть вы можете загрузить какое угодно количество файлов, и ассистент их запроцессит, то есть векторизует и будет основывать свои ответы уже на основе этих данных. Так, мы видим, что только что произошла обработка этих файлов, и мы уже, на самом деле, после этого можем что-то спрашивать у этого ассистента. Здесь есть выбор модели, да, мы можем выбирать какую нам угодно модель. Давайте выберем пока самую маленькую и спросим ровно тот же вопрос, который мы спрашивали в N8N. Я его забираю, этот вопрос, возвращаюсь и говорю: "Расскажи про статью 9 пункт 1". И смотрите, он мне прямо внутри интерфейса отвечает в несколько свободной форме, о чём эта статья. Но то есть тут нету прямой цитаты, да, но есть некоторое размышление на тему. Но самое важное, когда мы сюда нажмём, мы видим, что он рассказывает нам о том, что документ называется вот таким образом. И я взял ответ для твоего вопроса со страниц 5-6. То есть мы можем прямо сюда нажать, и нам открывается прямо на пятой странице, да, мы тут видим, что как раз есть статья девять, пункт один. И таким образом мы понимаем, что ассистент работает прямо на основе документов, и мы всегда его можем перепроверить. И для нас это краеугольное знание, потому что этот ассистент может работать как внутри интерфейса, так и через API запросы. То есть, если мы перейдём вот на эту вкладочку connect и здесь переключимся с питона на shell, мы видим, что у этого ассистента есть целых два API запроса. Один позволяет загружать файлы через API, а другой позволяет вести некоторую дискуссию, да, то есть чатиться с этим ассистентом и получать от него какие-то ответы. Давайте заберём вот этот курл запрос, вернёмся в Nem. Давайте пока закроем чат. Я даже удалю сейчас эту ноду и сделаю всё заново. Я добавляю ноду HTTP request. Импортирую курл, вставляю сюда. Давайте уберём эту строчку, потому что она не из курла напрямую. И смотрите, он сразу нам прокинул, а всё, что нужно, да? То есть это метод пост. И он сразу даже прокинул имя ассистента демо 2, да? Потому что нам нужно конкретно указывать к какому ассистенту происходит обращение. Дальше API ключ. Да. А нам нужно сюда вставить API ключ. Как мы его берём? Мы возвращаемся в PconCON, переходим на API ключи, создаём себе новый API ключ и, а, вставляем вот прямо сюда наш API ключ. Я сейчас удалю вообще хедеры, потому что у меня есть предсохранённый, а, crential type, да, который, мм, через header ауторизацию работает, и у меня есть уже PINCON, то есть туда уже вшито по сути а название поля и значение, то есть API и его значение. А вы можете сделать точно так же, либо оставить изначальный вариант просто с IPA ключом прямо здесь. Дальше мы видим, что а у нас уже прокинуто тело запроса. То есть, по сути, прокинут запрос, к которым мы будем, а, вместе с которым мы будем обращаться к этому ассистенту. Нас, конечно, не устраивает вот этот умолчательный запрос, да. Нам нужно, чтобы ассистент прокидывал вопрос нашего а пользователя. У нас есть здесь с вами два пути. Мы можем, а так как мы знаем, что агент получает из чат-инпута этот запрос, да, мы можем прямо вот прокинуть сюда чатпут, и тогда в этот Давайте с первого раза что-то не получается иногда. М, давайте ещё раз прокинем. И тогда этот запрос, наш запрос, да, будет прокидываться напрямую в этот HTTP requквест. А, и в принципе ассистент даже никак не будет участвовать. То есть ассистент именно будет вызывать этот HTTP requкст как tool, а запрос будет без изменений. Но я вам предложу получше способ, потому что а сейчас можно сюда добавить такую конструкцию, такую функцию, как, да? То есть мы прямо пишем from AI, здесь есть description, что а эта штука позволяет а модели самой решать, нейронки самой решать какой запрос вставлять сюда. Я бы сюда так и вписал user query. То есть это будет означать, что модель сама решит, да, то есть ставит сюда user quyer инициирует сам HTTP запрос. Вы можете спросить: "А в чём разница? Ведь он же будет точно такой же". На самом деле нет. Если вы укажете вот таким образом, а, и, например, вас у вас сам чат инпут будет какой-то сложный, то тогда нейронка может решить сама, например, разбить на несколько подвопросов ваш вопрос и проинициирует там два или три раза вызов этой httбиноды, чтобы получить доскональный ответ. А если вы прокинете чат input напрямую, то нейронка всегда только с ним пошлёт запрос в httpноду и вернёт вам ответ. На моей практике вот этот подход получше, погибче, но меньше контроля с вашей стороны. То есть нейронка сама будет определять, каким образом формировать сам user query. Дальше мы прокидываем стрим, модель. Сюда тоже можно прокидывать, а разные модели, да. Если мы почитаем документацию, то видим, что у этого HTTP запроса вот есть разные модели доступные. Вот есть, например, маленькая модель. Если вы хотите на время экспериментов как-то поэкономить, прокинете О4 мини. И в принципе всё. А давайте посмотрим, каким образом мы можем ещё организовать сам system message этого агента, да? То есть мы здесь добавляем options, здесь нажимаем system message и пишем такую штуку: "Всегда читай векторный вектор database toлзу перед тем, как отвечать. всегда её вызывает, да, всегда возвращает документ, ээ, пытаяся page number, да, то есть номер страницы и какие-то цитаты. Ну и отвечай по-русски. Давайте мы ещё назовём нашу ноду прямо так, как мы прописываем в системном промте. Это значит, что теперь этот называется так, и ассистент знает, что к ней нужно обратиться каждый раз, прежде чем мы, а что-то спрашиваем. Так, давайте теперь попробуем открыть чат и спросить ещё раз то же самое. Прокидываем запрос, видим, каким образом это работает. Да, инициируется запрос к нашей векторной дата dat даabй и ждём, что он нам ответит. Так, мы видим ответ. Он очень похож на то, что было, но а если мы откроем логи, да, мы видим и нажмём вот на а вектор database, мы сможем увидеть responsс, который мы получили. Давайте переключимся в JON. Здесь очень важная штука. Мы видим, что у него есть контент, да, то есть это ответ самого ассистента, который он уже сформировал. Здесь есть различные полезные штуки, да, например, а как, например, такие как имя, а документа. Здесь есть pages, да, то есть те самые страницы, откуда он это забрал. Но мы видим, что хайлайты, а хайлайты - это ключевая штука для некоторых кейсов. Хайлайт - это конкретные цитаты, которые он использовал из документа. Они не участвуют сейчас в ответе. Чтобы их
включить, мы возвращаемся обратно в документацию а ассистентов и видим, что здесь есть такое поле, которое называется include highlights. Да, если true, то ассистент будет проинструктирован всегда возвращать хайлайты или прямые цитаты, то есть референсы документа, которые поддерживают его ответа. Давайте забираем вот эту штуку, возвращаемся в наш NV. Возвращаемся в нашу ноду, которая инициирует HTTP запрос к Pcon. Здесь нажимаем запятая, двойные кавычки и проставляем highlight и прямо прописываем true. Так, давайте тогда попробуем ещё раз тот же самый запрос сделать и посмотрим, чем будет отличаться ответ от нейронки. Вот у нас прилетел ответ от нейронки. И давайте смотреть, что у нас внизу. Отлично. Смотрите, у нас есть хайлайт, type текст и сам контент. Стать статьи девять осуществление гражданских прав. Граждане и юридические лица по своему усмотрению осуществляют принадлежащие им гражданские права. Если мы вернёмся сюда, в нашего ассистента, откроем его и посмотрим, а, в файле, который нам он уже предлагал, и увидим статью девять, а, пункт один, граждане и юридические лица по своему усмотрению осуществляют принадлежащие им гражданские права. Чем это хорошо? Это хорошо, что если мы спросим какой-то сложный вопрос, то мы всегда сможем увидеть прямые цитаты, которые использовались нейронкой для построения нашего ответа. Допустим, я скажу: "Расжи возмещение убытков". Я даже сделал опечатку убытров. Посмотрим, каким образом отработает наша нейронка Пайкон, и посмотрим, какие именно чанки он вернёт. Так, возмещение убытков. Смотрите, довольно у него развесистый ответ, да? Но если мы вернёмся вниз на хайлайты, посмотрим, что здесь есть вот такой хайлайт, то есть конкретный кусочек текста, да, с каких-то страниц, со страницы 5-ше. Дальше мы видим, что ещё один есть кусочек текста уже со страницей 67. Лицо, право, которое нарушено. Ещё какая-то страница, ещё какой-то ответ тоже со страницы, а, 5 6 7. Под убытками понимаются расходы, которые лицо чи право нарушено. То есть, что только что произошло, мы по сути с вами вообще не занимались никак работой с метаданными. Мы с вами не занимались векторизацией, мы с вами не били документы начанки, а просто настроили одну HTTP-ноду, загрузили данные в нашего ассистента, файлы в нашего ассистента, и после этого моментально получили возможность работать с этими векторизованными документами буквально за 5 минут. Этот способ очень хорош для быстрых действий, да, для быстрой векторизации ваших данных, разбития их начанки и вот всей инфраструктуры под векторизацией, которые обычно. Если вам интересно, каким образом это делается вручную, как всегда, наша прогруппа, мы там про рак говорим просто постоянно. И там глубоко разобраны такие вещи, как сглаживание ожидания ответа от нейронки, парсинг таблиц с PDF, с сохранением в гуглтах, как нейронки составляют SQL-запросы, углублённый контекстуальный ретривал для рак и прочее, прочая очень глубокая документация. А вот эту автоматизацию, которую мы с вами только что построили вместе на YouTube, я прямо сейчас её сохраняю и кладу в свою бесплатную Telegram-группу. Ссылка на неё тоже будет в описании, как и ссылка на Прогруппу. Прямо забирайте оттуда, экспериментируйте. M.