📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Сделай ИИ агента в 100 раз умнее с помощью KAG

Владимир Карпухин58:23

Transcription

KAG — это лучший способ сделать вашего ИИ-агента умнее и точнее в 100 раз. В этом видео я покажу, как быстро создать граф знаний в KAG, загрузить туда документ, найти информацию в этом документе и сделать всё это за несколько минут. А ещё я расскажу, почему KAG, Knowledge Augmented Generation, лучше, чем RAG и Graph RAG.

На тему KAG очень мало информации в интернете, но я решил это изменить. План видео такой:

Видео про KAG. KAG — что такое KAG? Это первое, что мы разберём: что такое knowledge segmentation, как оно работает вкратце. Потом мы разберём, почему это лучше, чем RAG и Graph RAG. Разберём, как работает KAG более подробно, поймём, как им пользоваться, и установим его к себе на сервер. Ну, поехали.

KAG. KAG Knowledge Augmented Generation или KAG, я не знаю, как его называть. Это генерация, дополненная знаниями. Это фреймворк, предназначенный для логического рассуждения и ответов на вопросы в профессиональных предметных областях. Ничего непонятно, поэтому я написал вот. Что? Поехали. По порядку.

Обычный RAG. Обычный RAG. Мы разбирали, много про него говорили, есть ролики на канале, смотрите и так далее. Обычный RAG он тупо ищет инфу, мгновенно вытягивает её из библиотеки. Что такое библиотека? Это это вот очень упрощённое объяснение, пока что без сложных терминов. Вот прямо на пальцах объясняем. То есть он тупо достаёт информацию книжечки, да, информацию с книжечек в библиотеке, но остаётся проблема с контекстом и не связанными данными. Ориентируется только на векторное сходство. Есть ролик про RAG. Вот у меня стрелочка идёт вот сюда сюда. То есть вот у меня это из видео про Light RAG. Рассказываю, как работает обычный RAG. То есть просто текст преобразуется в вектор и сравнивается с векторами уже внутри векторной базы данных, а потом берёт ближайшие и вытягивает их. Если вам ничего непонятно сейчас было, тут у меня тайм-код где-то там, видео полный гайд на RAG там на 2 часа. Очень много информации. У вас никаких вопросов не останется, если вы его глянете. Если вы это знаете, то продолжаем.

Ну вот смотрите, допустим, у нас такой вопрос. Кстати, я вот старался, рисовал, как вам арт, мне нравится. Ну вот, допустим, у нас вопрос query. Query — это запрос на английском. Расскажи про Apple. И обычный RAG находит два чанка. Он находит чанк, а следующий, где написано то, что яблоко — это фрукт, на дереве растёт, потому что, ну, слово Apple и яблоко, они очень близки по векторному значению, это можно сказать одно и то же. И второй чанк, который он находит, это, например, то, что яблоко — это компания Apple. А непонятно вообще, о чём речь, да? Вот она описана проблема. То, что проблема, если в одной книге говорится про фрукт яблоко, а в другой про компьютер Apple, он может запутаться и принести обе книги. Он не понимает, о чём идёт речь. Он просто ищет похожие слова, но не смысл и логику. Ну да, и проблема тут с контекстом, с несвязанными данными — это проблема скорее несвязанных данных. Также остаётся проблема контекста, то, что в чанке нет полной информации, непонятно вообще, о чём идёт речь.

Потом у нас идёт Graph RAG, который я разбирал в прошлом ролике, тоже отличное видео, посмотрите. Он уже умнее, он с контекстом, он со связанностью данных. Проблем меньше. Вот видите, я специально нарисовал связанность данных. Есть сущности entities и отношения relationships. Тут я это не отобразил, извините. Ну, сейчас я его найду тут. Ну вот, да, из прошлого ролика про Light RAG. Сущность entities, то есть это вот такие вот кружочки и отношения — это вот эти вот рёбра, отношения между сущностями. Он решает многие проблемы, которые особенно есть в обычном RAG, но это всё равно поисковая система, он просто достаёт чанки. Да, там очень много всего применено, но, но это просто поисковая система, да.

А вот KAG. KAG или как Knowledge Augmented Generation — это уже next level. Это агент, профессиональный библиотекарь, который выстраивает план поиска, ищет, рефлексирует и, если надо, ищет заново. То есть это гораздо более мощная штука. Надеюсь, я вас заинтриговал. Здесь тоже используются графы, тоже используются сущности, отношения, тоже используются вектора, но здесь по-другому это выстроено, другая архитектура. Сейчас об этом поподробнее поговорим. И что получается? RAG — это поисковик. Graph RAG. Ну, как помните, это фреймворк. Допустим, вот мы, речь идёт про Light RAG, да, какой-нибудь. Это более умный поисковик, но всё же это поисковик. А KAG. KAG KAG — это полноценный агент, специально заточенный под поиск. Можно, конечно же, мудрить и строить тот же KAG самому, может даже в n8n, но зачем, если есть готовое решение, которое работает качественно. И у KAG есть супер крутой UI, это важно.

И смотрите, какая ситуация. Когда мы говорили про RAG, это понятно, мы его самостоятельно строим по сути. То есть это, ну, просто векторная база данных. Оттуда достаются чанки. Когда мы говорили про Graph RAG, там были Graph RAG фреймворки такие как Zep, а такие как Light RAG, такие как Graph RAG, их, короче, многое количество их. Ну, там ещё есть и другие фреймворки, определённое количество их существует. А Graffiti назывался не Zep — это компания. Ну, неважно. А RAG — это как бы тоже фреймворк, но проблема в том, то, что это конкретный фреймворк. То есть пока что, кроме этого решения KAG, я других не встречал. Это при том, то, что KAG появился как, давайте как буду называть. KAG появился давно, осенью 2024 года по меркам ИИ в прошлом веке. Это очень давно. И почему-то с тех пор, ну, никто не стремится сделать какое-то подобное решение. Хотя можно было бы, на самом деле. Потребность в этом есть, скажем так.

Что это за фреймворк? Вот это вот репозиторий на GitHub. Ссылка, естественно, будет где-нибудь там в Telegram-канале, скорее всего. KAG — конкретный фреймворк от компании Open SPG. KAG Knowledge Augmented Generation. Это китайская компания, которая сделала KAG. Информации про него в интернете реально вообще, ну, я очень мало видел. Может быть, где-то на китайском языке она есть, но на англоязычном YouTube я там три ролика нашёл про KAG. Но, по крайней мере, есть документация, есть вот репозиторий на GitHub, есть вот что-то, ссылка на WeChat. WeChat — это китайская соцсеть, самая популярная. Не настолько популярное решение, как там Graph RAG и всё остальное. Вот такой репозиторий. И что важно, у этого репозитория там есть сразу UI, user interface, прикольный, потому что вот мы разбирали, например, Light RAG в прошлый раз, там был user interface, а вот Graph RAG от Microsoft, который там user interface нет, и это как бы не круто, да. Ну, что-то не хочется такое. Хочется, чтобы он был, чтобы вы простили жизнь.

А теперь мы разбираем подробно, как работает KAG, почему это круто. У KAG, согласно его документации, я документацию специально скачал. Там были проблемы с тем, чтобы её нормально скачать. Я, короче, её скачал и оставлю у себя в Telegram-канале. Приходите, подписывайтесь. Можете закинуть её там в ноутбук LM, например, чтобы по ней найти какую-то дополнительную информацию. И, ну, и закиньте ещё туда ссылку на репозиторий, да, к примеру, который я только что показывал. Поехали.

Как работает KAG? Почему это круто? Есть три основных составляющих в KAG: есть KG Builder. Давайте как буду говорить. KG Builder, есть KG Solver, KG Model. KG Builder — это, а, получается, первая составляющая, которая отвечает за то, чтобы выстраивать как бы граф знаний. Ну, как его называть? Ну, граф знаний, да? То есть это когда мы загружаем документ, и он выстраивается вот в специальную систему, по которой потом можно будет эффективно искать информацию. KG Solver — это непосредственно искатель информации, это агент, который ищет информацию, умный, навороченный. То есть вот это два — это основные столпы. KG Model — это всё то, что является LLM-кой, а в большой языковой моделью в устройстве KAG в целом. То есть вот тут у нас в KG Builder задействуется LLM-ка, в KG Solver тоже задействуется LLM-ка. И вот KG Model — это она и есть. Ну и погнали подробнее про каждый из них.

Начнём с KG Builder. KG Builder. Смотрите, изначально у нас есть документ, он делится на чанки семантически. Что это значит? А вот написано, да, семантическое деление исходного файла на чанки на фрагментах. Это значит то, что получается не просто разорванные чанки. Как вы помните, когда мы делали RAG или вы делали RAG, у вас была явно проблема такая, то, что вы делите документ на чанки, а он обрезается на полуслова. И это не круто. Есть, конечно, всякие решения прямо внутри. Я видел, для того, чтобы делать семантическое деление на чанки, это тоже полезно, если вы делаете обычный RAG. Но смотрите, как тут это реализовано, да? То есть он делает логически завершённые чанки примерно одинаковой длины, чтобы каждый чанк был не рандомным отрывком текста, а осмысленным, понятным куском. Например, обычное деление на чанки как происходит, да? Оно просто вот так идёт. Типа: "Володя снимает про N8N". И всё, конец предложения, конец чанка. А вот семантическое деление на чанки, оно понимает то, что мысль не закончена и заканчивает мысль: "Володя снимает про N8N и не только". Делается это с помощью LLM внутри, по-моему, насчёт этого не уверен. Но как ещё в целом это можно сделать?

Потом, смотрите, мы разделили на чанки, и следующий этап — это вот они просто загружаются в векторную базу данных. То есть как обычно RAG работает, то есть чанки разделили, загрузились в векторную базу данных. Потом идёт следующее: извлечение информации. Это извлечение как бы сущностей и relationships, как они называются, рёбра, отношения. Вот только чуть по-другому, более мудрёно. Смотрите, LLM читает каждый чанк, который выделился фрагмент, и использует специальный инструмент Open IE. Это такая штука, это Open Information Extraction. Что он делает? Он находит в тексте три главных элемента. Они называются субъект, предикат и объект. Субъект — кто? Предикат — что сделал? И объект — с чем это связано. Это называется SPO триплеты, то есть SPO — это получается субъект. P — это предикат, O — объект. Всё, всё понятно. Вот вам наглядный пример: Кто Иван? Что сделал? Написал. Что написал? Книгу. Субъект у нас Иван. Предикат у нас написал, то есть что сделал. И объект — это у нас книгу. То есть понятно.

Потом идёт согласование. Этот этап называется knowledge alignment. Он склеивает дубликаты, там разбирает синонимы и прочее. То есть в обычном RAG тоже такая проблема возникала, в Light RAG у меня тоже такая проблема возникала. То есть очень, знаете, что у меня было? Вот прямо есть, например, квадрант, и я загружал транскрипцию своих роликов. А, ну я предварительно её готовил перед этим тоже через там LLM-ки, через ChatGPT, не помню, через что, через GML, по-моему. И он неправильно у меня слово "квадрант" расшифровал. То есть у меня было в одной транскрипции ролика вот так слово "квадрант" записано, а во второй нормально: вот так "квадрант". И у меня в итоге в Light RAG было две вот таких вот сущности: и "квадрант", и "квадрант". Там как бы тоже есть штука, которая занимается тем, чтобы удалять дубликаты и прочее, но она не такая эффективная. А вот здесь вот склеивание дубликатов, понимание синонимов, оно работает прямо гораздо более эффективно. Вот на вот пример есть, да: чанк "А.С. Пушкин", есть чанк "Александр Пушкин". Это склеивается в один чанк, чтобы не было лишней грязи. То есть он понимает: А.С. Пушкин, Александр Пушкин — понимает, что это одно и то же, и склеивает информацию. Это тоже важно, чтобы там не захламлять.

Потом он добавляет описание. LLM не просто извлекает "Пушкин", он также создаёт для этой сущности, для Пушкина, короткое резюме, summary, и описание, description. Это нужно, чтобы другие части системы всегда знали, о каком именно Пушкине идёт речь. Потому что бывает такое то, что в случае, если два разных Пушкина, например, да, однофамильца, они будут разными сущностями. То есть это тоже всё учитывается, и для них делается вот summary, description. Вот как раз другие части системы всегда будут знать, о каком имени Пушкина идёт речь. Имени, господи, о каком именно Пушкине идёт речь? Да, вот, потому что это может быть однофамилец, и KG Builder это учитывает. В чём разница между description и summary? А description — это описание, общая описательная информация, помогающая LLM понять точное значение экземпляра. А summary — это краткое содержание экземпляра. Ну, то есть вот Пушкина, да, например, в контексте исходного документа. Тут грань такая тонкая, но она есть. То есть разница. То есть здесь более общая инфа. Здесь именно в контексте документа.

Дальше это всё заносится в граф. Если что, вот я же тут всё отобразил, да? Вот он семантически делит на чанки, вектор database. Извлекли информацию, согласовали. То есть мы сделали вот согласование knowledge alignment, добавили описание, и вот загружаем в graph database. Смотрите, в graph database субъекты, объекты становятся сущностями entities. Субъект, объект у нас, к примеру, это вот Иван, объект — книга, да? А предикаты вот такие, как "написал", они становятся рёбрами или relationships. Вот специально перетащил из ролика про этого про Light RAG. Ну вот объекты, вот ээ эти edges, рёбра, relationships. Субъекты, объекты у нас остаются сущностями, вот, например, Володя, да? А а отношениями с рёбрами становятся предикаты становятся рёбрами. И что важно, они ещё ссылаются на свои исходные чанки. Сущности и, а, рёбра, сущности и отношения, скорее, давайте так будем говорить. Они ссылаются на свои исходные чанки, из которых они были извлечены. То есть вот на вот эти вот чанки, да, которые у нас выделились, да, на первом этапе. Вот тут вот. О, у меня что же такая штука есть? Что я не пользуюсь? Короче, они ссылаются на свои исходные чанки, из которых они были извлечены. Эти чанки лежат в векторной базе данных, как я показал, вот там наверху. И это называется взаимное индексирование. То есть на выходе получается структура знаний, привязана к исходному тексту чанкам. То есть они друг на друга ссылаются, да? Есть то, что находится в чанках, есть то, что находится в отношениях и сущностях. Они друг на друга ссылаются. Это тоже эффективно. Называется это взаимное индексирование, mutual indexing.

И вот про индекс, потому что, ну, мало ли, индекс — это как оглавление в книге для базы данных. Если искать нужную страницу без оглавления, надо листать всю книгу, а с оглавлением быстро находишь нужное место. В базе данных индекс помогает быстро найти записи, не перебирая всё подряд. Индексирование — это создание такого оглавления, индекса для данных. Это специальная структура внутри базы данных, которая содержит список значений и указывает, где в таблице хранится нужная информация. Благодаря индексам поиск данных становится намного быстрее, да, то есть они друг на друга ссылаются. Это круто работает.

KG Builder мы разобрали, то есть как происходит построение а базы данных, графа знаний, точнее, потому что здесь база данных как бы и векторная задействуется, и графовая. Neo4j, она, помню, называется. Она вот хорошо знакома. Я привык, как выглядят эти буквы. Вот это Neo4j, но я не часто это вслух произносил, поэтому я не помню, как это произносить правильно. То есть вы видите то, что тут уже есть разница с Graph RAG, то есть тут есть более мудрёные штуки, и есть подозрение, что это будет работать более эффективно, да, но и токенов, скорее всего, тоже будет больше тратиться.

KG Solver — это уже штука, чтобы искать. То есть это тот самый агент, который в этой базе данных ищет инфу. Мы сначала специально под него подготовили нашу не базу данных, давайте так говорить, подготовили для него граф знаний. И теперь мы под специально подготовленный граф знаний запускаем специального агента, который знает про этот граф знаний. А смотрите, как он работает. Он использует логическую форму, logical form, для декомпозиции запроса и выполнения гибридного поиска. KG Solver преобразует сложные вопросы, требующие нескольких шагов рассуждения, multi-hop queries, они называются, в последовательность чётких команд. Короче, преобразование запроса из обычного человеческого языка в последовательные специальные задачи. Он умный. Он реально умный. Это специальный агент, заточенный под поиск, и вам не надо его настраивать. Это готовое решение. Хотя на самом деле в developer версии, это мы разберём, когда будем сейчас ставить всё на сервер, там можно его настраивать.

И смотрите, какой у нас пример, да, сложный многошаговый запрос: "Как часто случалась чума в городе, где родился композитор концерта "Времена года" ОБ 3 номер 6?". Это, если что, название концерта, музыки, песни, я не знаю, как это назвать, произведение музыкальное. Он планирует сначала, план преобразует запрос в логическую форму. То есть KG Solver разбивает этот сложный вопрос на несколько простых шагов, используя логическую форму, logical form. Специальный язык команд, состоящий из функций retrieval, то есть поиск, sort — сортировка, math — математические выражения, и output — это вывод. Смотрите, как это происходит. То есть первый шаг: он ставит себе "найти композитора" и ставит вот такие штуки, да? Retrieval S = S1, а work "Времена года" OP3 номер 6. P = composer, O1 = person. Смотрите, что происходит. А, как я говорил, SPO триплеты, как вы помните, которые мы вот тут вот разбирали, где они? SPO триплеты. Так это они есть. То есть получается вот S — делаем субъект. Субъект — это у нас работа C [ __ ] OP36, то есть это произведение музыкальное. Предикат у нас composer, композитор. Объект у нас person, то есть человек. Вот так вот он посчитал нужным. Здесь он находит у нас Антонио Вивальди. Потом он ищет место рождения композитора. То есть, видите, он прямо взял запрос и разбил его на шаги. То есть первый шаг получил инфу. Ага. Сделал второй шаг. То есть он анализирует, он это уже полноценный агентка внутри системы, в RAG. В обычном RAG такого тем более нет. Мы, конечно, к обычному RAG, ну, подвязываем и агента, чтобы он сам это всё делал, но всё-таки это готовое решение. Понятное дело, то, что не не под всё это подойдёт, но в целом штука полезная.

Теперь он ищет место рождения композитора. То есть получается S берёт O1, объект один, то есть person, вот как было видно. Потом P предикат 2, это равняется birth place, то есть месторождение. И объект он выбирает place, получается Венеция, да? Найти количество случаев чумы в этом месте. Он ищет, получается, ищет количество случаев чумы в этом месте, но ничего не находит. И смотрите, что он делает. Он ничего не находит, и он рефлексирует. То есть система видит то, что ответ не получен, и запускает механизм рефлексии. То есть там специально стоит ещё элемент, который понимает, насколько полученный ответ соответствует запросу пользователя. И если он видит то, что не очень-то соответствует или плохо соответствует, он запускает механизм заново, но уже с учётом рефлексии. То есть рефлексирует он, переформулирует вопрос вот таким образом: "Какие конкретные записи или исторические данные подробно описывают количество случаев чумы в Венеции в середине XV века, чтобы это точно найти, да?". То есть он уже достал отсюда инфу, то что там место рождения Венеция, там XV век и так далее. И дальше у нас идёт переформулировка вопроса. А зачем я два раза написал? Ну ладно. Потом идёт логическая форма, новый запрос, то, что он ищет S1 City, Венеция. А поиск находит то, что чанк следующий: "Чума случалась в Венеции 22 раза в период с 1361 по 1528 год". И финальный ответ: 22 раза.

Также есть пример следующий. Смотрите, вот, например, с math, то есть запрос, требующий числовых расчётов. Если мы закинем числовые расчёты просто в RAG или в Graph RAG, то он затупит, то есть у него нет специального отдельного элемента для этого. А тут эта штука встроена. То есть KG Solver может использовать функцию math для выполнения математических для выполнения математических расчётов. Исходный вопрос: "Какова сумма 30 + 6? И возраст основателя Tesla в 2027 году". Типа там Илона Маска, например, 42 года, я не знаю, сколько ему лет. Давайте 44. И тогда будет 30 + 6, будет 36 + 34, это будет 70. Ну, например, да, я не знаю, сколько ему лет. Вот что он делает. Первый шаг: "Вычисли 30 + 6". Вычисляет, есть. "Найти основателя Tesla". То есть вот тут он использовал F, тут он уже использует retrieval. Находит основателя Tesla, извлекает сущность "Маск". Потом "найти год рождения". Он находит год рождения, потом а вычисляет возраст основателя, тоже вычисляет, то есть он нынешнюю дату, здесь почему-то двадцатой год написан. Нынешний год вычисляет минус год основателя, и получается возраст Илона Маска. И потом он находит сумму двух результатов, то есть выполняется финальное суммирование. То есть вы понимаете то, что эта штучка прикольно работает. Как бы можно и через environment там, и через обычного agent подключить к нему просто там Light RAG и дописать к нему то, что нужно уметь делать математические расчёты. Но это готовое решение. Почему бы не воспользоваться готовым решением, да, в случае, если оно уместно?

Потом, не знаю, нужны ли такие подробности. Ну давайте, раз я написал, разберём. Ну, в целом я это уже сказал, на самом деле. То есть вот то, что у нас есть функция logical forms. Вот такие вот функции основные: retrieval — это извлечение данных. Он ищет информацию на основе SPO триплетов: субъект, предикат, объект. Это может быть точный поиск или гибридный поиск. Sort — сортировка результатов поиска, например, по возрастанию или убыванию, используется для упорядочивания извлечённых данных. Math — математические вычисления. Deduce, я не знаю, как это считается. Deduce, да, для вывода ответов на основе результатов извлечения или вычисления. Сюда входят логические операции сравнения. И output — это вывод. Используется для непосредственного вывода переменных результатов предыдущих шагов в качестве окончательного ответа или промежуточного результата.

Дальше мы переходим к KG Model. KG Model — это набор улучшений LLM. И получается, везде, где фигурирует LLM в работе KAG — это KG Model. То есть там для извлечения, для вот выстраивания плана, как нужно искать, э для создания а графа знаний. Там используется LLM. И везде, где оно используется, это как бы KG Model. Эту KG Model заточили под следующие задачи, да, её заточили под понимание языка, под логическое мышление, под генерацию ответов, да, вот тут написано NLU, NLI, NLG, и LLM улучшает за счёт системных промтов. И вроде как есть специальные FT-модели KAG, но я что-то туда не вникал. И они, кстати, действительно есть. Я, честно скажу, я не пробовал ими пользоваться. Я подключал просто обычные модели, там OpenAI. В документации у них есть вот ссылка на Hugging Face. Давайте я сейчас покажу вам. Вот смотрите, это Hugging Face, компания Open SPG. У них вот есть две модели, но вот смотрите, тут ничего нет. Написано: "Model exists, but content is empty". И то же самое в этой второй модели. По крайней мере, тут есть, кстати, ещё у них датасет вот для fine-tuning, то есть как fine-tuning dataset. Вот здесь гораздо больше уже скачиваний. А вы можете взять вашу модель какую-нибудь и сделать fine-tuning. То есть это как раз для датасет для fine-tuning. То есть вы просто всё это скачиваете и fine-tune-ите вашу модель, любую, какую вы хотите. У вас на выходе получается модель, за fine-tune-енная под задачи KAG, и это должно работать эффективнее. Вот. Но я это не пробовал, честно говоря. Ссылку я оставлю в Telegram-канале на это, на Hugging Face.

А теперь переходим к практике. Сейчас будет обзор UI, как загрузка документов, поиск и вывод по API и проблемы API. Смотрите, когда мы установили на сервер, установка будет позже, у нас встречает вот такой вот интерфейс. Здесь есть следующие вкладочки: это Knowledge Base Application. Потом есть Tutorial. Это у нас ссылка на документацию на сайте Open SPG, точнее. Вот так она выглядит. Я прикреплю её файлом, чтобы удобно было закидывать там куда надо. Ноутбук LM, например. Вот этот сайт плохо читает, видимо, из-за того, что он китайский. Также есть тут ссылка на их веб-сайт. Вот он открывается, да? Вот у нас Open SPG, точнее есть. Switch, то есть можно поменять на китайский, не знаю, если вы знаете китайский, на английский. Это ссылка на репозиторий. А это у нас, а, дополнительная, получается, настроечки. У нас тут есть Model Configuration, то есть то, где мы добавляем модели. Тут нам нужна LLM и нужна модель для того, чтобы преобразовать векторы. Потом есть Data Source Configuration — это конфигурация, конфигурация data sources. Потом есть Monitoring. Это мы, а, сейчас оно прогрузится. Это мы можем мониторить, что у нас происходит. Вот token output, например, ну и так далее. Number of active users. И потом есть User Configuration, потому что в Open SPG устроено так, то что тут может быть несколько пользователей. А как-то так. Ну и logout, то есть чтобы выйти из аккаунта. Естественно, мы начнём с Knowledge Base, чтобы создать Knowledge Base. Смотрите, прежде чем создавать Knowledge Base, мы должны подключить какую-нибудь модель в Model Configuration. Что интересно, я пробовал подключать OpenAI LLM вот через эту штуку.

но она почему-то не подключается. Модель OpenI подключается, кстати. То есть с этим проблем нет.

Можете подключить модель Open Router. Я подключу модель польза AI. Тоже сделаю это через Openouter. Можно, в принципе, так сделать. Вот он их сайт. Здесь просто за рубли можно платить. Удобно.

У меня тут вот я пополнил баланс рублями. Перехожу в ключи API. А давайте создам ещё один API ключ. Вот нажмём создать API ключ. название. Ну, пусть будет какг двной лимит. Без лимита тоже лимит не хочу ставить, просто встаём ключ. Готово. Копируем его и закидываем сюда.

То есть мы выбираем тут модель Type, выбираем чат. Потом опять-таки мы ставим сюда. Visible range - это, короче, есть private, есть паблик. То есть у нас там есть несколько аккаунтов, есть несколько пользователей. Если private, то будет видно только для вас и для админов. Паблик будет видно для всех. Потом а name модели можете тут прописать польза i lm URL здесь нужно будет поменять. То есть здесь по дефолту стоит URL Openроутера. Я поставлю тут URL, а пользы AI.

Чтобы это сделать, нужно нажать на документацию API, перейти вот сюда вот и нажать на интеграцию тут слева. Ну, допустим, вот N8N. Можно, на самом деле, на любую нажать. И вот тут нам дают URL. Отлично. Берём его URL ставим сюда. Вот польза AI API V1 model. Нужно прописать, какая будет модель. Давайте возьмём GPT41 nano. Чтобы задействовать, нажмём на модели EИi пролистаем. Тут найдём Open AI. Здесь есть много разных моделей, но мне нужна Open AI. Давайте GPT41на, потому что она дешёвая и быстрая. Хотя давайте Mini. GPT41 mini возьмём. Вот всё скопировали название именно вот там вот вот здесь вот нажали на штучку, заходим сюда и ставим вот название модели Openice/ GPT41. Надо можете поставить там другую, какую хотите, но я поставил Charge GPT. Мне кажется, для таких задач это лучше всего подходит. Нажимаем OK. Подвязываем LLM модель. И сейчас нам нужно будет ещё embed модель подвязать.

Для mbd модель тоже можно взять пользу AI через Opener не получится тут как это, ну, это просто этикетка, вот эта вот Open router. Вот. Поэтому нажмём Open AI. А, смотрите, делаем то же самое. Здесь пропишем типа польза AI embeded, пусть будет модель type. Выбираем тут eding, потому что мы embeded модель подключаем. Ну, пусть будет правила, не так это важно. Сейчас API key. Мы берём тот, который мы брали. Вот у нас API key. Мы копируем, ставим его. Название модели нам нужно выбрать соответствующее, потому что нам нужна bed модель. Вот у нас документация, кстати, где мы зашли в N8N. И тут есть вотдинги. Вот нажимаем postbed endings. Тут нам, кстати, дают отдельную URL, видите, да? Вот. Копируем, переходим обратно. И в base URL мы ставим уже другое. То есть мы раньше ставили просто API, польза AI API V1, а здесь нужно добавить ещё сbedings и выбрать модель. Модель. Модель можно выбрать вот эту. Давайте embeding 3 large от Open AI модели. Только здесь надо будет писать open AI. Поставить сш вот такой вот получается open AI/texting 3 large. И добавляем. У меня выдал ошибку. Скорее всего, всё-таки вот эту штучку нужно убрать, потому что он сам его добавляет при запросе. Жмём окей. То есть просто опять польза AI опять в один. Да, видите, сработало. В остальном всё также оставляем, потому что он сам там добавляет в URL с вот этот вот. Отлично, мы добавили и то, и другое.

Переходим в knowledge base, knowledge base. Здесь мы прописываем chinese name of knowledge base. Что такое chinese name? Можно прописать просто на английском любое имя. Давайте напишем Володя DB. Здесь мы тоже пропишем это же название, но English требует то, что а combination of letters and numbers at least list free characters. То есть, короче, здесь можно с большой буквы написать и он отстанет. А здесь с маленькой буквы, потому что компания китайская, требует Chines name. Ладно. Потом Knowledge based description. Это, кстати, важная штука, потому что она будет использоваться, видите, написано: "Which is used as prompt during knowledge extraction". Сейчас же будет рлмка создавать из нашего документа какого-то структурированного, неструктурированного, а наш получается граф знаний. И чтобы он составил его корректно, ему нужно прописать промт, о чём будет этот граф знаний. Давайте, ну, займёмся этим. Вот я с помощью клода составил full. Что тут написано? This is knowledge base about automation AI and no code low code technologies. This knowledge based contains transcription from video content covering the following. То есть N8N, AI agents, automation workflow, low cod, no code, AI technologies, the content focuses on practical implementation, step by step guides, technical insides. Ну, короче, я собираюсь сюда грузить транскрипции своих роликов.

Потом касательно public, то же самое, что было с моделью, можем выбрать private или public, пусть будет private. Knowledge base type мы выбираем, смотрите, если мы ставим local, то мы будем, короче, на локально будет расположена. Если external knowledge base, то здесь можно подключить MCP-сервер с внешней базой данных. Но я, честно говоря, это не делал. Я в это особо не вникал. На самом деле у меня вот по ка know Knowledд segmented generation вот этому есть ещё, короче, большое количество открытых вопросов, потому что информации по нему не так много в интернете. Я во всём разобраться не смог. Поэтому, если вы разобрались в этих вопросах, в которых, честно признаюсь, я не до конца разобрался, пишите об этом в комментариях. Свяжемся с вами, я вам напишу в Телеграме, расскажете про это поподробнее. Но суть в том то, что здесь можно подключить MCP сервер. Ну, кстати, попробуйте вообще, как для ваших задач интересно, а какие будут у него отзывы у разных людей? И напишите об этом в комментариях тоже потом. А local. Ну, сейчас будем делать local, потому что мы будем создавать knowledge base. А потом, а, здесь нужно написать имя database, оно не меняется, здесь оно называется как. Когда мы устанавливаем как на сервер, вместе с ним устанавливается вот Neofo 4J, это графовая база данных. И как раз она и будет задействоваться. То есть здесь ничего менять не надо. Там по дефолту будет стоять вот такой пароль, вот такое вот имя пользователя и вот такой вот URI. То есть здесь вообще ничего менять не надо. Единственное, что мы ещё указываем - это vector configuration. То есть мы как раз выбираем тут ту модель, которую мы добавили векторную. И language. The age - это китайский. In, ну, по-моему, китайский. Ну, хотя какой ещё тут может быть? In - это английский. Нажимаем save.

А, смотрим, что происходит. Готово. New success. Теперь мы можем перейти сюда внутрь. По порядочку. Это knowledge base build. Сюда мы будем через create task загружать наши документы. Потом есть knowledge model. Вот у нас а создался уже какой-то граф, да? Видите, тут есть какие-то значения. В Ceg know Knowledge segmented generation устроено так, то что он изначально здесь закидывает уже какие-то общие понятия, да, вот, например, а медицина, да, транспорт, билдинг, то есть он закидывает общие понятия, потому что он как бы под это рассчитан. Потом knowledge exploration, пока что тоже ничего нет. Retrieval - это мы будем тестировать наш поиск. Он говорит там: "Сначала сделайте этого build retrieval first." Ну, сделайте что-нибудь загрузите. Короче, кофигуреation, то то, что мы только что настраивали, мы можем это поменять. Например, например, промт нас не устраивает или имя. Английское имя мы уже не поменяем. Вот китайское можем поменять и прот самое главное можем поменять и публичность, и как мы подтягиваем нашу базу данных. Ну и всё остальное, кроме vector configuration. Vectктор configuration уже поменять нельзя будет. То есть определяйте сразу при создании. Лучше протестируйте, какой вам больше понравится, потом уже создавайте уже окончательное решение. И Permissions - это у нас разрешение для разных пользователей, да? То есть тут могут быть разные пользователи. под это заточено у нас какг мы можем их добавлять, то есть вот здесь вот давайте им определённые там разрешения, да, либо adminнистратор о own давайте загрузим документ.

Здесь мы создаём документ task. Нажимаем это мы создавали knowledge base, а здесь создаём knowledge, то есть типа знания, да? Это это база знаний, а это как бы само знание создаём. Здесь надо ввести имя. Ну давайте напишем трек. Ролик протрек загружу. Data source local file - это если мы будем сейчас загружать свой файл. Language document. Knowledge base это смотрите, какая штука. Есть, короче, китайский сайт. Вот здесь нажмёте, он называется вот так. Он называется uQ.com. И почему-то написано было Sparrow token. Sparrow token. Короче, есть какой-то китайский сайт Sparrow, как я понял. Туда можно загружать ваши там, я не знаю, как назвать даже базы знаний. Короче, ваше знание можно загружать и его можно вот сюда вот подтягивать. Для этого нужен токен. Потом buildк data - это я вообще не разобрался, что это, если честно, но там тоже как-то связано. Короче, это много данных. Короче, это массовые данные. Я пока что в это не вникал, честно скажу. Разберётесь, будет классно. Напишите мне. Real time data - это тоже можно подключить real time данные, чтобы они в реальном времени отображались. По-моему, базу данных здесь можно подключить. А мы будем local файл делать. Есть два варианта: structure content или unstructure content. Видите, например, tabular content, то есть в таблицах, ну, то есть таблиц там и так далее. Unstructure content - это просто, ну, без структуры определённый контент. Давайте выберем Unstructure content. И так как я загружаю транскрипции роликов, вот у меня вот пролайтрек загрузим. Сейчас я покажу, как он выглядит. Кстати, в целом смотрите, как он выглядит. То есть я просто взял свой ролик пройтрек на Ютубе, который лежит, который вам тоже надо посмотреть, чтобы больше разобраться в этой теме, в теме reg. На самом деле здесь как будто бы не очень много текста, но его на самом деле много. загрузил его в лэмку и попросил очистить там нормально всё сделать, выделить там тезисы и так далее, чтобы текст был более чистым, чем то, как выглядит транскрибация на Ютубе. Два файла, кстати, нельзя. Давайте всё-таки один выберем. Если мы хотим второй файл загрузить, мы будем создавать просто ещё один knowledge.

Потом жмём next step. Смотрите, на nextстепе у нас что есть. Во-первых, у нас есть max segment length. Что это такое? Вот мы можем нажать preview extraction results. А preview steps - это чтобы предыдущий шаг показать. А, но у нас просит что-то выбрать. Пока что выберем как гибрид индекс. А он, кстати, сначала показывал на китайском, на китайском preview extraction results, но потом я нажал ещё раз, и он подвязал. Он нам показывает чанк, то есть он покажет у нас на 500 эти символов или токенов. Наверное, всё-таки о символах здесь идёт речь. А вот он такой длинный получается, да? Можем написать 200 символов токенов, опять нажать preview extraction results. Да, он его сократил, как я говорил, он же извлекает по умному. То есть там семантическое извлечение чанков идёт. И из-за этого он не обрезает просто по условия, он именно видит законченное предложение и законченную мысль анализирует и таким образом делает извлечение.

Потом у нас идёт индексметод. Смотрите, всё то, о чём я рассказывал, все те преимущества, которые были, вот тут только что, только что вот тут вот, вот это всё про нашего какбилдера крутого, это всё относится к KGгибрид и индекс. Это вот об этом речь. Если хотите как бы максимизировать ваш кага, выбирайте как гибрид индекс, он самый мощный. Ну, тем не менее остальные вот я тоже тут тут а пояснил, да, то есть вот как Gibrid inx есть Atomic Query index. Ну вот, например, да, создание карточек, да. Компания Восток активно работает в сфере возобновляемой энергетики. В 2023 году её дочернее предприятие Восток системы объявило о закрытии своего московского офиса. И он выделяет длинный текст на маленькие ча карточки, да, две карточки он создаёт. Например, компания Восток работает в сфере возобновляемой энергетики и дочернее предприятие Восток закрыло московский офис в двадцать третьем году. Есть outлайн индекс, он использует структуру документа, чтобы найти нужную инфу. То есть он больше по заголовкам, да, так сказать, ищет Summary index ищет по Summary. Table index - это целенаправленная обработка табличных данных для включения вот структурированной информации в граф знаний.Нан index - это обычный к по сути, то есть это просто поиск по чанкам, которые у нас тоже выделялись. А если хотите, как я говорю, максимальное преимущество, можете, конечно, каждый из них потестить по-разному, но вот больше всего будет круче всего работать, как гибрид индекс, поэтому я его и выберу. А можно вообще все выбрать? Ладно, нафига нам все? Давайте как гибрид индекс оставим. Давайте выберем как гибрид индекс и чандекс. Посмотрим. Ну и вот это тоже. Едем дальше.

Потом extraction model. То есть здесь мы уже выбираем нашу лэмку, которая для этого будет задействована. Ну и выбираем ту, которую мы подключали. Openage GPT41дина. Она может быть любая, которую вы подключили. Нажимаем complete и ждём. Вот он пишет: "Successfully created". У нас пошёл процесс. Можем нажать log. И тут у нас показывает, что происходит. То есть у нас вот создание индексов, э, чтение, splitter, разделение, extractor как гибрид идекс. Кстати, наверное, я вот эти добавил зря, потому что они потратят токены. Я ими пользоваться по итогу не буду. Надо было только как гибрид индекс выбирать. А он уже, кстати, всё сделал, векторизовал, делает алайнмент. По идее, он закончил, да, финиш. Давайте посмотрим, сколько токенов я потратил. Я больше ни на что не тратил. Вышло, а, 4 руб. Нормально, кстати, не очень много выбрал. модель mini GPT 41 mini.

Теперь мы что можем сделать? Можем зайти в Retrieval и проверить наш поиск. То есть, во-первых, мы можем выбрать несколько индекстайпов. Давайте выберем один. Всё-таки выберем модель, которую мы используем. ЛМку Open Solar Service - это можно подключить внешнюю модель для поиска, но я в это тоже не вникал. Извините, я решил честно говорить, куда я вникал, куда не вникал. С этим я не разобрался. И давайте найдём что-нибудь. То есть у нас видео было пройтрек. Давайте найдём типа что такое lightре. Вот он нам не даёт готовый ответ, он нам это работает как поиск в knowledge base, то есть это без агента пока что, да, про агент сейчас расскажу. Вот он нам закидывает, кстати, графовую базу данных, ну, base, да, где нам показывают entities и так далее. Вот в виде листа тоже можно посмотреть. И находит нам чанки.

Чанки application. Нажимаем Application и жмём create an application. Нужно здесь можно загрузить там лого аппликейшна, нажать название тест Володья ДБ, пусть будет. Короче, это псевдоним. Я не помню, что за псевдоним. По-моему, псевдоним URL для публичной публикации. Ой, ну публичной публикации. Давайте напишем там ЛО, пусть будет description. Ну это краткое описание типа из Давайте на русском. Кстати, когда мы создавали knowledge base, по-моему, я пробовал писать на русском. То есть вот тут, когда мы создавали, я показывал только что на русском, оно не пропускало. То есть там нужно именно на английском писать. Но я насчёт этого не уверен. Я уже забыл. Это приложение. Приложение для теста. Готово. Окей. Есть у нас приложение. Что у нас тут есть? У нас есть опять же permissions. Для мемборов администраторов. Есть мониторинг по приложению, там Active users, token интеграции. То есть вот как раз попI мы его будем выводить. У нас есть получается само приложение. Выбираем language in, потому что английский. Здесь нужно добавить knowledge base. Knowledge base. Добавляем ту, которую мы только что создали. Вот нажимаем сюда Волозь. ДБ, то есть он это как раз уже тот агент, как бы в обёртке приложения это почему-то называется, который будет искать по нашей Knowledge Base. То есть это получается уже как solве.

Смотрите, Think Pipeline - это штука попроще. Короче, вот это для сложных задач, то есть прямо таких ух, а это для средних и простых задач. Честно говоря, я в это тоже особо что-то не смог нормальную информацию про это найти, потому что где-то писали то, что как Thinker Popline в документации, причём то, что там типа задействуется специальная модель LLM, которая именно под это обучена, хотя она не может задействоваться, потому что мы PI подключаем свою lm. А, смотрите, кстати, интересный момент. Я только что включал как Thinker Pipeline. Вот, давайте я покажу. Я у него спрашиваю, что такое Light L light light. Здесь режим deepфинкинга выключить нельзя, de призонинга. Я спрашиваю, и он отвечает следующее: а, sorry. Error, no configuration setting for rewrite prompt, please retry. Короче, видимо, вот это вот это реально подключение специально до обучной модели, и поэтому он выдаёт ошибку. То есть, а, когда мы используем нашу лэмку, которую мы подвязали, да, то нам нужно выбирать Think Pipeline всё-таки, потому что здесь он тупо не работает. Спросим опять же, что такое Lightrack. Давайте включаем deprasoning. И здесь он уже начинает работать в режиме think pipeline. Вот он начал, да, global planning. То есть, как я и говорил, поехали. Смотрите, то есть он, во-первых, начал думать, да, First I need to understand what is light, reference to relates, ну, и так далее. Он делает logical form chain, делает retrieval concept light track, ну, и так далее. То есть делает SPO триплеты, как я говорил, то есть субъект предикат, объект starting task step 1. То есть вот он что-то делает, а находит документы и в итоге отвечает, да? Flightrack - это open source платформа, которая использует технологию Open graph. О, господи. Graph R, объединяя графы базы знаний и Large Language Models. Она предназначена для повышения точности поиска и обработки информации, особенно в связанных документах, такие как книги и статьи. Трек включает в себя функции, такие как переоранжирование результата. Ну, короче, всё то, что я говорил в роликах. Вот можно интегрировать системы вроде N8N для автоматизации процесса.

Что мы можем сделать дальше? Можем нажать вот здесь вот publish и нажать Publish updates. Всё, мы опубликовали наше приложение. Что это вообще значит? если оно у нас установлено на сервере в графе integraation, смотрите, что есть. А мы можем сделать публичный URL-адрес, так как у меня здесь просто IP-сервера, то есть почему у меня просто IP-сервера? Потому что у меня не привязан домен. Мы можем привязать домен, и тогда у нас будет здесь домен вместо IP-сервера. И мы можем как бы публично опубликовать наше приложение, да? Всё. То есть мы копируем ссылку, у нас как бы вот опубликовалось наше приложение, да? Ну, по сути, ничего не указывает на то, что это как. То есть если только эмблема есть, мы можем её поменять, как вы помните, да? Здесь у нас просто обычный интерфейс, похожий начар GPT. Здесь просто небольшое описание и просто ответы на основе нашей базы данных. Графо знаний, да, скорее. Давайте тут спросим, что такое, ну, Lightrack. Опять спросим, что такое Lightrack. Вот он пишет: Lightrack - это версия Retrievalmented Generation в области искусственного интеллекта. Ну, короче, понятно, да, он отвечает на основе.

Потом что мы можем ещё сделать? Это вывести по API. Для этого нужно ad API добавить. Назовём его как-нибудь так. сработало. А вот он создался какой-то. Нормально. Ссылку кидает сразу на документацию. Можно нажать, посмотреть, как делать запросы по API. И тут оно описано. То есть вот у нас есть example. А для запросов PPI здесь это подробно написано в документации. Я это всё сохранил. Я вот её загрузил всю в ноутбук LM. И давайте вот попросим его сделать типа, а как сделать запрос о API в как сейчас нам ответит, да, необходимо API ключ получить. Нужно создать сессию. Вот тоже важная штука. сессию как бы, ну, короче, создать сессию нужно, да, вот по такому вот запросу показывает, какие headers добавить, параметры body и пример запроса CRL для создания сессии. И в ответе будет возвращён ID, который является session ID. А потом уже делаем ещё один запрос для того, чтобы получить доступ к нашему диалогу.

Чтобы было понятнее, я создал в N8N вот такой вот два HTP реквеста. Первый у нас создать сессию. То есть мы заходим сюда внутрь. Здесь мы прописываем следующее. Это есть у нас документация. Вот у нас вот session create. Вот оно у нас всё прописано. Можем нажать cop, а перейти в наш N8N, добавить узел HTP request. Так как мы скопировали вот тут вот, а, CURL, видите, нажимаем copy. Можем здесь просто нажать импорт CRL и вставить вот это всё и нажать импорт. И оно у нас добавится. Ну, криво, кстати, добавилось, поэтому, ну, короче, надо это проконтролировать. Можете вот этот вот workflow использовать. Я его скину, тоже закину. Суть в чём? Здесь в URL мы пишем наш URL опять в один чат session create, чтобы создать сессию. Потом мы пишем авторизацию, а это наш API ключ, который у нас вот тут вот создался. Мы его копируем. Вот его, кстати, поменять и нужно. И вот сюда вот ставим. Вот видите, он другой. Потом content type, мы жмём application Jon базе content Type отправляем JSON. Здесь мы пишем, ну, как вот тут показано, да, VL мы добавили, header authorization API ke мы добавили, content type application Jon прописали. И в базе нужно добавить name и user number. Name я написал вот тут вот, пусть будет N8N. Ну, имя пользователя. Ну, давайте Володя напишем или имя сессии. А, usern 1 2 3 4 5 6 пусть будет. И жмём Execute Step. Вот мы создали сессию. Нам вернули ID, который нам нужен, 13. Да.

Теперь нам нужно, чтобы взаимодействовать с нашим как бы приложением вот этим вот, которые мы создали по API, теперь нам нужно прописать вот этот URL такой же, который у нас есть. Но теперь мы пишем, вот он в документации показан. Вот у нас уже другой а IP, другой URL IP chat complex. Вот мы так и пишем. PV1 chat complections. В хедрах мы пишем authorization, то же самое. P ключ accept мы пишем текent stream, как тут показано. Вот content type application JSON. Вот прописали. И в JSone пишем получается у нас session ID. Session ID у нас было 12, как вы, как вы помните. То есть мы создали сессию вот тут вот, и нам прислали ID в ответ 13, точнее, да? Поэтому мы вот тут прописываем session ID 13. Think enabled - это мы можем включать или выключать вот эту штучку, вот эту вот deep reasoning user number мы пишем тот, который мы указали при создании. Здесь content type мы пишем текст, потому что мы отправляем текст. И content мы пишем наш, собственно, запрос. Давайте напишем запрос. L - это что? Так, давайте поставим thinking true, чтобы прямо наглядно показать кое-что. Нажмём Execute Step. Ну и ждём просто, пока он обработается.

Смотрите, что я хотел показать. Специально включил как f enable true. И что он нам вернул? Ой, ребята, страшно показывать, что он вернул. Он вернул очень много данных. И тут вообще непонятно, что к чему. И у меня только что было, кстати, написано 23 Мб. То есть он вернул, сейчас почему-то оно изменилось. Вернул он очень огромный файл. Вот, кстати, показывает. Я вот нажму download специально, чтобы посмотреть, что он вернул. Вот. То есть у меня я файл этот закрыл, потому что у меня комп начал подвисать. 23 Мб в Jсо. И возникает вопрос: "И как вообще с этим работать в NN? Что это вообще значит? Почему он так много данных возвращает?" Я тоже об этом задумывался и пришёл к такому выводу. Он отвечает в режиме стриминга. Что такое режим стриминга? Только что показывал вот здесь вот в приложении. Когда он нам что-то отвечает, он пишет поэтапно. Ну, например, это что? Ну, и как вы мо могли заметить, там в чате GPT в клоде, когда вы общаетесь, вам часто отвечает в режиме стриминга, да? Вот. То есть он пишет нам по буковкам. Сейчас он начнёт писать. Вот видите? хоп-хоп-хоп-хоп-хоп. Как это работает режим стриминга? То есть он отправляет нам а символы по мере генерации. То есть по факту это кучу отдельных джейсонов. То есть нам ответ приходит в джейсоне. Это куча отдельных джейсонов, которые вот так отправляются. Проблема в том то, что N8N, а в узлах HTP request не поддерживает режим стриминга. Он его поддерживает в AI эжентах, вот в этих. Вы через него можете его включить, он будет у вас нормально работать. Сейчас показывать не буду, можете проверить. То есть вы заходите сюда внутрь, нажимаете Ad option и вот enable streaming. Он должен быть включён. Всё, это всё поддерживается, а, это работает. Но вот в узлах HTP requве, когда вы что-то подвязываете. То есть, если я тут вызову

тоже, например, чат GPT и включу режим стриминга, он не будет работать. И в этом-то вся и проблема. То есть он ждёт, пока весь наш ответ сформируется, пока все наши стримингсоны отправятся, потом он их все вместе собирает и отправляет нам, склеивает и отправляет нам единый файл. Из-за этого он не по не отображается в реальном времени, и это происходит достаточно долго. Вот этот, например, в режиме финкинга у меня 47 секунд обрабатывался.

И чтобы было понятно, о чём речь, мы сейчас возьмём и то же самое отправим а через обычную консоль. Ну, сейчас я просто скопировал узел из N8N и попросил преобразовать клод его в обычный CR. Ну, можно было это вручную сделать, но мне лень. То есть, видите, он просто преобразовал наш запрос в обычный CURL. По идее, если мы сейчас откроем обычный узел HTP request, нажмём CRL и вставим это, то у нас должно получиться, да, то же самое, что мы только что скопировали. Ну, он нам написал обычный CRL.

Зачем мы это сделали? Теперь мы можем нажать сделать следующее. Открыть терминал, у вас по-любому есть на компе терминал, там Mac, не Mac, неважно. И просто вставить этот C URL. У нас получается отправляется сейчас запрос к какг по HTPреквесту. То есть мы сейчас делаем то же самое, что мы делали через N8N, но через консоль. То есть я сейчас делаю это через свой Mac. И отправляем. И смотрите, как он присылает ответ. Вот видите, он начал по чуть-чуть его присылать. Вот, вот, вот это и есть режим стриминга. Вот он его присылает. Он, он нам каждый джейсончик присылает по отдельности. Вот видите? Хоп-хоп-хоп-хоп-хоп.

Если мы это делаем в invсьмен, он просто склеивает всё одно и только потом нам закидывает, потому что узел HTP не поддерживает режим стриминга. Я не знаю, когда это добавят. А, и, кстати, я пытался выключить стриминг, но это не работает. Может, я не разобрался, но я долго пытался вникнуть в это, и стриминг почему-то не выключается вообще. Через N8N прокидывать как no jugmented generation не получится. Это нужно будет делать через код, но там в целом не так сложно, то есть, а, не такая сложная схема. Плюс очень часто его можно использовать вот действительно вот в таком интерфейсе. Можно, кстати, взять этот интерфейс за основу, ээ, закинуть в клод и там с помощью вайп-кодинга его доработать так, как вам нужно, поменять там дизайн и так далее. Вот. Но пока что через nm это сделать не получится.

Смотрите, как это работает. У нас получается много лишней инфы. То есть вот у нас каждый отдельный джейсончик присылается, он одинаковая структура. Тут есть дата, вот есть answer. Lightrack - это метод, используемый в области обработки естественного там тдад. При этом сохраняя ВСО, смотрим, то же самое пишет ПБПб, пбпбп, пбпбп. При этом сохраняя высокое качест вот в чём разница. То есть просто высоту высокое качество. То есть он уже чуть больше ответ добавил. И тут идут остальные метаданные. То есть ID везде добавляется ID везде добавляется референс формат чан и так далее. Как-то так это работает. Поэтому через N8N прокидывать не получится, это проблема. Можно подключить MCP, кстати. А я не пробовал это делать. Здесь есть ещё MCP, но MCP работает только в девелопер моде. То есть этот я установил через prodдаction mode, по-моему, это так называется. А там есть ещё developвеelпер mode. Сейчас я про них расскажу, как будем устанавливать на серверах. Вот такая вот проблема API.

Едем дальше. Почему как лучше граф RG? Ну, это чтобы резюмировать. Вот я написал так, чтобы резюмировать. Смотрите, как лучше графрек, потому что как умнее, он не просто ищет похожие кусочки текста, а понимает связи между знаниями. Он умеет думать и связывать разную информацию, чтобы дать точный правильный ответ. Графрек только показывает, как связаны разные факты, как ещё их логически объясняет, как лучше работать с сложными вопросами, где много шагов решения, как помогать серьёзных темах, например, в медицине или законе, где важно не ошибаться. Ну для этих задач, конечно, его донастраивать придётся. Короче, как это умный детектив, который ищет подсказки, складывает там картину, аграрфрек - это как карта, которая показывает связи, но не объясняет почему. Короче, как это вот суперпрофессор среди систем поиска ответов, которые превосходят графрек в нескольких важных аспектах. Когда вопрос очень сложный, он делит его на фрагменты, как я говорил, и поэтапно выполняет, создаёт карту знаний Mutual иксин, как он называется? Двойной индекс, по-моему, тут переводится, да? Mutual index, взаимное индексирование. Выравнивание знаний идёт. В целом всё. Я не знаю, зачем я добавил вот этот фрагмент, если честно, про то, что он лучше графрек. Понятно, да. Но, кстати, как дороже йтрек, но по идее дешевле, чем графрек. Я не прямо проверял эту информацию, но, судя по всему, это так.

Ну, а теперь будем устанавливать на сервер, да. Инструкция для установки я оставлю в Telegram-канале. Я её специально написал через clд. Сейчас по ней будем устанавливать. И есть два варианта установки - это девелопер и product mode. Мы будем ставить producte. Developer mode мы ставим а через Python. Product mode ставится через docker. Его ставить проще. Мы будем ставить producte. Но через девелопер mode можно больше всего настраивать, можно больше его кастомизировать. По конфигурации сервера, во-первых, в документации этописано. Я вот спросил у ноутбук LM, который отвечает на основе документации. Он показывает то, что CPU больше восьми ядер, RAM- 32 ГБ. Ну, это рекомендованные штуки, диск больше 100 Гб. Ну, короче, нормально так. Нормально так. Такая конфигурация, то есть требует мощностей необходимых. А у меня, честно сказать, сейчас сервер не такой мощный. Я для теста брал четыре ядра CPU, 10 ГБ RМ и 50 ГБ диска. Установку написал клод. Здесь могут быть странные моменты, но она работает. Какие странные моменты, сейчас покажу. В целом, можете, если вы не разбираетесь в установке чего-либо на сервер, можете не заморачиваться, она рабочая здесь. Ну, всё нормально.

Как обычно, я поставил Убунту 2404, оформил сервер на Бегете. Если что, у меня там ссылка есть. Можете перейти моя реферальная. Буду благодарен, если вы по ней себе там сервер зарегаете. Мне за это копеечик там упадёт какая-то. А, но можете взять любой сервер. Я здесь для Убунту 2404 взял эту установку. Можете, кстати, эту установку закинуть тоже в клод или в любую другую нейронку. И, как я говорил, я оставлю её в Telegram-канале своём, поэтому переходите, подписывайтесь и с помощью какой-то любой другой нейронки установить на сервер и задать там какие-то вопросы, которые вам непонятны. Хотя здесь, по идее, должно быть всё понятно. А для начала нам нужно настроить Firewall. Для тех, кто разбирается, у меня почему-то, а, когда я устанавливал, у меня отваливался по 22. Если вы не знаете, через По 22 мы подключаемся к нашему серверу. Подключаюсь я, кстати, вот через программу Рус. Я про неё тоже много раз рассказывал, повторяться не буду. То есть про неё есть информация и в ролике про reg. Можете посмотреть и разобраться. То есть мы подключаемся просто к нашему серверу. Самый простой этап. Сначала разрешаем SSH, потом Firewall. А SSH - это вот порт 22, через который мы подключаемся к нашему серверу, вот где у нас есть консоли, чтобы делать все наши изменения. У меня почему-то во время установки отваливался по 22, и получается то, что я не мог заново подключиться к серверу и продолжить установку. Вот поэтому я добавил вот эти вот штуки. Возможно, если вы в этом разбираетесь, для вас это может показаться странным, но если вы не разбираетесь, делайте просто всё по инструкции.

Копируем команду, первую вставляем. Можно их, кстати, все разом скопировать и вставить, но я не хочу. Я хочу поэтапно. Это мы обновляем систему. Пока что систему мы обновили, высвечивается вот такая штучка. Просто нажимаете Enter. Всё, готово. А, нет, не до конца обновили, но просто во время обновления вот такая штука вылезла. Всё готово. Теперь устанавливаем UF W. Готово. Потом разрешаем SSH. Готово. Теперь мы, ну, всё сразу скопируем. Разрешаем порты для KГ. Готово. Включаем Firewall. Как я говорю, можно сразу вот так все скопировать и поставить. И проверяем правила. 22 для SSH, остальные для других всяких штук. Должно показывать вот это. Ну, он это и показывает.

Потом устанавливаем Docker. Вот, например, удаляем старые версии Docker, если есть. Ну их нету, потому что у нас сервер пустой, но Клод мне такую инструкцию написал. Ладно, пусть будет. Потом устанавливаем зависимости, добавляем официальный ключ, добавляем репозиторий. Обновляем список пакетов, устанавливаем доки, распускаем доки, поправляем установку. Давайте просто всё скопирую. Я могу нажать вот сюда shell, а вы просто всё скопируете в документе. Всё, оно вот так всё ставится. Ничего страшного, то, что тут есть вот решёточка и комментарий. Это ни на что не влияет. И просто ждём. Всё готово. Пишет Docker version. Ну, короче, установлен.

Потом устанавливаем к. Мы создаём директорию. То есть мы сейчас создём просто как бы папку внутри нашего сервера. Вот OptG, и переходим в неё. Когда есть команда CD, это значит то, что мы переходим в папку. Вот видите, мы перешли в папку. Было вот так, стало вот так. Мы сейчас внутри папки кг, которую мы создали. Теперь мы скачиваем docker compostфайл, то есть пишем вот CR, ставим. Опять же это всё можно сделать просто скопировать. Просто копируйте и всё. Теперь смотрим, что скачалось. Ага, скачалось. Ну, а теперь запускаем всё. Давайте всё скопируем сразу и поставим. И ждём, пока оно скачивается. Всё готово. У нас всё установилось. Вот оно сейчас прогружается. Теперь, а, нужно выйти из логов, потому что мы зашли в логи, нажать Ctrl C. Давайте нажмём Ctrl C. Всё, мы вышли из логов. Отлично.

Теперь проверяем доступ. Мы берём наш IP. IP вашего сервера. Может быть, там домен, вы подключили к нему. Открываем в браузере. У меня IP сервера - это такой. Я его удалю потом после записи, поэтому можете не пытаться туда зайти, если у вас такие мысли возникли. Всё. То есть вот тут HTP два слэша IP порт 887. И открываем в браузере. Открыли. У вас тут будет ещё штука, чтобы ввести логин пароль. Вы вводите логин пароль. И после этого у вас высветится такая штука. Вас заставит ввести новый пароль. Новый пароль вы вводите, какой хотите. Но я вот написал как Володя. Всё готово. И у вас всё появилось. Вот тут можно переключить на язык. Всё, весь интерфейс, как я показывал. Ну и чтобы проверить дополнительно, что всё работает, можем ввести вот эти команды. Dockerps. Готово. Да, всё запущено. Вот у нас есть докер и прочее. Проверить порты можем. Готово. И проверить firewall. Всё, всё работает.

Вот итоговая схема доступа такая. Вот это у нас для webui используется порт 887, а для API у нас используется 887/шаp. для Neofa 4 в браузере, то есть графа базы данных, используется наш порт, а, ну, наш IP потом 7474, потом minми консоль используется 9001. Ну, и подключение к серверу вот такое вот. А это, если что, мой опять тут везде ведён, надо его поменять. Мы всё установили на сервер. Поздравляю.

Дальше я всё рассказывал. Я не во всём разобрался. Вопросы остаются открытыми. Если у вас есть желание и вы шарите, то можете разобраться и написать в комментариях к этому видео. Свяжемся с вами в ТГ. Как я уже говорил несколько раз по ходу ролика, там, да, есть некоторые пробелы, в которые нужно вникать. Тема новая, по ней особой информации в интернете нет, но мне кажется, она стоит от того, чтобы её дальше изучать.

Смотрите, где уже используется как надо сказать. Для этого я спросил у ноутбук LM, где он используется в реальных проектах, потому что они на Гитхабе про это писали у себя, но искать самому мне лень. Вот они пишут то, что он используется в электронном правительстве, типа government Q&A, потом в электронном здравоохранении тоже используется. Ну вот как-то так. То есть он заточен под такие прямо серьёзные задачи. И главный вопрос, который возникает, мой любимый, получается reg игра reg. Всё написано. Мем про админов ТГ каналов. Я такой мем видел, то что типа админы Telegram-каналов пишут всё время, типа iPhone, всё, дизайнеры всё, их заменят нейросети. Кодеры всё их заменят вайп-кодеры. Нет, R играфрек не всё. Кг - это очередной инструмент. И вообще он стоит дорого. Для разных задач подходит разные. Ну да, это правда. Но, но как обычно, да, понятный вывод, то, что для разных задач используем разное. Всё равно в этом всём нужно разбираться.

Но вообще есть вероятность то, что сейчас делают разных кг. Как я говорил, это пока что один фреймворк эгре тоже разных сделают, побольше таких всяких интересных и прочих готовых решений. Они будут закрывать очень много задач, да, и то есть вам под большое количество всяких задач сейчас приходится с нуля выстраивать системы, да, там в квадранте, в reg и так далее, а тут появятся всякие готовые решения. И ещё интересное наблюдение, да, то, что контекстно кном, ну, сейчас мы туда просто чёнки подаём, да, когда мы используем там rec или графрек и так далее. А можно же туда весь документ запихивать. Это же называется тоже кэ, только оно пишется через букву C. Не, не K, а C. Вот так вот. Я про это тоже рассказывал в видосе, который называется полный гайд на RG. А, посмотрите на канале. Вот это Cash Tagmented Generation. Там суть в том то, что вы запихиваете в контекстное окно lм весь документ, он кэшируется и это может нормально работать. Но проблема в том то, что для прямо большого количества данных это не сработает, потому что они тупо туда не влезут. Но контекстное окно lм постоянно растёт, и когда-нибудь, возможно, получится просто запихнуть всю информацию, на основе которой должна отвечать ЛМ, в системный промт. Это работать будет лучше всего, потому что это реально работает лучше всего. Но до этого ещё далеко, очень далеко. И не факт, что такое вообще когда-то будет, потому что, ну, как вы запихнёте в SQL, у вас там в базе данных, я не знаю, где-нибудь, ну, короче, у вас информация там на на сотни гигабайт текстовой, как вы это запихнёте в контекстное окно lm это какая должна быть lm, чтобы туда всё запихнуть? То есть всё равно reg, мне кажется, будет актуален, но возможно для более простых задач, для небольших документов, всё будет впихиваться в системный промт.

Вот, например, 1 млн токенов клод. В клодто у них сейчас контекстное окно у Son 4.5, по-моему, по API - это миллион токенов. Чтобы вы понимали, миллион токенов - это сколько? Это примерно один полный четырёхтомник войны мира. Расчёты могут быть кривыми, но это всё равно очень много. То есть прикиньте, всю войну мир взяли, все четыре тома. И это всё, если вот так запихнуть в код, это будет примерно как раз там 900.000 или миллион токенов. Проблема в том то, что у нас не останется контекстного окна для того, чтобы туда вопросы задавать, потому что там уже всё забито. Но в любом случае оно постоянно растёт, и данных туда сейчас помещается очень много, и этим надо пользоваться кшигрированием, да. Но если данных очень много, то используем reg, используем Light R, используем Kegl Shagmented Generation. В целом вот так. Спасибо за то, что посмотрели это видео. Смотрите и другие ролики на моём канале, например, вот это. Пока. Обожаю это говорить. Это моя моя любимая фраза за весь ролик. Yeah.