Как Построить ИИ Агента с Яндекс Диском и Supabase n8n Пошагово (Rag, Яндекс Диск, Supabase, n8n)

В этом видео я пошагово покажу, как создать AI-агента с поддержкой RAG (Retrieval-Augmented Generation) в n8n, который работает с Яндекс Диском и Supabase. Что особенного в этом уроке? Файлы хранятся на Яндекс Диске, а векторные эмбеддинги — в Supabase, и всё это связано в едином автоматизированном процессе. Я покажу, как агент получает доступ к документам, извлекает из них информацию и отвечает на вопросы — полностью автономно. Идеальное решение, если вы хотите подключить своего агента к Яндекс Диску без лишней возни.

*пРЯМАЯ ССЫЛКА НА ВИДЕО https://www.youtube.com/watch?v=NcBHNLuqc7c
**пЕРЕСКАЗ ВИДЕО СДЕЛАЛА НЕЙРОСЕТЬ https://300.ya.ru

Расшифровка видео

Поиск по видео
0:00
Сегодня мы строим агенты, которые умеют работать с Яндекс-диском, забирать оттуда данные, помещать их в векторную
0:06
базу знаний и ориентироваться на эти знания как на свою долговременную память. При этом мы ещё и добавим ему
0:12
кратковременную память для того, чтобы он помнил историю нашей переписки. Так,
0:17
ну что,
0:22
дружок, теперь ты умеешь пользоваться
0:29
Яндекс диском? Смотрим, как он работает, и выдаёт нам ответ. Привет,
0:36
дружок. Да, я умею работать с Яндекс-диском. Это ли не прекрасно? Так, давайте сразу перейдём к делу и
0:43
посмотрим, каким образом будет устроен наш проект. Мы создадим себе Яндекс-Диск, на который поместим несколько документов, научимся забирать
0:50
контент этих документов и научимся забирать эти документы, разделять их на чанки и помещать в нашу векторную базу
0:56
знаний. Сегодня мы будем работать с Superbase. Это интересное open source
1:02
решение. Сегодня мы поработаем с ним в облаке, но впоследствии, если вам это будет нужно, вы сможете развернуть его
1:08
на своих серверах, а принцип работы не изменится. Это некоторая надстройка над постгрес базой знаний, в которой мы
1:15
можем хранить и регулярные данные, и ещё и векторизованные данные, которые может читать агент. Соответственно, эагент
1:22
сможет забирать оттуда знания и отвечать нам на основе этих знаний. Но при этом
1:28
каждый раз, когда пользователь будет спрашивать какой-то вопрос, мы будем забирать этот вопрос и ответ, который
1:35
нам дал ассистент, и сохранять его в этой же самой базе знаний, как историю нашей переписки. Таким образом, агент
1:41
сможет ориентироваться на то, о чём мы только что поговорили. Так, ну что, а как всегда, мы начинаем нашу работу в
1:48
сервисе N8N. А вам необходимо будет перейти на сайт N8Niio, нажать get
1:55
started и создать ваш аккаунт. Мы это делали уже не неоднократно в прошлых видео. Здесь сложного ничего нету. После
2:01
того, как вы создадите а ваш аккаунт, вы окажетесь на а вот этой странице. У вас
2:07
здесь не будет ни одного проекта. И всё, что вам а нужно будет сделать — это нажать кнопку Create Workflow. После
2:13
этого мы готовы создавать Workflow. Итак, у нас агент будет состоять опять
2:18
из двух частей. То есть первая часть — это загрузчик из Яндекс-Д в векторную базу знаний. Вторая часть — это сам
2:25
агент, который ориентируется на то, что мы только что загрузили, и отвечает нам на вопросы. Я предлагаю в этот раз
2:31
начать с самого агента. Он будет довольно простой. В этот раз нам а
2:36
понадобится чат, который встроен прямо в сервис N8N. Мы создадим себе новый
2:42
чатригр. И, в принципе, здесь нам ничего не нужно делать. Этот чаттриггер мы сразу же помещаем к, а, подключаем к
2:51
яагенту. Вот. И в этом агенте мы указываем, что он подключён к
2:56
чат-триггеру и ожидает некоторый Jason на вход. Это всё базовый функционал,
3:02
ничего здесь не меняем. Подключаем модельку Open AI. Мы ей пользуемся
3:08
регулярно. Вы нажимаете сюда. А, и здесь вам нужно будет подключить ваш Open AI
3:13
аккаунт. А вам нужно будет нажать здесь create new credential и вставить IP
3:18
ключ, который а вы получите на сайте Openi. Мы делали это в первом видео в
3:24
самом. Соответственно, посмотрите, здесь ничего сложного, просто залогинились в сам сервис Open AI, забрали апи ключ,
3:30
вставили сюда, и, в принципе, больше вам ничего делать и не понадобится. У меня уже есть свой аккаунт, соответственно, я
3:37
его здесь подключаю. Вот. И самое интересное начинается сейчас, да, нам нужна память,
3:43
и мы хотим использовать в качестве памяти нашу Pastgress базу знаний.
3:48
Поэтому давайте нажмём плюсик здесь и выберем Pastgress. И сейчас нам нужно будет подключить
3:56
Pastgress, а, то есть ввести её кренлы для того, чтобы наш агент начал работать
4:02
с этой базой знаний. У меня уже есть аккаунт, но мы сейчас вместе с вами подключим, потому что делаем это в первый раз. Нажимаем Create New
4:09
Credential. И вот здесь может быть чуть-чуть, наверное, пугающий экран, потому что уж слишком много тут всего
4:15
происходит. Но на самом деле ничего сложного здесь быть не должно. А давайте, а подключимся. Что мы делаем
4:23
для этого? Мы идём на сайт superabase.com, да, и нажимаем здесь get
4:31
start или start for free. Это база, которая имеет некоторый бесплатный
4:37
usage, да. Соответственно, что мы здесь делаем? Мы задаём название нашей организации. Зададите какую-то свою, тип
4:44
персональный и pricingп plan. Да, бесплатный. Всё. И после этого вы нажмёте create organization и попадёте в
4:51
вашу новенькую организацию. Больше от вас там ничего не потребуется. У меня уже есть организация, поэтому как только
4:58
вы пройдёте путь, который мы только что обсудили, вы окажетесь вот на этом
5:03
экране. Supase — это интересное решение, как я уже сказал, это open source
5:08
решение, которое вы впоследствии сможете развернуть на своём сервере. И также у неё есть возможность попользоваться в
5:14
облаке, что мы делаем сейчас. А, то есть они нам формируют нашу организацию, наш
5:19
доступ к базе знаний. Соответственно, мы сейчас прямо к ней подключимся. Чтобы подключиться к Postgress аа таблицам,
5:27
нам нужно пойти в Project Settings. И здесь мы увидим кнопочку, которая называется connect. Нажимаем кнопочку
5:34
connect и увидим вот такую страшную, а, страшную картину, да. Но на самом деле
5:41
здесь нам уже выданы все наши криенлы, которые мы можем использовать для того, чтобы подключиться к агенту. Так, здесь
5:49
выбираем тип postgress sequel и смотрим вот на эту строчку в секции transaction
5:55
puller. А здесь уже есть наш host, то есть сH — это наш host, с/p — это порт,
6:02
d — это database postgress и U — это наш usеer. Это ровно то, что требует агент в
6:08
N8N для того, чтобы мы подключились. Так. А, забираем
6:15
хост, копируем, идём, возвращаемся и вот сюда вводим хост. Хост здесь. Так, user
6:21
юзер там тоже был, поэтому идём, забираем полностью юзера. А, подключаемся. Пароль. Пароля
6:30
здесь нет, я вам забыл сказать. Сейчас мы даже вернёмся, а, назад. Вот здесь, когда вы нажмёте новый а проект, а у вас
6:39
при создании самой организации у вас сам сервис просит: «Введите пароль
6:45
database». Это ваш персональный пароль, вы его, в принципе, сами придумываете.
6:50
Обязательно его сохраните, да, потому что это как раз тот самый пароль, который будет впоследствии использоваться для подключения к базе
6:56
Pastgess. А у меня он же есть. Я проходил этот путь, да. Соответственно, мы возвращаемся в мою организацию, да, в
7:03
мой проект. Вот пароль мы вводим, а, который мы создавали сами. Вот. И порт,
7:11
да, нам осталось ввести порт. Порт у нас тоже здесь, а, указан
7:18
сp6543, да? Взяли, вставили сюда порт. После этого вы нажмёте, а, save, и ваша
7:25
база знаний подсоединится. Соответственно, у меня она подсоединена, поэтому я нажимать тут не буду
7:31
ничего. Так что дальше? Дальше постгрес подключён. И на самом деле осталась
7:37
только одна настройка. Сколько мы хотим хранить в контексте, а переписок, то
7:42
есть сколько ответов наших э вопросов и ответов ассистента мы хотим аа каждый
7:49
раз отдавать ассистенту. А когда мы что-то его спрашиваем, на самом деле мы
7:54
уже подключили а нашу базу. И, соответственно, что мы можем попробовать? Сейчас я вернусь в свою
8:01
датабазу, пойду вот сюда в table editor, удалю вообще отсюда всё, чтобы
8:09
аа частота эксперимента сохранялась.
8:14
Документы тоже удалю. Вот совершенно пустая база знаний. Как
8:22
создаются эти таблички, вы сейчас увидите. Пока не пугайтесь. Мы всё пойдём пройдём по шагам, чтобы было
8:28
понятно всё в нюансах. А мы сейчас можем уже инициировать чат. Э если нажмём на
8:34
кнопочку Open Chat, это встроенный чат в NVM. А, говорим
8:40
привет и смотрим, как работает, да? То есть мы смотрим, что нам он ответил же:
8:45
«Привет, как я могу тебе помочь сегодня? И при этом он сходил в Pstgressat. А
8:51
memory. Это что значит? Если мы сейчас вернёмся в нашу CPAS базу, то посмотрим,
8:57
мы видим айдишки, видим session ID. Это session ID чата. То есть, а вот вот этот
9:04
самый ID, он помещён уже в нашу базу знаний и сам а контент. То есть мы видим, что спросил а пользователь, то
9:12
есть юзер, и что ответил ассистент. Для чего это нужно? Ну я вам сейчас покажу.
9:17
А я спрошу, знаешь ли ты, как меня
9:23
зовут? Скорее всего, а, к сожалению, я не знаю, да, если я сейчас скажу:
9:29
«Меня зовут Илья». Так, привет, Илья. Да, и если
9:36
теперь его спрошу, как меня зовут, то теперь, скорее всего, он знает. Тебя
9:43
зовут Илья. Откуда он это знает? Он знает, потому что история нашей переписки, если мы сейчас
9:49
обновимся, хранится в этом в этой базе. И он по session ID, по ID нашей
9:55
переписки получает контент, который мы уже обсуждали. Прекрасно. Теперь, а, для
10:00
того, чтобы он работал ещё круче и взаимодействовал с с Яндекс-диском, нам нужно подключить к нему векторную базу
10:06
знаний. Ну, как мы знаем уже из прошлых видео, прежде чем её подключить на чтение, соответственно, надо сначала её
10:12
создать на а-а запись. То есть мы должны сейчас создать отдельный флоу, как мы
10:17
забираем из Яндексдиска информацию, помещаем её в векторную базу знаний и,
10:23
а, после этого читаем с помощью агента. Так, ну что, начнём параллельный flow.
10:28
То есть я прямо здесь, в этом же проекте, останусь. Вот мы тут нажмём add another trigger, да, и вот тут trigger
10:34
manually выберем. Соответственно, вот он нам добавился наш триггер. И теперь нам
10:40
нужно по тому по моменту нажать на триггер пойти в наш ЯндексДиск и забрать
10:46
оттуда файлы. А это не такая тривиальная задача, потому что в сервисе N8N а нету
10:52
готовых экшенов для работы с Яндекс-диском, но у Яндекс-диска есть AP. Это не очень будет сложно, я вам всё
10:58
покажу. Зато один раз научимся и после этого будете использовать. Чтобы активировать всю эту историю, мы
11:06
идём на ЯндексДиск, нажимаем перейти в диск, и, соответственно, у нас диск уже
11:13
есть, да, какой-то. А, запомнили? Классный факт. Потом идём опять туда же
11:19
и, а, вводим ЯндексДиск AP. Ввели AP-
11:25
диска технологии Яндекса. Нажали сюда. Нас интересует REST IP. Если вас
11:30
интересует, что такое IP, как с этим работать, обязательно пишите в комментариях, а мы это обязательно
11:35
обсудим. Это довольно мощный инструмент, на котором, в принципе, держится коммуникация между разными сервисами и
11:44
приложениями. Идём сюда. Вот. И у нас тут есть инструкция. Получите ваш токен.
11:49
Да, потренируйтесь на полигоне. Получить ваш токен. Мы это ещё успеем сделать, когда нам нужно будет продуктовый AP.
11:55
Его, этот токен, можно получить тестовый для того, чтобы посмотреть, как это всё работает. Для этого нужно найти, а,
12:01
кнопочку полигон, нажать сюда. И мы видим, что у нам уже Яндекс
12:06
сформировал некоторый токен, да, и рассказывает, какие, в принципе, функции а есть у Яндекс-диска. Нас интересуют
12:14
файлы и папки. Мы же хотим взять какую-то папку, да, и прочитать оттуда файлы. Нажимаем сюда и ищем получить
12:20
метаинформацию о файле и или каталоге. Так, интересно. Мне кажется, нам это и
12:26
нужно, да? Соответственно, кликаем сюда, и он нам говорит, а какие здесь есть базовые а параметры? Здесь опять же есть
12:34
много базовых параметров, а но только один необходимый. Это путь к каталогу,
12:39
от которого мы хотим, а, получить файлы. Мы возвращаемся на на ЯндексДиск, нажимаем создать и нажимаем создать
12:46
папку. Нажимаете и создаёте себе папку. Как только вы создали папку, внутрь
12:51
проваливаем все этой папки и там дальше уже будем создавать документы. Но пока вот мы создали папкуте. Можем ли мы по
12:58
нашему токену обратиться к папкетест? Попробуем.
13:03
Пишем тест. Именно тот самый путь, тот самое название, с которым мы её
13:10
создавали, и нажимаем попробовать. Так, он нам говорит курл та-та. Тело ответа. Смотрите, он нашёл
13:18
нашу папку и внутри папки он нашёл, там есть два файла. Давайте посмотрим. Есть тут акции, режим работы и цены и
13:25
сотрудники. То есть, смотрите, он нашёл а всю эту историю, да, и как будто бы
13:32
это ровно то, что нам нужно. Нам нужны эти файлы для того, чтобы потом смочь получить, а, доступ к контенту этих
13:39
файлов. Теперь нам нужно научить нашего, а, ассистента делать то же самое, да?
13:45
Для этого мы идём обратно в NCMN. И так как у нас нету готовых экшенов для
13:52
этого, нам нужно как раз послать этот самый HTTP запрос. Ровно то же самое, что мы сделали на диске, на ЯндексДиске,
13:58
на их сайте. Мы то же самое можем сделать и отсюда. Нажимаем сюда,
14:03
нажимаем HTTP, http request. Мы возвращаемся сюда и смотрим,
14:09
что это был за requквест. Это был get request, у которого были два хедера. header, а, который назывался Application
14:16
Type, а, вернее, accept со значением Application JSON. Ещё был header
14:22
авторизации, а, и ещё непосредственный урл, по которому мы послали а наш
14:27
запрос. Это всё прямо то, что нам нужно. Идём обратно. Мы говорим getзапрос. Мы только что выяснили, что это был
14:33
getзапрос. Урл. Забираем отсюда урл. Вот он наш
14:39
урл. Сюда вставляем. Аутентификация. Мы не будем её здесь прописывать, но
14:45
пропишем два хедера, которые были, а, в самом запросе, в примере. Нажимаем
14:50
sendaders, да, и здесь указываем два хедера. Первый headдер — это
14:57
accept. Так, попробуем скопировать.
15:02
Так, с имя вставили. Value application jon. Отлично.
15:11
Вставили. Ещё один параметр добавляем. Это сама а авторизация, да? То есть
15:17
взяли авторизацию и сам value забираем
15:24
отсюда. Полностью забрали весь value, вставили и
15:31
пробуем. Что у нас тут получается? Идёт запрос. Идёт. Идёт.
15:38
И смотрите, мы получили ровно то же самое, что получили в примере. Это ли не прекрасно? Да. Соответственно, мы уже
15:45
поняли, что, в принципе, к файлам мы можем получить доступ. Вот он путь непосредственный к файлам, да? То есть
15:52
имя непосредственно файла. Отлично. Это то, что нам нужно. Но здесь есть нюанс. Мы получили эту информацию, и внутри
15:57
этой информации содержится массив, да? То есть это массив, состоящий из двух
16:03
элементов, потому что файла было два. Соответственно, нам для того, чтобы дальше работать с этим массивом, нужно
16:10
разбить его на отдельные элементы для того, чтобы был нам было проще работать. Чтобы разбить массив на дельные
16:16
элементы, а у N8N есть специальный метод, который называется Splitout, разделение, да? И сейчас в этом
16:23
разделении мы должны указать, а с чем мы работаем, что мы будем разделять. Мы видим, что у нас есть embeded внутри
16:31
есть item ноль, да, item один. Отлично. Нам нужно как раз забрать массив items
16:36
для того, чтобы его разделить на два а элемента. А, забираем items. Всё, он
16:42
прокинулся сюда. И теперь мы можем протестировать этот шаг. Тест. Отлично.
16:48
Смотрите, что произошло. Если мы включим табличку, он разбил, а, всю эту историю
16:55
на два элемента. Вот видите, второй а второй вторая строка. Мы видим, что
17:00
отдельно он забрал ценные сотрудники, отдельно забрал акции и режим работы.
17:06
Это два докса. Отлично. Теперь мы готовы начать извлекать информацию а из этих
17:13
файлов. Здесь несколько, скажем так, специфический способ извлечения, да,
17:19
информации, потому что для того, чтобы сначала её извлечь, нам нужно, а, и мы
17:25
идём обратно в документацию, да, чтобы её извлечь, нам нужно сначала сгенерировать ссылку на скачивание
17:33
файла. Ну, нужно так нужно. А, соответственно, будем это делать. Соответственно, нам понадобится
17:38
следующий шаг здесь, который будет называться получить ссылку, да.
17:44
Соответственно, это следующий, а, HTTP request, в котором мы также проставляем
17:49
метод get и смотрим, как он работает. Download.
17:55
Нажимаем, смотрим, что нам нужно сделать. У нас required, да, это путь к
18:00
ресурсу. Это путь к ресурсу — это само имя, а, файла, а, для которого мы
18:06
формируем ссылку. Так как у нас уже есть, да, какие-то тестовые, а, знания,
18:12
которые мы получили тут. Да, мы можем отсюда забрать имя. Вот, например, акции
18:19
и режим работы Docx X. А, идём, пробуем. Вставляем сюда акции, режим работы docx.
18:28
Нажимаем попробовать. И смотрите, не удалось найти запрошенный ресурс. Да, ошибка
18:34
была связана с тем, что нужно указывать полный путь до файла, то есть из корневого каталога. А он у нас лежит в
18:41
йте- тест. И дальше акция, режим работы. Если мы здесь нажмём на, а,
18:47
попробовать, смотрим. Вот. И в теле ответа он нам отдал как раз ссылку, по
18:53
которой мы сможем скачать этот файл и получить его контент. Соответственно,
18:59
выучили. И теперь мы забираем, да, мы это уже с вами делали. Нам с вами нужно
19:04
внимательно посмотреть на сам урл запроса, да? То есть вот этот. И видим,
19:09
что здесь есть обращение к папочкетест. И дальше есть
19:14
зашифрованное, закодированное название самого файла. Название самого файла у нас динамическое, да, потому что мы его
19:20
уже получаем с предыдущих шагов, но вот этот непосредственный а кусочек, он у
19:27
нас уже сохранился, потому что мы работаем с конкретной папкой, да, и, соответственно, мы не должны а его
19:33
изменять. Соответственно, мы возвращаемся сюда, да, и говорим: «Мы хотим сходить вот сюда».
19:39
Да, для того, чтобы получить эту ссылку. Но вот сюда нам нужно вставить
19:45
конкретный, а, конкретное имя файла, да. Соответственно, мы можем прокинуть вот
19:50
сюда имя, да, и здесь, соответственно, а каждый раз, так как мы заберём, берём
19:57
это из Split out, сюда будет прокинуто имя, которое мы получили, да, сколько бы
20:02
мы имён не получили. Так, нам нужны нужно послать те же самые хедеры. Да, мы
20:08
их делали уже в прошлый раз. Давайте я быстро без комментариев их проставлю
20:21
обратно. Так, мы проставили а наши хедеры, и теперь нам ничего не мешает
20:27
попробовать этот шаг запустить. Так, ошибочка. Нам пробельчик тут явно не нужен, потому что название сразу после
20:33
слэша. запускаем. Вот. И смотрите, мы получили
20:38
две ссылки, потому что у нас было два файла а в Яндекс-диске. Если мы сейчас с
20:44
вами заберём вот эту ссылку и откроем её просто в браузере, по этой ссылке скачивается файл. Открываем файл.
20:51
Отлично. Это ровно тот файл, который мы хотим забрать с Яндекс-диска. Мы уже близки к тому, чтобы, а, забрать этот
20:58
контент. Теперь этот контент надо отдать в сам конструктор N8N. Для этого нам
21:04
понадобится ещё один HTTP запрос, да, который мы можем так и назвать,
21:12
да, на самом деле здесь нам уже ничего особенно не нужно, кроме того, как
21:19
забрать непосредственно сам саму ссылку, да? Если мы пошлём getзапрос с этой
21:25
ссылкой, мы получим, а, бинарник, потому что эта ссылка а не требует никаких
21:30
хедеров. Пробуем. Отлично, мы получили два бинарника. То есть это те самые два
21:37
файла. Если у вас будет 50-100.000 файлов, он вам вернёт 50-100.000 файлов.
21:43
Что нам требуется дальше? Дальше нам требуется вот этот контент поместить в
21:49
нашу векторную базу знаний. сначала векторизовать и потом её сохранить. Вот там нам понадобится, а, добавить такой
21:56
элемент, как loop, потому что у нас файлов может быть несколько, да? Соответственно, мы добавляем loop, а бач
22:02
size, мы уже видим, что здесь на вход пришли наши два файла. Бач size — это один, то есть мы будем обрабатывать по
22:08
одному файлу, а пока уберём вот эти две штуки, они нам не нужны, и добавим
22:14
новую. По каждому проходу цикла мы хотим пойти в векторную базу знаний и сохранить
22:21
контент этого бинарника в нашу базу знаний. Так как мы пользуемся superbase,
22:27
да, идём сюда. И ну тут есть Base Vector Store, отдельный action. И мы хотим add
22:33
documents to vector store. Добавляем это сюда. Соответственно, superabase account. А, несмотря на то, что мы
22:39
только что создали с вами аккаунт для постгреса, сейчас мы работаем с векторной базой знаний. И это некоторая
22:46
надстройка, это back, ну, как сервис для векторизации, хранения векторных знаний.
22:53
И здесь другие кренналы. Соответственно, вам нужно будет пойти, нажать New Credential и здесь прописать host и ваш
23:01
секрет. Что для этого нужно? Мы идём обратно в Supase. Возвращаемся в
23:06
настройки. И здесь есть дата API. Соответственно, ваш хост URL забираете, копируете,
23:13
вставляете прямо сюда. А ваш секрет, вот он, ваш секрет, нажимаете,
23:19
потом копируете и вставляете в ваш секрет. Так как у меня уже есть креды, я не буду нажимать save, да, я их буду
23:26
использовать. Соответственно, что мы здесь делаем? Мы здесь хотим, а, указать, а, в какую таблицу векторную мы
23:33
будем сохранять все наши векторные, а, данные. А для того, чтобы создать эту
23:40
таблицу, нам нужно нажать вот тут документы docs. И у N8N хорошая
23:46
документация, как нужно создавать э векторную таблицу. Вот есть start.
23:52
Нажимаем. И здесь вы увидите, а, sequel, да, то есть SQL запрос. А на самом деле
23:58
я не буду ничего объяснять, как это работает. Вы просто забираете этот запрос, возвращаетесь в вашу базу
24:04
данных. И здесь у вас есть Sequel Editor. Нажали, вставили, а этот запрос,
24:10
нажали RAM, и после этого у вас создастся специальная таблица и другие методы к ней, которые позволяют работать
24:17
с векторными данными. Вы после того, как нажали Run, если вы вернётесь в Table Editor, вы увидите,
24:26
что у вас создалась пустая таблица Documents. Это и есть векторная таблица, потому что мы видим, что тут есть метод
24:32
данные, есть имбединги, то есть сами векторы. Отлично. Так как она называется documents, нам её нужно выбрать прямо
24:39
здесь. Так, выбираем
24:45
documents и, в принципе, добавляем сюда сами имбединги, да, мы это уже делали,
24:51
а, минут 20 назад. Мы выбираем также, а, ваш Open AI акаун и embeding 3 small.
24:58
выбрали здесь и добавили а-а datoader. Data
25:03
loader. А, соответственно, нам нужен а бинарный, да, потому что мы-то помним,
25:09
что мы получили бинарники из из Яндекс-диска. Соответственно, указываем бинарники и
25:16
текстпITter. Текitter указываем, а, chunk size 600. Это как раз размер
25:22
чанков, который будут образовываться. А, и здесь укажем 50. размер чанков, который будут образовываться. И, а,
25:29
чанap — это наложение чанков друг на друга. Мы про это подробно говорили в первом видео. А, посмотрите, вот здесь
25:36
будет где-то по ссылочке а указано. Так, и в принципе после этого на мы готовы а
25:45
зациклить эту историю, да? То есть зациклили. Соответственно, каждый раз, когда мы получим эти файлы, мы каждый
25:51
поместим в векторную базу знаний и вернёмся. А, будем делать до тех пор, пока не пройдём по всем файлам. Ну что,
25:57
мне кажется, нам осталось только нажать, а, нажать кнопочку Test workflow. И если
26:02
всё будет правильно, здесь в документах у нас появятся векторы, то есть долговременная память а самого агента.
26:09
Нажимаем тест. Так, идёт, идёт, идёт. Сейчас он забирает файлы. Да, скачал и пошёл.
26:16
Соответственно, он сейчас пробежал два раза, на третий вышел. А что будет, если мы вернёмся сюда, нажмём обновить.
26:24
Мы видим конкретные чанки текста, на которые он разбил наши файлы. И дальше
26:29
мы видим методанные. И после этого мы видим, а сами эмбединги, которые он создал.
26:36
Прекрасно. На самом деле, теперь у нас есть возможность протестировать, каким
26:43
образом это работает. Если мы откроем аа наш
26:48
Яндекс-Диск, да, например, захотим спросить что-то, а, специфическое по
26:54
нашей информации, допустим, мы откроем а
27:01
цены, а файл, который называется ценные сотрудники, да, и мы увидим тут какую-нибудь таблицу из цен, например,
27:07
тюльпаны, хризаонтемы, пионы, да? Теперь мы можем выполнять очень специфические
27:12
действия с этой, а, базой знаний. Возвращаемся в наш
27:20
агент, а, и подключаем это как tool, да? То есть мы подключаем ту же самую
27:26
векторную базу знаний, векторную, да, используем те же
27:31
самые креншены, но теперь уже на чтение. Имя, да, мы зададим Vector
27:38
Store. Это именно имя, инструмента, который будет пользоваться сам агент, чтобы понимать, нам нужно обращаться в
27:45
векторную базу знаний либо не нужно. И desриption
27:53
будет вот такой. То есть это это тул, из которого ты можешь забрать все необходимые данные. Откуда мы забираем?
28:01
Да, так как мы, а, храним всё наш, всё наше добро векторизованное в табличке
28:06
документы, выбрали здесь лимит четыре — это сколько он чанков будет оттуда получать. И осталось добавить имбединг,
28:13
да, сам мы это уже делали несколько раз, опять добавили тот же самый Open AI аккаун. И по сути всё. Теперь мы можем
28:21
спросить очень специфический вопрос, который требует наших специальных знаний, которые хранятся в Яндекс-Диске,
28:27
и попробовать, каким это, каким образом это работает. То есть мы открываем чат, обновляем, соответственно, session ID а
28:35
обновился и спросим: «А я, ну, хотел бы
28:40
купить а букет из, скажем так, пяти ро красных, а десяти а пионов, что у нас
28:47
какие ещё там были цветочки и ээ лилии, да? И, скажем, там должно быть, а, там
28:55
четыре лилии. А во сколько мне обойдётся этот букет?
29:01
Так, смотрим, что происходит сейчас. Он обращается в векторную базу знаний,
29:06
что-то что-то вычисляет и подготавливает нам ответ. Сейчас мы его дождёмся. Так,
29:12
смотрите. Красная роза, пион лилия, пять красных
29:17
розонов по 250, 4 лилии по 800. Ваш букет будет стоить 4.000 руб. Что только
29:24
что произошло? Во-первых, когда мы его о чём-то спросили, а он обратился в
29:30
постгрес, да? То есть он, соответственно, посмотрел всю историю нашей переписки, её не было. И после
29:35
этого он несколько раз обратился в нашу векторную базу знаний и извлёк оттуда конкретные кусочки информации, которые
29:42
соответствуют нашему запросу. Соответственно, мы очень мало потратили а денег на сам запрос, да? То есть мы не
29:48
обращались ко всем нашим документам, которые сейчас хранятся а на Яндекс-диске, да, а вытянули оттуда
29:54
прямо релевантную информацию, отдали её агенту, он сформировал нам ответ на
29:59
основе а этой информации. Этот шаблон лежит будет лежать в Telegram-канале, в
30:06
бесплатном Telegram-канале. Telegram-канал в описании. Обязательно подписывайтесь на этот Telegram-канал и
30:12
на YouTube канал, потому что здесь много всего интересного происходит. И до скорых встреч.

Поделиться: