🚀 Pro тут:
https://t.me/iishenka_pro_bot
⭐️ Все бесплатные материалы из этого видео тут:
https://t.me/+W1SnvvkcV6A3NWMy
В этом видео я пошагово покажу, как создать AI-агента с поддержкой RAG (Retrieval-Augmented Generation) в n8n, который работает с Яндекс Диском и Supabase. Что особенного в этом уроке? Файлы хранятся на Яндекс Диске, а векторные эмбеддинги — в Supabase, и всё это связано в едином автоматизированном процессе. Я покажу, как агент получает доступ к документам, извлекает из них информацию и отвечает на вопросы — полностью автономно. Идеальное решение, если вы хотите подключить своего агента к Яндекс Диску без лишней возни.
🔥 Независимо от того, работаете ли вы с AI-агентами или только начинаете осваивать автоматизации в n8n, этот урок поможет вам овладеть процессом автоматической загрузки файлов для любых задач.
💡 Не забудьте поставить лайк и подписаться, чтобы не пропустить новые уроки по n8n и AI-агентам. Давайте сделаем AI-автоматизации простыми! 🙌
Следующее видео:
https://youtu.be/1MhLEfe547E
Тайм-коды:
00:18 - Демо
00:43 - Структура агента
01:45 - Строим агента
03:40 - Подключаем Postgres Memory
10:31 - Подключаемся к Яндекс Диску
Не забудьте поставить лайк, подписаться и нажать на колокольчик, чтобы не пропустить новые видео о AI-агентах и автоматизациях!
Сегодня мы строим агенты, которые умеют работать с Яндекс-диском, забирать оттуда данные, помещать их в векторную базу знаний и ориентироваться на эти знания как на свою долговременную память. При этом мы ещё и добавим ему кратковременную память для того, чтобы он помнил историю нашей переписки. Так, ну
что, дружок, теперь ты умеешь пользоваться Яндекс диском? Смотрим, как он работает, и выдаёт нам ответ. Привет, дружок. Да, я умею работать с Яндекс-диском. Это ли не прекрасно? Так, давайте сразу перейдём к делу и
посмотрим, каким образом будет устроен наш проект. Мы создадим себе Яндекс-Диск, на который поместим несколько документов, научимся забирать контент этих документов и научимся забирать эти документы, разделять их на чанки и помещать в нашу векторную базу знаний. Сегодня мы будем работать с Superbase. Это интересное open source решение. Сегодня мы поработаем с ним в облаке, но впоследствии, если вам это будет нужно, вы сможете развернуть его на своих серверах, а принцип работы не изменится. Это некоторая надстройка над постгрес базой знаний, в которой мы можем хранить и регулярные данные, и ещё и векторизованные данные, которые может читать агент. Соответственно, эагент сможет забирать оттуда знания и отвечать нам на основе этих знаний. Но при этом каждый раз, когда пользователь будет спрашивать какой-то вопрос, мы будем забирать этот вопрос и ответ, который нам дал ассистент, и сохранять его в этой же самой базе знаний, как историю нашей переписки. Таким образом, агент сможет ориентироваться на то, о чём мы только что поговорили. Так, ну что, а
как всегда, мы начинаем нашу работу в сервисе N8N. А вам необходимо будет перейти на сайт N8Niio, нажать get started и создать ваш аккаунт. Мы это делали уже не неоднократно в прошлых видео. Здесь сложного ничего нету. После того, как вы создадите а ваш аккаунт, вы окажетесь на а вот этой странице. У вас здесь не будет ни одного проекта. И всё, что вам а нужно будет сделать - это нажать кнопку Create Workflow. После этого мы готовы создавать Workflow. Итак, у нас агент будет состоять опять из двух частей. То есть первая часть - это загрузчик из Яндекс-Д в векторную базу знаний. Вторая часть - это сам агент, который ориентируется на то, что мы только что загрузили, и отвечает нам на вопросы. Я предлагаю в этот раз начать с самого агента. Он будет довольно простой. В этот раз нам а понадобится чат, который встроен прямо в сервис N8N. Мы создадим себе новый чатригр. И, в принципе, здесь нам ничего не нужно делать. Этот чаттриггер мы сразу же помещаем к, а, подключаем к яагенту. Вот. И в этом агенте мы указываем, что он подключён к чат-триггеру и ожидает некоторый Jason на вход. Это всё базовый функционал, ничего здесь не меняем. Подключаем модельку Open AI. Мы ей пользуемся регулярно. Вы нажимаете сюда. А, и здесь вам нужно будет подключить ваш Open AI аккаунт. А вам нужно будет нажать здесь create new credential и вставить IP ключ, который а вы получите на сайте Openi. Мы делали это в первом видео в самом. Соответственно, посмотрите, здесь ничего сложного, просто залогинились в сам сервис Open AI, забрали апи ключ, вставили сюда, и, в принципе, больше вам ничего делать и не понадобится. У меня уже есть свой аккаунт, соответственно, я его здесь подключаю. Вот. И самое интересное
начинается сейчас, да, нам нужна память, и мы хотим использовать в качестве памяти нашу Pastgress базу знаний. Поэтому давайте нажмём плюсик здесь и выберем Pastgress. И сейчас нам нужно будет подключить Pastgress, а, то есть ввести её кренлы для того, чтобы наш агент начал работать с этой базой знаний. У меня уже есть аккаунт, но мы сейчас вместе с вами подключим, потому что делаем это в первый раз. Нажимаем Create New Credential. И вот здесь может быть чуть-чуть, наверное, пугающий экран, потому что уж слишком много тут всего происходит. Но на самом деле ничего сложного здесь быть не должно. А давайте, а подключимся. Что мы делаем для этого? Мы идём на сайт superabase. com, да, и нажимаем здесь get start или start for free. Это база, которая имеет некоторый бесплатный usage, да. Соответственно, что мы здесь делаем? Мы задаём название нашей организации. Зададите какую-то свою, тип персональный и pricingп plan. Да, бесплатный. Всё. И после этого вы нажмёте create organization и попадёте в вашу новенькую организацию. Больше от вас там ничего не потребуется. У меня уже есть организация, поэтому как только вы пройдёте путь, который мы только что обсудили, вы окажетесь вот на этом экране. Supase - это интересное решение, как я уже сказал, это open source решение, которое вы впоследствии сможете развернуть на своём сервере. И также у неё есть возможность попользоваться в облаке, что мы делаем сейчас. А, то есть они нам формируют нашу организацию, наш доступ к базе знаний. Соответственно, мы сейчас прямо к ней подключимся. Чтобы подключиться к Postgress аа таблицам, нам нужно пойти в Project Settings. И здесь мы увидим кнопочку, которая называется connect. Нажимаем кнопочку connect и увидим вот такую страшную, а, страшную картину, да. Но на самом деле здесь нам уже выданы все наши криенлы, которые мы можем использовать для того, чтобы подключиться к агенту. Так, здесь выбираем тип postgress sequel и смотрим вот на эту строчку в секции transaction puller. А здесь уже есть наш host, то есть сH - это наш host, с/p - это порт, d - это database postgress и U - это наш usеer. Это ровно то, что требует агент в N8N для того, чтобы мы подключились. Так. А, забираем хост, копируем, идём, возвращаемся и вот сюда вводим хост. Хост здесь. Так, user юзер там тоже был, поэтому идём, забираем полностью юзера. А, подключаемся. Пароль. Пароля здесь нет, я вам забыл сказать. Сейчас мы даже вернёмся, а, назад. Вот здесь, когда вы нажмёте новый а проект, а у вас при создании самой организации у вас сам сервис просит: "Введите пароль database". Это ваш персональный пароль, вы его, в принципе, сами придумываете. Обязательно его сохраните, да, потому что это как раз тот самый пароль, который будет впоследствии использоваться для подключения к базе Pastgess. А у меня он же есть. Я проходил этот путь, да. Соответственно, мы возвращаемся в мою организацию, да, в мой проект. Вот пароль мы вводим, а, который мы создавали сами. Вот. И порт, да, нам осталось ввести порт. Порт у нас тоже здесь, а, указан сp6543, да? Взяли, вставили сюда порт. После этого вы нажмёте, а, save, и ваша база знаний подсоединится. Соответственно, у меня она подсоединена, поэтому я нажимать тут не буду ничего. Так что дальше? Дальше постгрес подключён. И на самом деле осталась только одна настройка. Сколько мы хотим хранить в контексте, а переписок, то есть сколько ответов наших э вопросов и ответов ассистента мы хотим аа каждый раз отдавать ассистенту. А когда мы что-то его спрашиваем, на самом деле мы уже подключили а нашу базу. И, соответственно, что мы можем попробовать? Сейчас я вернусь в свою датабазу, пойду вот сюда в table editor, удалю вообще отсюда всё, чтобы аа частота эксперимента сохранялась. Документы тоже удалю. Вот совершенно пустая база знаний. Как создаются эти таблички, вы сейчас увидите. Пока не пугайтесь. Мы всё пойдём пройдём по шагам, чтобы было понятно всё в нюансах. А мы сейчас можем уже инициировать чат. Э если нажмём на кнопочку Open Chat, это встроенный чат в NVM. А, говорим привет и смотрим, как работает, да? То есть мы смотрим, что нам он ответил же: "Привет, как я могу тебе помочь сегодня? И при этом он сходил в Pstgressat. А memory. Это что значит? Если мы сейчас вернёмся в нашу CPAS базу, то посмотрим, мы видим айдишки, видим session ID. Это session ID чата. То есть, а вот этот самый ID, он помещён уже в нашу базу знаний и сам а контент. То есть мы видим, что спросил а пользователь, то есть юзер, и что ответил ассистент. Для чего это нужно? Ну я вам сейчас покажу. А я спрошу, знаешь ли ты, как меня зовут? Скорее всего, а, к сожалению, я не знаю, да, если я сейчас скажу: "Меня зовут Илья". Так, привет, Илья. Да, и если теперь его спрошу, как меня зовут, то теперь, скорее всего, он знает. Тебя зовут Илья. Откуда он это знает? Он знает, потому что история нашей переписки, если мы сейчас обновимся, хранится в этом в этой базе. И он по session ID, по ID нашей переписки получает контент, который мы уже обсуждали. Прекрасно. Теперь, а, для того, чтобы он работал ещё круче и взаимодействовал с Яндекс-диском, нам нужно подключить к нему векторную базу знаний. Ну, как мы знаем уже из прошлых видео, прежде чем её подключить на чтение, соответственно, надо сначала её создать на а-а запись. То есть мы должны сейчас создать отдельный флоу, как мы забираем из Яндексдиска информацию, помещаем её в векторную базу знаний и, а, после этого читаем с помощью агента. Так, ну что, начнём параллельный flow. То есть я прямо здесь, в этом же проекте, останусь. Вот мы тут нажмём add
another trigger, да, и вот тут trigger manually выберем. Соответственно, вот он нам добавился наш триггер. И теперь нам нужно по тому по моменту нажать на триггер пойти в наш ЯндексДиск и забрать оттуда файлы. А это не такая тривиальная задача, потому что в сервисе N8N а нету готовых экшенов для работы с Яндекс-диском, но у Яндекс-диска есть AP. Это не очень будет сложно, я вам всё покажу. Зато один раз научимся и после этого будете использовать. Чтобы активировать всю эту историю, мы идём на ЯндексДиск, нажимаем перейти в диск, и, соответственно, у нас диск уже есть, да, какой-то. А, запомнили? Классный факт. Потом идём опять туда же и, а, вводим ЯндексДиск AP. Ввели AP- диска технологии Яндекса. Нажали сюда. Нас интересует REST IP. Если вас интересует, что такое IP, как с этим работать, обязательно пишите в комментариях, а мы это обязательно обсудим. Это довольно мощный инструмент, на котором, в принципе, держится коммуникация между разными сервисами и приложениями. Идём сюда. Вот. И у нас тут есть инструкция. Получите ваш токен. Да, потренируйтесь на полигоне. Получить ваш токен. Мы это ещё успеем сделать, когда нам нужно будет продуктовый AP. Его, этот токен, можно получить тестовый для того, чтобы посмотреть, как это всё работает. Для этого нужно найти, а, кнопочку полигон, нажать сюда. И мы видим, что у нам уже Яндекс сформировал некоторый токен, да, и рассказывает, какие, в принципе, функции а есть у Яндекс-диска. Нас интересуют файлы и папки. Мы же хотим взять какую-то папку, да, и прочитать оттуда файлы. Нажимаем сюда и ищем получить метаинформацию о файле и или каталоге. Так, интересно. Мне кажется, нам это и нужно, да? Соответственно, кликаем сюда, и он нам говорит, а какие здесь есть базовые а параметры? Здесь опять же есть много базовых параметров, а но только один необходимый. Это путь к каталогу, от которого мы хотим, а, получить файлы. Мы возвращаемся на ЯндексДиск, нажимаем создать и нажимаем создать папку. Нажимаете и создаёте себе папку. Как только вы создали папку, внутрь проваливаем все этой папки и там дальше уже будем создавать документы. Но пока вот мы создали папкуте. Можем ли мы по нашему токену обратиться к папкетест? Попробуем. Пишем тест. Именно тот самый путь, тот самое название, с которым мы её создавали, и нажимаем попробовать. Так, он нам говорит курл та-та. Тело ответа. Смотрите, он нашёл нашу папку и внутри папки он нашёл, там есть два файла. Давайте посмотрим. Есть тут акции, режим работы и цены и сотрудники. То есть, смотрите, он нашёл а всю эту историю, да, и как будто бы это ровно то, что нам нужно. Нам нужны эти файлы для того, чтобы потом смочь получить, а, доступ к контенту этих файлов. Теперь нам нужно научить нашего, а, ассистента делать то же самое, да? Для этого мы идём обратно в NCMN. И так как у нас нету готовых экшенов для этого, нам нужно как раз послать этот самый HTTP запрос. Ровно то же самое, что мы сделали на диске, на ЯндексДиске, на их сайте. Мы то же самое можем сделать и отсюда. Нажимаем сюда, нажимаем HTTP, http request. Мы возвращаемся сюда и смотрим, что это был за requквест. Это был get request, у которого были два хедера. header, а, который назывался Application Type, а, вернее, accept со значением Application JSON. Ещё был header авторизации, а, и ещё непосредственный урл, по которому мы послали а наш запрос. Это всё прямо то, что нам нужно. Идём обратно. Мы говорим getзапрос. Мы только что выяснили, что это был getзапрос. Урл. Забираем отсюда урл. Вот он наш урл. Сюда вставляем. Аутентификация. Мы не будем её здесь прописывать, но пропишем два хедера, которые были, а, в самом запросе, в примере. Нажимаем sendaders, да, и здесь указываем два хедера. Первый headдер - это accept. Так, попробуем скопировать. Так, с имя вставили. Value application jon. Отлично. Вставили. Ещё один параметр добавляем. Это сама а авторизация, да? То есть взяли авторизацию и сам value забираем отсюда. Полностью забрали весь value, вставили и пробуем. Что у нас тут получается? Идёт запрос. Идёт. И смотрите, мы получили ровно то же самое, что получили в примере. Это ли не прекрасно? Да. Соответственно, мы уже поняли, что, в принципе, к файлам мы можем получить доступ. Вот он путь непосредственный к файлам, да? То есть имя непосредственно файла. Отлично. Это то, что нам нужно. Но здесь есть нюанс. Мы получили эту информацию, и внутри этой информации содержится массив, да? То есть это массив, состоящий из двух элементов, потому что файла было два. Соответственно, нам для того, чтобы дальше работать с этим массивом, нужно разбить его на отдельные элементы для того, чтобы был нам было проще работать. Чтобы разбить массив на дельные элементы, а у N8N есть специальный метод, который называется Splitout, разделение, да? И сейчас в этом разделении мы должны указать, а с чем мы работаем, что мы будем разделять. Мы видим, что у нас есть embeded внутри есть item ноль, да, item один. Отлично. Нам нужно как раз забрать массив items для того, чтобы его разделить на два а элемента. А, забираем items. Всё, он прокинулся сюда. И теперь мы можем протестировать этот шаг. Тест. Отлично. Смотрите, что произошло. Если мы включим табличку, он разбил, а, всю эту историю на два элемента. Вот видите, второй а второй вторая строка. Мы видим, что отдельно он забрал ценные сотрудники, отдельно забрал акции и режим работы. Это два докса. Отлично. Теперь мы готовы начать извлекать информацию а из этих файлов. Здесь несколько, скажем так, специфический способ извлечения, да, информации, потому что для того, чтобы сначала её извлечь, нам нужно, а, и мы идём обратно в документацию, да, чтобы её извлечь, нам нужно сначала сгенерировать ссылку на скачивание файла. Ну, нужно так нужно. А, соответственно, будем это делать. Соответственно, нам понадобится следующий шаг здесь, который будет называться получить ссылку, да. Соответственно, это следующий, а, HTTP request, в котором мы также проставляем метод get и смотрим, как он работает. Download. Нажимаем, смотрим, что нам нужно сделать. У нас required, да, это путь к ресурсу. Это путь к ресурсу - это само имя, а, файла, а, для которого мы формируем ссылку. Так как у нас уже есть, да, какие-то тестовые, а, знания, которые мы получили тут. Да, мы можем отсюда забрать имя. Вот, например, акции и режим работы Docx X. А, идём, пробуем. Вставляем сюда акции, режим работы docx. Нажимаем попробовать. И смотрите, не удалось найти запрошенный ресурс. Да, ошибка была связана с тем, что нужно указывать полный путь до файла, то есть из корневого каталога. А он у нас лежит в йте- тест. И дальше акция, режим работы. Если мы здесь нажмём на, а, попробовать, смотрим. Вот. И в теле ответа он нам отдал как раз ссылку, по которой мы сможем скачать этот файл и получить его контент. Соответственно, выучили. И теперь мы забираем, да, мы это уже с вами делали. Нам с вами нужно внимательно посмотреть на сам урл запроса, да? То есть вот этот. И видим, что здесь есть обращение к папочкетест. И дальше есть зашифрованное, закодированное название самого файла. Название самого файла у нас динамическое, да, потому что мы его уже получаем с предыдущих шагов, но вот этот непосредственный а кусочек, он у нас уже сохранился, потому что мы работаем с конкретной папкой, да, и, соответственно, мы не должны а его изменять. Соответственно, мы возвращаемся сюда, да, и говорим: "Мы хотим сходить вот сюда". Да, для того, чтобы получить эту ссылку. Но вот сюда нам нужно вставить конкретный, а, конкретное имя файла, да. Соответственно, мы можем прокинуть вот сюда имя, да, и здесь, соответственно, а каждый раз, так как мы заберём, берём это из Split out, сюда будет прокинуто имя, которое мы получили, да, сколько бы мы имён не получили. Так, нам нужны нужно послать те же самые хедеры. Да, мы их делали уже в прошлый раз. Давайте я быстро без комментариев их проставлю обратно. Так, мы проставили а наши хедеры, и теперь нам ничего не мешает попробовать этот шаг запустить. Так, ошибочка. Нам пробельчик тут явно не нужен, потому что название сразу после слэша. запускаем. Вот. И смотрите, мы получили две ссылки, потому что у нас было два файла а в Яндекс-диске. Если мы сейчас с вами заберём вот эту ссылку и откроем её просто в браузере, по этой ссылке скачивается файл. Открываем файл. Отлично. Это ровно тот файл, который мы хотим забрать с Яндекс-диска. Мы уже близки к тому, чтобы, а, забрать этот контент. Теперь этот контент надо отдать в сам конструктор N8N. Для этого нам понадобится ещё один HTTP запрос, да, который мы можем так и назвать, да, на самом деле здесь нам уже ничего особенно не нужно, кроме того, как забрать непосредственно сам саму ссылку, да? Если мы пошлём getзапрос с этой ссылкой, мы получим, а, бинарник, потому что эта ссылка а не требует никаких хедеров. Пробуем. Отлично, мы получили два бинарника. То есть это те самые два файла. Если у вас будет 50-100.000 файлов, он вам вернёт 50-100.000 файлов. Что нам требуется дальше? Дальше нам требуется вот этот контент поместить в нашу векторную базу знаний. сначала векторизовать и потом её сохранить. Вот там нам понадобится, а, добавить такой элемент, как loop, потому что у нас файлов может быть несколько, да? Соответственно, мы добавляем loop, а бач size, мы уже видим, что здесь на вход пришли наши два файла. Бач size - это один, то есть мы будем обрабатывать по одному файлу, а пока уберём вот эти две штуки, они нам не нужны, и добавим новую. По каждому проходу цикла мы хотим пойти в векторную базу знаний и сохранить контент этого бинарника в нашу базу знаний. Так как мы пользуемся superbase, да, идём сюда. И ну тут есть Base Vector Store, отдельный action. И мы хотим add documents to vector store. Добавляем это сюда. Соответственно, superabase account. А, несмотря на то, что мы только что создали с вами аккаунт для постгреса, сейчас мы работаем с векторной базой знаний. И это некоторая надстройка, это back, ну, как сервис для векторизации, хранения векторных знаний. И здесь другие кренналы. Соответственно, вам нужно будет пойти, нажать New Credential и здесь прописать host и ваш секрет. Что для этого нужно? Мы идём обратно в Supase. Возвращаемся в настройки. И здесь есть дата API. Соответственно, ваш хост URL забираете, копируете, вставляете прямо сюда. А ваш секрет, вот он, ваш секрет, нажимаете, потом копируете и вставляете в ваш секрет. Так как у меня уже есть креды, я не буду нажимать save, да, я их буду использовать. Соответственно, что мы здесь делаем? Мы здесь хотим, а, указать, а, в какую таблицу векторную мы будем сохранять все наши векторные, а, данные. А для того, чтобы создать эту таблицу, нам нужно нажать вот тут документы docs. И у N8N хорошая документация, как нужно создавать э векторную таблицу. Вот есть start. Нажимаем. И здесь вы увидите, а, sequel, да, то есть SQL запрос. А на самом деле я не буду ничего объяснять, как это работает. Вы просто забираете этот запрос, возвращаетесь в вашу базу данных. И здесь у вас есть Sequel Editor. Нажали, вставили, а этот запрос, нажали RAM, и после этого у вас создастся специальная таблица и другие методы к ней, которые позволяют работать с векторными данными. Вы после того, как нажали Run, если вы вернётесь в Table Editor, вы увидите, что у вас создалась пустая таблица Documents. Это и есть векторная таблица, потому что мы видим, что тут есть метод данные, есть имбединги, то есть сами векторы. Отлично. Так как она называется documents, нам её нужно выбрать прямо здесь. Так, выбираем documents и, в принципе, добавляем сюда сами имбединги, да, мы это уже делали, а, минут 20 назад. Мы выбираем также, а, ваш Open AI акаун и embeding 3 small. выбрали здесь и добавили а-а datoader. Data loader. А, соответственно, нам нужен а бинарный, да, потому что мы-то помним, что мы получили бинарники из Яндекс-диска. Соответственно, указываем бинарники и текстпITter. Текitter указываем, а, chunk size 600. Это как раз размер чанков, который будут образовываться. А, и здесь укажем 50. размер чанков, который будут образовываться. И, а, чанap - это наложение чанков друг на друга. Мы про это подробно говорили в первом видео. А, посмотрите, вот здесь будет где-то по ссылочке а указано. Так, и в принципе после этого на мы готовы а зациклить эту историю, да? То есть зациклили. Соответственно, каждый раз, когда мы получим эти файлы, мы каждый поместим в векторную базу знаний и вернёмся. А, будем делать до тех пор, пока не пройдём по всем файлам. Ну что, мне кажется, нам осталось только нажать, а, нажать кнопочку Test workflow. И если всё будет правильно, здесь в документах у нас появятся векторы, то есть долговременная память а самого агента. Нажимаем тест. Так, идёт, идёт. Сейчас он забирает файлы. Да, скачал и пошёл. Соответственно, он сейчас пробежал два раза, на третий вышел. А что будет, если мы вернёмся сюда, нажмём обновить. Мы видим конкретные чанки текста, на которые он разбил наши файлы. И дальше мы видим методанные. И после этого мы видим, а сами эмбединги, которые он создал. Прекрасно. На самом деле, теперь у нас есть возможность протестировать, каким образом это работает. Если мы откроем аа наш Яндекс-Диск, да, например, захотим спросить что-то, а, специфическое по нашей информации, допустим, мы откроем а цены, а файл, который называется ценные сотрудники, да, и мы увидим тут какую-нибудь таблицу из цен, например, тюльпаны, хризаонтемы, пионы, да? Теперь мы можем выполнять очень специфические действия с этой, а, базой знаний. Возвращаемся в наш агент, а, и подключаем это как tool, да? То есть мы подключаем ту же самую векторную базу знаний, векторную, да, используем те же самые креншены, но теперь уже на чтение. Имя, да, мы зададим Vector Store. Это именно имя, инструмента, который будет пользоваться сам агент, чтобы понимать, нам нужно обращаться в векторную базу знаний либо не нужно. И desриption будет вот такой. То есть это тул, из которого ты можешь забрать все необходимые данные. Откуда мы забираем? Да, так как мы, а, храним всё наш, всё наше добро векторизованное в табличке документы, выбрали здесь лимит четыре - это сколько он чанков будет оттуда получать. И осталось добавить имбединг, да, сам мы это уже делали несколько раз, опять добавили тот же самый Open AI аккаун. И по сути всё. Теперь мы можем спросить очень специфический вопрос, который требует наших специальных знаний, которые хранятся в Яндекс-Диске, и попробовать, каким это, каким образом это работает. То есть мы открываем чат, обновляем, соответственно, session ID а обновился и спросим: "А я, ну, хотел бы купить а букет из, скажем так, пяти ро красных, а десяти а пионов, что у нас какие ещё там были цветочки и ээ лилии, да? И, скажем, там должно быть, а, там четыре лилии. А во сколько мне обойдётся этот букет? Так, смотрим, что происходит сейчас. Он обращается в векторную базу знаний, что-то вычисляет и подготавливает нам ответ. Сейчас мы его дождёмся. Так, смотрите. Красная роза, пион лилия, пять красных розонов по 250, 4 лилии по 800. Ваш букет будет стоить 4.000 руб. Что только что произошло? Во-первых, когда мы его о чём-то спросили, а он обратился в постгрес, да? То есть он, соответственно, посмотрел всю историю нашей переписки, её не было. И после этого он несколько раз обратился в нашу векторную базу знаний и извлёк оттуда конкретные кусочки информации, которые соответствуют нашему запросу. Соответственно, мы очень мало потратили а денег на сам запрос, да? То есть мы не обращались ко всем нашим документам, которые сейчас хранятся а на Яндекс-диске, да, а вытянули оттуда прямо релевантную информацию, отдали её агенту, он сформировал нам ответ на основе а этой информации. Этот шаблон лежит будет лежать в Telegram-канале, в бесплатном Telegram-канале. Telegram-канал в описании. Обязательно подписывайтесь на этот Telegram-канал и на YouTube канал, потому что здесь много всего интересного происходит. И до скорых встреч.