Заметки на полях. Инженерно-ИИшное.
К сегодняшнему дню мои эксперименты наконец-то дали мне возможность начать работать с пайплайнами n8n. Таким образом сейчас имеем следующую картинку:
Поднято и работает:
1. llama.cpp + стэк моделей. Локально работают 27B + 35B A3B в 8-м кванте достаточно сильные ребята в паре для решения большинства задач.
2. LiteLLM - локальный роутер моделей + маршрутизатор запросов на openrouter. Решает ДОЛГИЕ задачи и задачи поиска по локальным данным, которые не загрузить в контекст сразу, плюс задача подготовки контекста для внешних моделей.
3. Observability стэк - Loki, Alloy, Prometheus, Tempo для оценки нагрузки на железо и того, что творится в логах, сколько реально выполняются запросы. Требует ещё доводки до состояния стояния. Сейчас позволяет отслеживать спаны только частично. Метрики с оборудования снимает хорошо.
4. n8n - Оркестратор агентных пайплайнов
5. onto-viz - сервер работы с графами знаний по RDF-онтологиям (доступен как MCP-сервер, навайбкожено при помощи Spec Driven Development) для подгрузки правил построения высказываний и контроля T-Box
6. Gitlab - как хранилище документов и пиналка хуков для n8n в ботах.
7. Hermes - Агент mcp-сервер, экспериментальная история для некоторых задач вызова "субагентов".
В процессе подъёма:
Ragflow :
- RAG насыщение векторной БД с метаданными на основании RDF из T-Box
- Обновление T-Box при расширенном насыщении векторной БД.
- Обогащение контекста агентных пайплайнов n8n RAG-данными из RAG-flow
- Обновление векторной БД по факту обновления данных в Gitlab как источнике истины по документам, с поддержкой версионирования, и управления конфигурацией данных.
Что будет в итоге:
Возможность строить агентные пайплайны по предметным областям с учётом динамически обновляемой семантики. В первую очередь тащу эту штуку для своих образовательных проектов, но выделение T-Box на этапе насыщения векторного RAG - это достаточно общая задача.
#аишечка #инженерия #образование
К сегодняшнему дню мои эксперименты наконец-то дали мне возможность начать работать с пайплайнами n8n. Таким образом сейчас имеем следующую картинку:
Поднято и работает:
1. llama.cpp + стэк моделей. Локально работают 27B + 35B A3B в 8-м кванте достаточно сильные ребята в паре для решения большинства задач.
2. LiteLLM - локальный роутер моделей + маршрутизатор запросов на openrouter. Решает ДОЛГИЕ задачи и задачи поиска по локальным данным, которые не загрузить в контекст сразу, плюс задача подготовки контекста для внешних моделей.
3. Observability стэк - Loki, Alloy, Prometheus, Tempo для оценки нагрузки на железо и того, что творится в логах, сколько реально выполняются запросы. Требует ещё доводки до состояния стояния. Сейчас позволяет отслеживать спаны только частично. Метрики с оборудования снимает хорошо.
4. n8n - Оркестратор агентных пайплайнов
5. onto-viz - сервер работы с графами знаний по RDF-онтологиям (доступен как MCP-сервер, навайбкожено при помощи Spec Driven Development) для подгрузки правил построения высказываний и контроля T-Box
6. Gitlab - как хранилище документов и пиналка хуков для n8n в ботах.
7. Hermes - Агент mcp-сервер, экспериментальная история для некоторых задач вызова "субагентов".
В процессе подъёма:
Ragflow :
- RAG насыщение векторной БД с метаданными на основании RDF из T-Box
- Обновление T-Box при расширенном насыщении векторной БД.
- Обогащение контекста агентных пайплайнов n8n RAG-данными из RAG-flow
- Обновление векторной БД по факту обновления данных в Gitlab как источнике истины по документам, с поддержкой версионирования, и управления конфигурацией данных.
Что будет в итоге:
Возможность строить агентные пайплайны по предметным областям с учётом динамически обновляемой семантики. В первую очередь тащу эту штуку для своих образовательных проектов, но выделение T-Box на этапе насыщения векторного RAG - это достаточно общая задача.
#аишечка #инженерия #образование
🔥1
Заметки на полях. Инеженерно-архитектурное.
С чего примерно начинается любое проектирование. С описания проблемной ситуации. Зафиксирую её здесь для того, чтоб было примерно понятно, ради чего столько усилий:
===НАЧАЛО:Описание проблемной ситуации===
В процессе работы над любым проектом, объективно существует и можно выделить несколько измерений развития проекта по очевидности, и по скорости изменений. Чем меньше порядковый номер - тем выше скорость изменений в процессе. А чем больше номер - тем выше влияние изменений в соответствующей сфере на проект как 4Д-экстент =)
1. Изменения в артефактах поставки конечному потребителю. Неважно, что это такое, будь это чертёж, книжка, видео, софт или гайка. Это основная цепочка создания ценности. Пресловутый Value Chain.
2. Измения в описаниях артефактов поставляемых конечному потребителю. Это то, что мы привыкли называть "проектной документацией". Требования, архитектурные описания, тесты, документация и прочее. Это цепочка коммуникации между агентами, в системе разделения труда конекретной цепочки создания ценности. Суть - планирование и контроль качества конечного результата, включая планирование и контроль затрат. Это место появления классической Муды(Потерь) - разного рода.
3. Изменения в языке коммуникации ролевых агентов при организации деятельности в двух предыдущих цепочек. Это - цепочка корректировки того, КАК ИМЕННО мы говорим о конкретных Полезных действиях, Потерях и создаваемых Ценностях, Рисках. И то и то - можно отнести к категориям ресурсных Затрат.
4. Изменения в намерениях. Это изменения во ВНУТРЕННЕМ ЯЗЫКЕ каждого агента, которым он выражает то, что считает Потерями и Ценностью для себя.
Есть широко обсуждаемые виды затрат, считаемых потерями:
Муда 1. Потери в цепочке создания ценности.
Муда 2. Потери в работе над проектной документацией
Муда 3. Потери в переходах от коммуникации вокруг проектной документации к цепочке создания ценности.
Но, то что я не видел, чтобы обсуждалось - это:
Муда 4. Потери в согласовании языка межагентной коммуникации. Это потери ресурсов при создании создании Ubiquitous language. Получение согласованного Лексикона проекта.
Муда 5. Потери в доработке артефактов проекта под изменяющийся язык межагентной коммуникации. При каждом изменении Лексикона проекта необходимо отразить изменения в описательных артефактах, и как следствие в цепочке создания ценности.
Муда 6. Потери в выявлении Внутреннего языка агента в доступных для обсуждения концептах. (По-умному - экстракция интенсионала агента, я про интенсионалы говорил чуть выше)
Муда 7. Потери в контроле согласованности Внутреннего языка агента здесь и сейчас с Лексиконом проекта.
Любой из видов Муды растит Затраты. Я практически убеждён, что например аналитический паралич - это хрестоматийный пример ситуации когда Муды 4-7 видов столько, что на уровне перехода от коммуникации к деятельности любые конструктивные действия настолько низковероятны, что почти любые планы по созданию ценности будут в некоторый момент потом отнесены к Муде 3.
Т.е. большинство вариантов возможных действий по созданию ценности для конечного потребителя приведут к тому, что доля затрат на создание ценности будет снижаться относительно доли потерь.
А при превышении любым видом затрат доступных для проекта ресурсов - проект закрывается, что может потенциально являться нежелательным для его участников.
===КОНЕЦ:Описание проблемной ситуации===
Поэтому я пытаюсь построить цепочку, в которой есть явный протокол согласования в первую очередь языка проекта, который автоматизированно можно перенести на проектные артефакты, и тем самым немножко побороться с Мудой 4. Т.е. приблизиться к решению задачи выделения метамодели проектной деятельности в конкретном проекте, в независимости от того, что УЖЕ сделано, и какие артефакты существуют. Если их подать на вход некоторому "агенту", можно с достаточной уверенностью как минимум спрогнозировать коммуникационные конфликты на уровне "моя твоя нипанимат", и попробовать предложить некоторые варианты решений.
С чего примерно начинается любое проектирование. С описания проблемной ситуации. Зафиксирую её здесь для того, чтоб было примерно понятно, ради чего столько усилий:
===НАЧАЛО:Описание проблемной ситуации===
В процессе работы над любым проектом, объективно существует и можно выделить несколько измерений развития проекта по очевидности, и по скорости изменений. Чем меньше порядковый номер - тем выше скорость изменений в процессе. А чем больше номер - тем выше влияние изменений в соответствующей сфере на проект как 4Д-экстент =)
1. Изменения в артефактах поставки конечному потребителю. Неважно, что это такое, будь это чертёж, книжка, видео, софт или гайка. Это основная цепочка создания ценности. Пресловутый Value Chain.
2. Измения в описаниях артефактов поставляемых конечному потребителю. Это то, что мы привыкли называть "проектной документацией". Требования, архитектурные описания, тесты, документация и прочее. Это цепочка коммуникации между агентами, в системе разделения труда конекретной цепочки создания ценности. Суть - планирование и контроль качества конечного результата, включая планирование и контроль затрат. Это место появления классической Муды(Потерь) - разного рода.
3. Изменения в языке коммуникации ролевых агентов при организации деятельности в двух предыдущих цепочек. Это - цепочка корректировки того, КАК ИМЕННО мы говорим о конкретных Полезных действиях, Потерях и создаваемых Ценностях, Рисках. И то и то - можно отнести к категориям ресурсных Затрат.
4. Изменения в намерениях. Это изменения во ВНУТРЕННЕМ ЯЗЫКЕ каждого агента, которым он выражает то, что считает Потерями и Ценностью для себя.
Есть широко обсуждаемые виды затрат, считаемых потерями:
Муда 1. Потери в цепочке создания ценности.
Муда 2. Потери в работе над проектной документацией
Муда 3. Потери в переходах от коммуникации вокруг проектной документации к цепочке создания ценности.
Но, то что я не видел, чтобы обсуждалось - это:
Муда 4. Потери в согласовании языка межагентной коммуникации. Это потери ресурсов при создании создании Ubiquitous language. Получение согласованного Лексикона проекта.
Муда 5. Потери в доработке артефактов проекта под изменяющийся язык межагентной коммуникации. При каждом изменении Лексикона проекта необходимо отразить изменения в описательных артефактах, и как следствие в цепочке создания ценности.
Муда 6. Потери в выявлении Внутреннего языка агента в доступных для обсуждения концептах. (По-умному - экстракция интенсионала агента, я про интенсионалы говорил чуть выше)
Муда 7. Потери в контроле согласованности Внутреннего языка агента здесь и сейчас с Лексиконом проекта.
Любой из видов Муды растит Затраты. Я практически убеждён, что например аналитический паралич - это хрестоматийный пример ситуации когда Муды 4-7 видов столько, что на уровне перехода от коммуникации к деятельности любые конструктивные действия настолько низковероятны, что почти любые планы по созданию ценности будут в некоторый момент потом отнесены к Муде 3.
Т.е. большинство вариантов возможных действий по созданию ценности для конечного потребителя приведут к тому, что доля затрат на создание ценности будет снижаться относительно доли потерь.
А при превышении любым видом затрат доступных для проекта ресурсов - проект закрывается, что может потенциально являться нежелательным для его участников.
===КОНЕЦ:Описание проблемной ситуации===
Поэтому я пытаюсь построить цепочку, в которой есть явный протокол согласования в первую очередь языка проекта, который автоматизированно можно перенести на проектные артефакты, и тем самым немножко побороться с Мудой 4. Т.е. приблизиться к решению задачи выделения метамодели проектной деятельности в конкретном проекте, в независимости от того, что УЖЕ сделано, и какие артефакты существуют. Если их подать на вход некоторому "агенту", можно с достаточной уверенностью как минимум спрогнозировать коммуникационные конфликты на уровне "моя твоя нипанимат", и попробовать предложить некоторые варианты решений.
Заметки на полях. Инженерно-иишное.
Завёл RAGFlow на реиндекс моего репозитория с образовательными материалами.
Пока получил такой результат:
1. Распознавание типов файлов идёт по расширениям. Шатал я их дом труба, если честно с таким подходом.
2. Запуск и дефолтная конфигурация - это не на полчаса. Это на денёк посидеть, изучить, подключить пару моделей и потом, может быть получится завести в тестовом кластере.
3. Достаточно странно разрабатывается, и видно, что валидационных тестов у ребят прям нехватает, когда в релиз пролезают штуки типа несоответствия валидации pydantic-ом схемы JSON запроса и типов поле БД куда эти данные вставляются. И всё это потому, что на минорной версии внезапно меняется схема БД, а валидаторы вызовов api от фронта к бэку допилить забыли.
Это кстати в огород "микросервисного подхода" камень, когда кто-то пытается выпускать ВЕСЬ сервис одной версией. Так вот, там не одна версия. А у каждого компонента своя. У Redis своя, у MySQL своя, у фронтенда - своя, у бэка своя, у python - своя и т.п.
Поэтому релиз как процесс должен совершенно точно включать полный цикл тестирования. И да, я понимаю, что пока v1.x.x не выпустили, можно официально творить любую дичь и говорить "У нас Semantic Version". Но это прям ... обман себя. Не надо так.
А пока мой маленький чёрный ящик пыхтит делая заготовку под Graph Retrival для студенческого бота по моей программе.
Завёл RAGFlow на реиндекс моего репозитория с образовательными материалами.
Пока получил такой результат:
1. Распознавание типов файлов идёт по расширениям. Шатал я их дом труба, если честно с таким подходом.
2. Запуск и дефолтная конфигурация - это не на полчаса. Это на денёк посидеть, изучить, подключить пару моделей и потом, может быть получится завести в тестовом кластере.
3. Достаточно странно разрабатывается, и видно, что валидационных тестов у ребят прям нехватает, когда в релиз пролезают штуки типа несоответствия валидации pydantic-ом схемы JSON запроса и типов поле БД куда эти данные вставляются. И всё это потому, что на минорной версии внезапно меняется схема БД, а валидаторы вызовов api от фронта к бэку допилить забыли.
Это кстати в огород "микросервисного подхода" камень, когда кто-то пытается выпускать ВЕСЬ сервис одной версией. Так вот, там не одна версия. А у каждого компонента своя. У Redis своя, у MySQL своя, у фронтенда - своя, у бэка своя, у python - своя и т.п.
Поэтому релиз как процесс должен совершенно точно включать полный цикл тестирования. И да, я понимаю, что пока v1.x.x не выпустили, можно официально творить любую дичь и говорить "У нас Semantic Version". Но это прям ... обман себя. Не надо так.
А пока мой маленький чёрный ящик пыхтит делая заготовку под Graph Retrival для студенческого бота по моей программе.
Заметки на полях. Инженерное Сегодня подвёл свой Minisforum MS-S1 MAX в пределу производительности.
Итак, что туда влезло, одновременно запущеное:
1. 4 модели. Embed+Rerank для поддержки RAG-индексации
2. LiteLLM - как маршрутизатор запросов и прокси к моделям
3. RAGFlow - Вроде как неплохой RAG-движок для разбора документации. Сейчас он у меня научные статьи мои крутит.
4. Модель Qwen3.5 27B Q8_0
5. Модель Qwen3.6 35B Q8_0
Для управления агентами на другой машине - N8N+onto-viz для подтягивания семантического корректора (скажем так).
Что с загрузкой - завязано под самый свисток. Вполне возможно полный контекст Qwen3.5 27B (а его там ещё 262144 токена) не влезет...
Но пока свистит, живёт, и пашет потихоньку. Оставлю на ночь парсить документы дальше. Думал всё заводить под K8s для простоты управления, но походу не надо так. Простой podman quadlet + systemd пока смотрится надёжнее.
Итак, что туда влезло, одновременно запущеное:
1. 4 модели. Embed+Rerank для поддержки RAG-индексации
2. LiteLLM - как маршрутизатор запросов и прокси к моделям
3. RAGFlow - Вроде как неплохой RAG-движок для разбора документации. Сейчас он у меня научные статьи мои крутит.
4. Модель Qwen3.5 27B Q8_0
5. Модель Qwen3.6 35B Q8_0
Для управления агентами на другой машине - N8N+onto-viz для подтягивания семантического корректора (скажем так).
Что с загрузкой - завязано под самый свисток. Вполне возможно полный контекст Qwen3.5 27B (а его там ещё 262144 токена) не влезет...
Но пока свистит, живёт, и пашет потихоньку. Оставлю на ночь парсить документы дальше. Думал всё заводить под K8s для простоты управления, но походу не надо так. Простой podman quadlet + systemd пока смотрится надёжнее.
Заметки на полях. Сегодня полез разбираться в ту часть, которая готовит контекст со стороны RAG-ов.
Короткие заметки:
1. Попробовал индексировать документы в сложном пайплайне - в итоге один документ на 300 чанков по 1024 токена на моём железе обрабатывался 8 часов. Правда с генерацией метаданных, графа знаний и выделением сущностей. Использовал Qwen3.6-35B-A3B-Q8_0 для индексирования. Документы поменьше - не сильно лучше.
2. Разработка пайплайнов для подготовки RAG-это прям работа. Причём неизведанное поле, на самом деле. Можно много наисследовать.
3. Модель Qwen3.6-27B-UD-Q8_K_XL от Unsloth я всё таки выгрузил из памяти. Нужно будет подобрать более лёгкую модель, на 7B типа Mistral или Qwen2.5-Instruct без ризонинга. На качество обработки при хороших промптах не сильно повлияет, а вот скорости добавит заметно.
4. Что радует, так это то, что исследовательскую работу вести достаточно приятно. От кишок сервисов до конца отойти не получается, потому, что LiteLLM, RagFlow и вот это всё - оно достаточно сырое и багованное, но в принципе уже можно ставить понятные эксперименты на реальных задачах.
Из забавного, любая парадигма внедрения ИИ сейчас скатывается к тому, насколько хорошо люди понимают, что именно они делают. Тут Гена Круглов писал про качество данных. Я с ним согласен и скажу так, в разрезе истории, с потерями ресурсов при коммуникации, про которые я вот выше рассуждал, данные - это кровь любой организации. Нужно раз и навсегда запомнить, что данные генерируются для получателя. Даже Карпатый сказал, что делегировать "намерение" и "понимание" не получится тут недавно.
Поэтому процитирую одно из своих любимых:
#аишечка #инженерное
Короткие заметки:
1. Попробовал индексировать документы в сложном пайплайне - в итоге один документ на 300 чанков по 1024 токена на моём железе обрабатывался 8 часов. Правда с генерацией метаданных, графа знаний и выделением сущностей. Использовал Qwen3.6-35B-A3B-Q8_0 для индексирования. Документы поменьше - не сильно лучше.
2. Разработка пайплайнов для подготовки RAG-это прям работа. Причём неизведанное поле, на самом деле. Можно много наисследовать.
3. Модель Qwen3.6-27B-UD-Q8_K_XL от Unsloth я всё таки выгрузил из памяти. Нужно будет подобрать более лёгкую модель, на 7B типа Mistral или Qwen2.5-Instruct без ризонинга. На качество обработки при хороших промптах не сильно повлияет, а вот скорости добавит заметно.
4. Что радует, так это то, что исследовательскую работу вести достаточно приятно. От кишок сервисов до конца отойти не получается, потому, что LiteLLM, RagFlow и вот это всё - оно достаточно сырое и багованное, но в принципе уже можно ставить понятные эксперименты на реальных задачах.
Из забавного, любая парадигма внедрения ИИ сейчас скатывается к тому, насколько хорошо люди понимают, что именно они делают. Тут Гена Круглов писал про качество данных. Я с ним согласен и скажу так, в разрезе истории, с потерями ресурсов при коммуникации, про которые я вот выше рассуждал, данные - это кровь любой организации. Нужно раз и навсегда запомнить, что данные генерируются для получателя. Даже Карпатый сказал, что делегировать "намерение" и "понимание" не получится тут недавно.
Поэтому процитирую одно из своих любимых:
-- ..."Мир есть Текст", парень, -- все в точном соответствии с твоими художественными вкусами. Ты-то чем недоволен? -- деревянно ухмыльнулся Грагер, нетвердою рукой разводя по стаканам очередную порцию не то текилы, не то еще какого-то самогонного пойла.
-- Но ведь мы же с тобой писали другой Текст, совершенно другой!
-- Что значит -- другой? Текст, эстет ты мой ненаглядный, существует лишь во взаимодействии с Читателем. Каждый человек пишет свою собственную историю принцессы Элендейл, а уж чего там хотел сказать сам Альруфин -- не имеет ровно никакого значения. Выходит, мы с тобою сочинили настоящий художественный текст -- раз читатели, -- тут резидент покрутил пальцем где-то в районе уха, так что не понять было, кого он имеет в виду -- Королевский ли совет, или некие истинно высшие Силы, -- сумели прочесть его таким вот непредсказуемым образом...
К. Еськов. Последний кольценосец
#аишечка #инженерное
Telegram
Заметки на инженерных полях
Продолжу заметки. На тему переосмысления работы в современном инженерном поле.
Итак можно заметить, что как написал у себя Сергей, задача управления инженерным проектом сводилась по своей сути к задаче оптимизации контекста деятельности в рамках одной элементарной…
Итак можно заметить, что как написал у себя Сергей, задача управления инженерным проектом сводилась по своей сути к задаче оптимизации контекста деятельности в рамках одной элементарной…
Заметки на инженерных полях. Разбираясь с RAG-системами.
Пилим потихоньку RAGFlow. Первые впечатления такие - достаточно объёмная система, быстро допиливается сообществом и вайбкодерами, активно развивается. Но я бы с ней в прод пока не шёл.
На что обратил внимание:
1. Требует достаточно бодрого, настроенного кластера MySQL. И надо иметь экспертизу по этой СУБД. Например понимать что делать с binary-log-ами, в какой момент, как настраивать репликацию, и почему тут пригодятся сверхбыстрые линки между инстансами.
2. Встроенные пайплайны наполнение БД жрут токены как не в себя. Просто миллионы токенов и тонно-километры. Нужно ОЧЕНЬ аккуратно обращаться с ними, и предельно ясно понимать как именно наполняется база данных
3. Построить Граф знаний одной кнопкой - круто, но строит фигню если исходники фигня. Загружаемая документация должна быть готова к тому, что по ней будут строить граф знаний. А ещё лучше, если этот граф можно будет снаружи грузить. Похоже, что здесь нужна реально сильная модель и миллиарды токенов чтобы получать вменяемый результат на более-менее адекватных объёмах данных (например пара сотен-тысящ-миллионов документов корпоративного RAG-а). Так что пока выглядит как игрушка
4. Есть несколько приятных встроенных фич, типа генерации ключевых слов, и типовых вопросов/ответов по чанкам.
5. Редактор пайплайнов встройки достаточно куц пока, весьма куц. На детском уровне относительно возможностей "написать свой код". Пока впечатление такое, что действительно проще делать N8n-пайплайны для наполнения векторной базы или писать свои модули.
6. Если хочется свой домашний RAG - то вполне крайне рекомендуется приобретение нескольких графических карт для запуска пайплайнов. Обычно документов много, они слабо структурированы, и придётся достаточно сложную обработку строить. Плюс параллелить запросы через какой-нибудь LiteLLM к 6-8 карточкам по 12-16 гигов, на каждой из которых крутится что-то вроде LLama 3 13B, Gemma 4 E4B, Qwen 2.5 Instruct 7B или подобных моделей. Критическая точка - это скорость памяти здесь. Модели можно использовать небольшие, тут надо распараллелить задачи знатно главное.
7. Админка у RAGFlow - это конечно фантастика. В принципе, если это ориентированное на суровый энтерпрайз решение, то понятно, что там только конфиги и голый API. Но это жутко неудобно для изучения возможностей.
8. Elastic Search, Minio, Redis под капотом - это конечно то ещё архитектурное решение. Поскольку Elastic - требует ещё одной суровой экспертизы, и непонятно как лицензируется, Minio - вообще снят с поддержки вендором как opensource решение + с 25.04.2026 репозиторий Minio на github - заморожен, а Redis - тот ещё оторва с лицензиями, да и Valkey от Linux foundation под BSD 3-Clause лицензией теперь вроде бы смотрится поживее.
Пока впечатления такие:
Официальный docker-compose конечно работает, но имеет кучу нюансов. Разорачивать - уже само по себе задача не тривиальной сложности. Настройка пайплайнов импорта - это вообще высший пилотаж на данный момент. Понимать как корректно маршрутизировать документы через пачку пайплайнов, чтобы RAG-выдача не была чушью - это совсем не тривиальная задача. Пока не вижу как её можно автоматизировать в принципе, поскольку для неё требуется то самое понимание предметной области и решаемых RAG-ом задач, о которой мы тут рассуждаем.
P.S.: Кажется построение RAG-ов вполне себе внятная ниша, которая сожрёт тонны специалистов и не поморщится. Поскольку это про качество данных, а туда можно вливать почти бесконечно.
Пилим потихоньку RAGFlow. Первые впечатления такие - достаточно объёмная система, быстро допиливается сообществом и вайбкодерами, активно развивается. Но я бы с ней в прод пока не шёл.
На что обратил внимание:
1. Требует достаточно бодрого, настроенного кластера MySQL. И надо иметь экспертизу по этой СУБД. Например понимать что делать с binary-log-ами, в какой момент, как настраивать репликацию, и почему тут пригодятся сверхбыстрые линки между инстансами.
2. Встроенные пайплайны наполнение БД жрут токены как не в себя. Просто миллионы токенов и тонно-километры. Нужно ОЧЕНЬ аккуратно обращаться с ними, и предельно ясно понимать как именно наполняется база данных
3. Построить Граф знаний одной кнопкой - круто, но строит фигню если исходники фигня. Загружаемая документация должна быть готова к тому, что по ней будут строить граф знаний. А ещё лучше, если этот граф можно будет снаружи грузить. Похоже, что здесь нужна реально сильная модель и миллиарды токенов чтобы получать вменяемый результат на более-менее адекватных объёмах данных (например пара сотен-тысящ-миллионов документов корпоративного RAG-а). Так что пока выглядит как игрушка
4. Есть несколько приятных встроенных фич, типа генерации ключевых слов, и типовых вопросов/ответов по чанкам.
5. Редактор пайплайнов встройки достаточно куц пока, весьма куц. На детском уровне относительно возможностей "написать свой код". Пока впечатление такое, что действительно проще делать N8n-пайплайны для наполнения векторной базы или писать свои модули.
6. Если хочется свой домашний RAG - то вполне крайне рекомендуется приобретение нескольких графических карт для запуска пайплайнов. Обычно документов много, они слабо структурированы, и придётся достаточно сложную обработку строить. Плюс параллелить запросы через какой-нибудь LiteLLM к 6-8 карточкам по 12-16 гигов, на каждой из которых крутится что-то вроде LLama 3 13B, Gemma 4 E4B, Qwen 2.5 Instruct 7B или подобных моделей. Критическая точка - это скорость памяти здесь. Модели можно использовать небольшие, тут надо распараллелить задачи знатно главное.
7. Админка у RAGFlow - это конечно фантастика. В принципе, если это ориентированное на суровый энтерпрайз решение, то понятно, что там только конфиги и голый API. Но это жутко неудобно для изучения возможностей.
8. Elastic Search, Minio, Redis под капотом - это конечно то ещё архитектурное решение. Поскольку Elastic - требует ещё одной суровой экспертизы, и непонятно как лицензируется, Minio - вообще снят с поддержки вендором как opensource решение + с 25.04.2026 репозиторий Minio на github - заморожен, а Redis - тот ещё оторва с лицензиями, да и Valkey от Linux foundation под BSD 3-Clause лицензией теперь вроде бы смотрится поживее.
Пока впечатления такие:
Официальный docker-compose конечно работает, но имеет кучу нюансов. Разорачивать - уже само по себе задача не тривиальной сложности. Настройка пайплайнов импорта - это вообще высший пилотаж на данный момент. Понимать как корректно маршрутизировать документы через пачку пайплайнов, чтобы RAG-выдача не была чушью - это совсем не тривиальная задача. Пока не вижу как её можно автоматизировать в принципе, поскольку для неё требуется то самое понимание предметной области и решаемых RAG-ом задач, о которой мы тут рассуждаем.
P.S.: Кажется построение RAG-ов вполне себе внятная ниша, которая сожрёт тонны специалистов и не поморщится. Поскольку это про качество данных, а туда можно вливать почти бесконечно.
🔥1
Заметки на полях. Инженерно-иишное.
Прокопал немного в сторону того, как будет примерно строиться RAG-система условно "нынешнего дня".
Как уже заметили ранее, просто так засунуть данные RAG - нельзя. Я пока изучаю тему, буду докидывать заметок на то, что мы вообще понимаем под "Качеством RAG".
Во первых к сути RAG ещё раз:
Если представлять RAG как функцию, то я вижу задачу RAG - как задачу получение структурированного контекста из следующих источников:
1. Модель предметной области деятельности решаемой задачи
2. Нормативные данные предметной области
3. Интерпретация входного Prompt-а на основании модели предметной области
4. Сенсорные данные
5. Интерпретация сенсорных данных на основании модели предметной области
Возможно, можно добавить что-то ещё, но это отдельный вопрос. Пока так.
На данный момент активно обсуждаются только п. 2а, и 3., частично обсуждается п.1 но адекватных применений и публикаций общего вида, я вообще не видел пока. Ни в инженерных, ни в академических источниках. Есть частные применения но куча но.
Здесь я попробую пообсуждать правила игры, для того, чтобы из "фронтир-то фронтир, но непонятно зачем" перейти к практически значимым штукам.
Для начала зафиксируем модель оценки RAG-системы. Основные метрики данных которые получаем сформулировать не так просто. Во первых - эти данные не гомогенны. Нельзя сказать, что RAG - это NDCG@K+Recall+Precision. Это точно мало. Но поскольку на данный момент хорошо изучен семантический поиск - вся работа с развитием RAG-систем мне напоминает поиск ключей под фонарём, потому, что там светло.
Если RAG-это функция, то мы можем результаты работы этой функции представить как функции тоже, почему нет? Итак можно пяток основных видов функций RAG для себя зафиксировать и обсуждать их качество по-отдельности, чтобы не умирать когнитивно под весом общей задачи. Итак:
1. Получить модель предметной области (МПО)
2. Получить нормативные данные предметной области
3. Интерпретировать исходный контекст (промпт в т.ч.) на основании МПО
4. Получить сенсорные данные
5. Интерпретировать сенсорные данные на основании МПО
На данный момент более-менее хорошо освоен только п.2. Это механизмы семантического поиска по данным. И как очевидно, релеватность, точность, полнота и прочее данных полученных в результате семантического поиска по данным зависит от качества исходных данных, от качества разметки данных, от качества механизмов получения, фильтрации и сортировки получаемых данных.
А что делать с Моделями предметной области - это вопрос. Сейчас туда пытаются копать, но такое ощущение, что не знают куда, поскольку онтологи вечно были сродни философам, которых вообще непонятно было куда приткнуть и как, что в итоге отразилось и на их популярности и на идеях часто напоминающих религиозные доктрины. Соответственно работа с онтологиями, т.е. представлениями предметных областей в структурированной форме сейчас дело маргинальное. А может стать вполне себе прибыльным, потому, что без онтологической поддержки семантический поиск строить конечно можно, но лично я не настолько богат.
Прокопал немного в сторону того, как будет примерно строиться RAG-система условно "нынешнего дня".
Как уже заметили ранее, просто так засунуть данные RAG - нельзя. Я пока изучаю тему, буду докидывать заметок на то, что мы вообще понимаем под "Качеством RAG".
Во первых к сути RAG ещё раз:
Если представлять RAG как функцию, то я вижу задачу RAG - как задачу получение структурированного контекста из следующих источников:
1. Модель предметной области деятельности решаемой задачи
2. Нормативные данные предметной области
3. Интерпретация входного Prompt-а на основании модели предметной области
4. Сенсорные данные
5. Интерпретация сенсорных данных на основании модели предметной области
Возможно, можно добавить что-то ещё, но это отдельный вопрос. Пока так.
На данный момент активно обсуждаются только п. 2а, и 3., частично обсуждается п.1 но адекватных применений и публикаций общего вида, я вообще не видел пока. Ни в инженерных, ни в академических источниках. Есть частные применения но куча но.
Здесь я попробую пообсуждать правила игры, для того, чтобы из "фронтир-то фронтир, но непонятно зачем" перейти к практически значимым штукам.
Для начала зафиксируем модель оценки RAG-системы. Основные метрики данных которые получаем сформулировать не так просто. Во первых - эти данные не гомогенны. Нельзя сказать, что RAG - это NDCG@K+Recall+Precision. Это точно мало. Но поскольку на данный момент хорошо изучен семантический поиск - вся работа с развитием RAG-систем мне напоминает поиск ключей под фонарём, потому, что там светло.
Если RAG-это функция, то мы можем результаты работы этой функции представить как функции тоже, почему нет? Итак можно пяток основных видов функций RAG для себя зафиксировать и обсуждать их качество по-отдельности, чтобы не умирать когнитивно под весом общей задачи. Итак:
1. Получить модель предметной области (МПО)
2. Получить нормативные данные предметной области
3. Интерпретировать исходный контекст (промпт в т.ч.) на основании МПО
4. Получить сенсорные данные
5. Интерпретировать сенсорные данные на основании МПО
На данный момент более-менее хорошо освоен только п.2. Это механизмы семантического поиска по данным. И как очевидно, релеватность, точность, полнота и прочее данных полученных в результате семантического поиска по данным зависит от качества исходных данных, от качества разметки данных, от качества механизмов получения, фильтрации и сортировки получаемых данных.
А что делать с Моделями предметной области - это вопрос. Сейчас туда пытаются копать, но такое ощущение, что не знают куда, поскольку онтологи вечно были сродни философам, которых вообще непонятно было куда приткнуть и как, что в итоге отразилось и на их популярности и на идеях часто напоминающих религиозные доктрины. Соответственно работа с онтологиями, т.е. представлениями предметных областей в структурированной форме сейчас дело маргинальное. А может стать вполне себе прибыльным, потому, что без онтологической поддержки семантический поиск строить конечно можно, но лично я не настолько богат.
Telegram
Intelligent Systems Architecture
Вдогонку к предыдущему посту.
Всем, кто не хочет остаться за бортом агентизации, придётся всерьез инвестировать в качество данных. Иначе резонанс от наложения бардака в базах и эмерджентности моделей разнесёт не только бюджеты, но и карьеры.
Одно дело —…
Всем, кто не хочет остаться за бортом агентизации, придётся всерьез инвестировать в качество данных. Иначе резонанс от наложения бардака в базах и эмерджентности моделей разнесёт не только бюджеты, но и карьеры.
Одно дело —…
Заметки на полях. Инженерно-виртуальное.
Поднял в МГТУ для нужд нашего подразделения кластер ALT Виртуализации. В принципе - PVE как PVE. В базе - версия 8.4, после установки вполне обновляется до PVE 9.1.4 из коробки.
Всё достаточно традиционно, для гипервизора. Из интересного, заявляют интеграцию с netbox ipam, но пока не сильно бодро работает, поскольку требует знать "какой там на самом деле netbox версии и откуда брали провайдера API". Со временем докручу себе это добро до состояния слабозатратной истории по времени.
Развернул там первую лабу для ИБшников, сидят пентестят в изолированных сетках себе там что-то. Радуются.
Если по значимым вехам:
1. ТЗ на закупку было сформировано год назад. Причём мы формировали его исходя из "нищебродского представления о том, что нам дадут". Дали то, что попросили. Даже удивительно.
2. Из приятного, мы просили в ТЗ только сервера, и хранилку. Поставщик попался грамотный, добрый и докинул всякого монтажного, вроде кабель-каналов, PDU-шек, колец, шины заземления, стяжки и вот это всё. Спасибо ему за это.
3. Серваки в базе неплохие ASUSы. Но в реестре =) При этом я настоятельно рекомендую всем сервера перед первым запуском вскрыть, посмотреть на сборку. Иногда братья-китайцы могу насобирать конечно...
4. Сборка-техприсоединение-финальный монтаж заняли дня 4, но растянуто по времени аж на 2 месяца. Б - Бббюрокррратия.
А, и ещё, если кому-то что-то очень надо - оно делается. Найти тех, кому очень надо - это сложно.
Ещё одно замечание:
Пока что ВУЗы тащат на студентах и профессуре. Спецов которые могут на полную вовлекаться в задачи там найти - это прям задача задач.
#инженерия #образование #альтвиртуализация #цод
Поднял в МГТУ для нужд нашего подразделения кластер ALT Виртуализации. В принципе - PVE как PVE. В базе - версия 8.4, после установки вполне обновляется до PVE 9.1.4 из коробки.
Всё достаточно традиционно, для гипервизора. Из интересного, заявляют интеграцию с netbox ipam, но пока не сильно бодро работает, поскольку требует знать "какой там на самом деле netbox версии и откуда брали провайдера API". Со временем докручу себе это добро до состояния слабозатратной истории по времени.
Развернул там первую лабу для ИБшников, сидят пентестят в изолированных сетках себе там что-то. Радуются.
Если по значимым вехам:
1. ТЗ на закупку было сформировано год назад. Причём мы формировали его исходя из "нищебродского представления о том, что нам дадут". Дали то, что попросили. Даже удивительно.
2. Из приятного, мы просили в ТЗ только сервера, и хранилку. Поставщик попался грамотный, добрый и докинул всякого монтажного, вроде кабель-каналов, PDU-шек, колец, шины заземления, стяжки и вот это всё. Спасибо ему за это.
3. Серваки в базе неплохие ASUSы. Но в реестре =) При этом я настоятельно рекомендую всем сервера перед первым запуском вскрыть, посмотреть на сборку. Иногда братья-китайцы могу насобирать конечно...
4. Сборка-техприсоединение-финальный монтаж заняли дня 4, но растянуто по времени аж на 2 месяца. Б - Бббюрокррратия.
А, и ещё, если кому-то что-то очень надо - оно делается. Найти тех, кому очень надо - это сложно.
Ещё одно замечание:
Пока что ВУЗы тащат на студентах и профессуре. Спецов которые могут на полную вовлекаться в задачи там найти - это прям задача задач.
#инженерия #образование #альтвиртуализация #цод
Заметка про ИИшное и всякое RAG-оподобное.
Начал активно тестить RAGFlow. Достаточно долго разбирался как оно устроено. Во первых могу сразу сказать, что продукта там нет. Есть некоторый набор тулов, которым можно попробовать что-то нашаманить. По крайней мере в комунити версии.
Как построил эксперимент:
Взял 42 статьи по инженерии требований разного рода, и дал сьесть RAGflow дефолтным пайплайном по формату Paper.
В качестве индексирующей модели использовал Квант Qwen3.6 A3B 35B Q8_0 от Triago
В качестве модели эмбеддингов: Квант Qwen3 Embeddings 4B Q8_0 от DevQasar
Реранкер: Квант Qwen3 Rerank 4B Q8_0 от DevQasar
Сделал чат внутри RAGFlow и попробовал с ним "поговорить" используя разные модели.
На что обратил внимание:
1. Была пара неприятных багов на версии 0.25.4 (дождался выхода 0.25.6 вроде пофиксилось)
2. Дефолтный пайплайн на моём Halo Strix крутился 4 суток. На 42 статьи.
3. Даже если поиск что-то возвращает, модели могут достаточно сильно лажать в интерпретации. Вот пример когда на один и тот же запрос две модели построили разный retrieval и совершенно по-разному отреагировали.
В общем как и ожидалось, наивное использование инструментов, и RAG в т.ч. - прожигание денег и времени.
RAGFlow сразу предлагает интегрироваться с LangFuse-сервером, что как говорится поможет оптимизировать промпты и запросы. Но тут сразу вопрос к компьюту. Откуда его столько выкопать...
Начал активно тестить RAGFlow. Достаточно долго разбирался как оно устроено. Во первых могу сразу сказать, что продукта там нет. Есть некоторый набор тулов, которым можно попробовать что-то нашаманить. По крайней мере в комунити версии.
Как построил эксперимент:
Взял 42 статьи по инженерии требований разного рода, и дал сьесть RAGflow дефолтным пайплайном по формату Paper.
В качестве индексирующей модели использовал Квант Qwen3.6 A3B 35B Q8_0 от Triago
В качестве модели эмбеддингов: Квант Qwen3 Embeddings 4B Q8_0 от DevQasar
Реранкер: Квант Qwen3 Rerank 4B Q8_0 от DevQasar
Сделал чат внутри RAGFlow и попробовал с ним "поговорить" используя разные модели.
На что обратил внимание:
1. Была пара неприятных багов на версии 0.25.4 (дождался выхода 0.25.6 вроде пофиксилось)
2. Дефолтный пайплайн на моём Halo Strix крутился 4 суток. На 42 статьи.
3. Даже если поиск что-то возвращает, модели могут достаточно сильно лажать в интерпретации. Вот пример когда на один и тот же запрос две модели построили разный retrieval и совершенно по-разному отреагировали.
В общем как и ожидалось, наивное использование инструментов, и RAG в т.ч. - прожигание денег и времени.
RAGFlow сразу предлагает интегрироваться с LangFuse-сервером, что как говорится поможет оптимизировать промпты и запросы. Но тут сразу вопрос к компьюту. Откуда его столько выкопать...
Заметка на полях.
Сегодня потратил день на интеграцию парсера PDF-ок OpenDataLoader в свой RAGFlow.
1. RAGFlow - это достаточно упоротые парни. И контракты там пишут... с изюминкой. Не очень понятно как и на что они надеялись и на что объявляя совместимость с решением ODL, но обёртку парсер пришлось сделать самому.
2. Сборку контейнера ODL сделал под свой HaloStrix. Парсит конечно сверхбыстро. pdf-ку на 150 страниц за 2 секунды переварил.
3. Пайплайны RAGFlow - это что-то с чем-то. Встроенные работают... как-то. Например запросто можно получить чанк на 8500 токенов на пайплайне Paper.
4. Некоторую часть работы скинул на openrouter с gpt4-120b:free. Вполне себе тащит, да, не быстро, но работает.
Проверил чатик с RAG-ом по статьям на нескольких моделях. Впечатления такие:
Qwen3.6-35B-A3B - самая галлюцинирующая, но галлюцинирует ОЧЕНЬ похоже на правду. Типичный ответ: Я тут ничего не нашёл, но вот то, что знаю.
Gemma-E4B - работает вполне нормально и адекватно
gpt4-120b:free - самый тупой. И ищет плохо, и рассуждает неочень.
#аишечка #rag #инженерное
Сегодня потратил день на интеграцию парсера PDF-ок OpenDataLoader в свой RAGFlow.
1. RAGFlow - это достаточно упоротые парни. И контракты там пишут... с изюминкой. Не очень понятно как и на что они надеялись и на что объявляя совместимость с решением ODL, но обёртку парсер пришлось сделать самому.
2. Сборку контейнера ODL сделал под свой HaloStrix. Парсит конечно сверхбыстро. pdf-ку на 150 страниц за 2 секунды переварил.
3. Пайплайны RAGFlow - это что-то с чем-то. Встроенные работают... как-то. Например запросто можно получить чанк на 8500 токенов на пайплайне Paper.
4. Некоторую часть работы скинул на openrouter с gpt4-120b:free. Вполне себе тащит, да, не быстро, но работает.
Проверил чатик с RAG-ом по статьям на нескольких моделях. Впечатления такие:
Qwen3.6-35B-A3B - самая галлюцинирующая, но галлюцинирует ОЧЕНЬ похоже на правду. Типичный ответ: Я тут ничего не нашёл, но вот то, что знаю.
Gemma-E4B - работает вполне нормально и адекватно
gpt4-120b:free - самый тупой. И ищет плохо, и рассуждает неочень.
#аишечка #rag #инженерное
GitHub
GitHub - opendataloader-project/opendataloader-pdf: PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.
PDF Parser for AI-ready data. Automate PDF accessibility. Open-source. - opendataloader-project/opendataloader-pdf
Заметки на полях. Аишное.
Пару дней пробовал сделать следующую историю:
1. Взять pdf-ку с презентацией, распарсить её на чанки
2. Разметить чанки метаданными на основании кастомной онтологии
3. Засунуть в RAG чтобы оно там лежало
4. Сделать чатик с моделью использующей размеченные данные
Упёрся в достаточно простую, казалось бы, вещь. PDF-это такая свалка форматов, что его распарсить - это отдельный адЪ. Некоторые виды PDF-ок ODL разбирает очень хорошо. Но как только дело касается презентаций выгруженных из фигмы, powerpoint и другого кастомного ... добра, сразу упираемся с ограничения тулов.
В общем не рекомендую самодеятельность в этом плане, либо всё таки сводить PDF-ки к внятному стандартизированному формату для загрузки в RAG.
Пару дней пробовал сделать следующую историю:
1. Взять pdf-ку с презентацией, распарсить её на чанки
2. Разметить чанки метаданными на основании кастомной онтологии
3. Засунуть в RAG чтобы оно там лежало
4. Сделать чатик с моделью использующей размеченные данные
Упёрся в достаточно простую, казалось бы, вещь. PDF-это такая свалка форматов, что его распарсить - это отдельный адЪ. Некоторые виды PDF-ок ODL разбирает очень хорошо. Но как только дело касается презентаций выгруженных из фигмы, powerpoint и другого кастомного ... добра, сразу упираемся с ограничения тулов.
В общем не рекомендую самодеятельность в этом плане, либо всё таки сводить PDF-ки к внятному стандартизированному формату для загрузки в RAG.
Заметки на полях.
Давно не писал, но обнаружил тему, где стоит докинуть кеонтекста.
Из того, что я сейчас наблюдаю в сфере построения мультиагентных систем, я не вижу ни одной отсылки к такой области как "Теория коммуникаций". Более того, проведя несколько запросов в Elicit стало понятно, что вопрос "Внутренней-Внешней" коммуникации в агентных системах вообще сейчас вне рассмотрения как инженерного, так и академического сообщества. Внятных работ в этой области вообще мало, и пока только на уровне лабораторных работ.
В одной из последних работ для мультагентной системы задаётся в сути две проблемы. С одной стороны нужно решить КОГДА инициировать коммуникацию, а с другой стороны нужно определить ЧТО сделать предметом коммуникации. В ИИ-шных системах эта проблема особенно актуальна, поскольку мы можем в некотором роде считать, что БЯМ "знают всё" (т.е. могут относительно семантически корректно составить любое высказывание), с другой стороны мы точно можем сказать, что БЯМ не содержат знаний самих по себе. Т.к. они строят высказывания на основании некоторых вероятностных сходств. Но чтобы не упираться в онтологическую дискуссию о том, что такое знание, сюда не полезу. Пока сформулирую это так:
БЯМ - может с некоторой вероятностью построить значимое высказывание в любой предметной области.
Однако с практической точки зрения вопрос становится непраздным. Поскольку стоимость решения задачи в токенах напрямую зависит от того, сколько высказываний пришлось построить от первичного пользовательского ввода до прагматичного решения задачи. Поэтому вполне уместным кажется обратиться к устоявшимся предметным областям в вопросе организации коммуникаций.
В указанной выше работе информация доступная агентам сразу делится на: Разделяемую, и частную. Более того, часть "внутренней информации" всегда может быть проигнорирована при принятии решения о необходимости коммуникации. Что порождает достаточно интересную часть задачи о проектировании мультиагентной системы.
Если под "общей информацией" подразумевать некоторый тезаурус, то для снижения количества галлюцинаций имеет смысл копнуть в сторону контроля состояния этого тезауруса.
Давно не писал, но обнаружил тему, где стоит докинуть кеонтекста.
Из того, что я сейчас наблюдаю в сфере построения мультиагентных систем, я не вижу ни одной отсылки к такой области как "Теория коммуникаций". Более того, проведя несколько запросов в Elicit стало понятно, что вопрос "Внутренней-Внешней" коммуникации в агентных системах вообще сейчас вне рассмотрения как инженерного, так и академического сообщества. Внятных работ в этой области вообще мало, и пока только на уровне лабораторных работ.
В одной из последних работ для мультагентной системы задаётся в сути две проблемы. С одной стороны нужно решить КОГДА инициировать коммуникацию, а с другой стороны нужно определить ЧТО сделать предметом коммуникации. В ИИ-шных системах эта проблема особенно актуальна, поскольку мы можем в некотором роде считать, что БЯМ "знают всё" (т.е. могут относительно семантически корректно составить любое высказывание), с другой стороны мы точно можем сказать, что БЯМ не содержат знаний самих по себе. Т.к. они строят высказывания на основании некоторых вероятностных сходств. Но чтобы не упираться в онтологическую дискуссию о том, что такое знание, сюда не полезу. Пока сформулирую это так:
БЯМ - может с некоторой вероятностью построить значимое высказывание в любой предметной области.
Однако с практической точки зрения вопрос становится непраздным. Поскольку стоимость решения задачи в токенах напрямую зависит от того, сколько высказываний пришлось построить от первичного пользовательского ввода до прагматичного решения задачи. Поэтому вполне уместным кажется обратиться к устоявшимся предметным областям в вопросе организации коммуникаций.
В указанной выше работе информация доступная агентам сразу делится на: Разделяемую, и частную. Более того, часть "внутренней информации" всегда может быть проигнорирована при принятии решения о необходимости коммуникации. Что порождает достаточно интересную часть задачи о проектировании мультиагентной системы.
Если под "общей информацией" подразумевать некоторый тезаурус, то для снижения количества галлюцинаций имеет смысл копнуть в сторону контроля состояния этого тезауруса.
arXiv.org
Optimal communication and control strategies in a multi-agent MDP problem
The problem of controlling multi-agent systems under different models of information sharing among agents has received significant attention in the recent literature. In this paper, we consider a...
Заметки на полях. Буду продолжать развивать тему мультиагентной коммуникации в открытых средах. Несколько заметок будут с базой, а дальше - будем потихоньку углубляться. Начнём с простого.
По-умолчанию можно считать, что мультиагентных системах (MAS) коммуникация является не «добавочной» функцией поверх некоторого фиксированного, заранее заданного поведения, а частью механизма выполнения целевой функции. Агенты координируют планы, уточняют имеющиеся данные, согласуют ожидания и проверяют интерпретации сообщений и выполняют множество других целенаправленных коммуникационных актов.
Поэтому происходящие внутри MAS процессы необходимо рассматривать как с инженерной, прикладной, так и с теоретической точки зрения. Теоретическая точка зрения фокусируется на том, какие именно задачи необходимо решить, для того, чтобы получить решение прикладной задачи. Инженерная - на определении класса задачи и выделении известных решений, которые можно применить на практике.
Коммуникация в любой системе всегда является областью неизбежных ресурсных затрат(потерь с точки зрения целевой функции) затрачиваемых на сопротивление "среды" коммуникации. С точки зрения ТРИЗ в идеальная функция коммуникации есть, а стоимость коммуникации равна нулю, или близка к нему. Примером "почти идеальной функции" является передача указателя в памяти внутри программного процесса. Это вычислительно стоит почти ноль, относительно целевой функции, вероятность ошибки близка к нулю, а функция коррекции относительно целевой функции программного процесса стоит так же крайне дёшево.
Но в современных MAS агенты общаются в открытой разнородной среде, и такая среда обладает некоторым "сопротивлением" распространения содержания коммункации.
Традиционно выделяют канал коммуникации, состоящий из Источника сигнала, Приёмника сигнала и Среды передачи сигнала, и содержание коммуникации. Т.е. практический смысл, некоторая интерпретация сигнала. Для любого сигнала базово выделяется алфавит, синтаксис и семантика.
А если говорить про потери, то традиционно принято считать, что :
Коммуникация возможна тогда и только тогда, когда гарантирована достаточно полная передача смысла.
Мы можем потерять часть сигнала, и из-за этого ошибиться в его интерпретации. Но если мы полностью приняли сигнал, мы гарантировано можем его корректно обработать. Если это не так, то традиционно считается, что такая MAS не жизнеспособна.
И до нынешних пор семантические потери в вычислительных (ИТ-системах) MAS было принято считать равными или близкими к нулю. Поскольку при согласованном протоколе общения на интерфейсе, любая пара агентов действуя согласно контракту ВСЕГДА сохраняет возможность корректно интерпретировать семантику на уровне заданных вычислительных правил. Т.е. коммуникация делилась на фазу установления, и фазу исполнения. В работе - фаза исполнения, переключение между интерфейсами - фаза установления. А контракты задаются внешними правилами.
Однако с появлением генеративных моделей появился феномен галлюцинации. И при общении вычислительных агентов даже при заданном протоколе коммуникации с ненулевой вероятности в содержание коммуникации вносятся устойчивые искажения.
Более того, явно есть попытка положиться на генеративные модели, как на модели самостоятельно выделяющие семантику, и выделяющие смысл внешнего запроса внутри. Для выполнения запроса на основании динамически выделяемого смысла в MAS необходимо контролировать чтобы смысл был "общим", для всего множества агентов. И каждая попытка «сделать смысл общим» расходует время, вычисления, пропускную способность, внимание (в человеко-ориентированных контурах проектирования), контекст БЯМ. А что что особенно важно для современных систем с применением БЯМ, расходуется достоверность контекста и расходуется стабильность коллективного состояния.
#инженерное #аишечка #внимание
По-умолчанию можно считать, что мультиагентных системах (MAS) коммуникация является не «добавочной» функцией поверх некоторого фиксированного, заранее заданного поведения, а частью механизма выполнения целевой функции. Агенты координируют планы, уточняют имеющиеся данные, согласуют ожидания и проверяют интерпретации сообщений и выполняют множество других целенаправленных коммуникационных актов.
Поэтому происходящие внутри MAS процессы необходимо рассматривать как с инженерной, прикладной, так и с теоретической точки зрения. Теоретическая точка зрения фокусируется на том, какие именно задачи необходимо решить, для того, чтобы получить решение прикладной задачи. Инженерная - на определении класса задачи и выделении известных решений, которые можно применить на практике.
Коммуникация в любой системе всегда является областью неизбежных ресурсных затрат(потерь с точки зрения целевой функции) затрачиваемых на сопротивление "среды" коммуникации. С точки зрения ТРИЗ в идеальная функция коммуникации есть, а стоимость коммуникации равна нулю, или близка к нему. Примером "почти идеальной функции" является передача указателя в памяти внутри программного процесса. Это вычислительно стоит почти ноль, относительно целевой функции, вероятность ошибки близка к нулю, а функция коррекции относительно целевой функции программного процесса стоит так же крайне дёшево.
Но в современных MAS агенты общаются в открытой разнородной среде, и такая среда обладает некоторым "сопротивлением" распространения содержания коммункации.
Традиционно выделяют канал коммуникации, состоящий из Источника сигнала, Приёмника сигнала и Среды передачи сигнала, и содержание коммуникации. Т.е. практический смысл, некоторая интерпретация сигнала. Для любого сигнала базово выделяется алфавит, синтаксис и семантика.
А если говорить про потери, то традиционно принято считать, что :
Коммуникация возможна тогда и только тогда, когда гарантирована достаточно полная передача смысла.
Мы можем потерять часть сигнала, и из-за этого ошибиться в его интерпретации. Но если мы полностью приняли сигнал, мы гарантировано можем его корректно обработать. Если это не так, то традиционно считается, что такая MAS не жизнеспособна.
И до нынешних пор семантические потери в вычислительных (ИТ-системах) MAS было принято считать равными или близкими к нулю. Поскольку при согласованном протоколе общения на интерфейсе, любая пара агентов действуя согласно контракту ВСЕГДА сохраняет возможность корректно интерпретировать семантику на уровне заданных вычислительных правил. Т.е. коммуникация делилась на фазу установления, и фазу исполнения. В работе - фаза исполнения, переключение между интерфейсами - фаза установления. А контракты задаются внешними правилами.
Однако с появлением генеративных моделей появился феномен галлюцинации. И при общении вычислительных агентов даже при заданном протоколе коммуникации с ненулевой вероятности в содержание коммуникации вносятся устойчивые искажения.
Более того, явно есть попытка положиться на генеративные модели, как на модели самостоятельно выделяющие семантику, и выделяющие смысл внешнего запроса внутри. Для выполнения запроса на основании динамически выделяемого смысла в MAS необходимо контролировать чтобы смысл был "общим", для всего множества агентов. И каждая попытка «сделать смысл общим» расходует время, вычисления, пропускную способность, внимание (в человеко-ориентированных контурах проектирования), контекст БЯМ. А что что особенно важно для современных систем с применением БЯМ, расходуется достоверность контекста и расходуется стабильность коллективного состояния.
#инженерное #аишечка #внимание
👍1
Заметки на инженерных полях
Заметки на полях. Буду продолжать развивать тему мультиагентной коммуникации в открытых средах. Несколько заметок будут с базой, а дальше - будем потихоньку углубляться. Начнём с простого. По-умолчанию можно считать, что мультиагентных системах (MAS) коммуникация…
В связи с этим необходимо исследовать, каким образом можно разделить затраты на установление доверенной коммункиации, восполнение ресурса достоверности контекста, и стабилизацию колективного состояния между фазами "подготовки к коммуникации"(offline communcation phase) и "исполнения"(runtime communication phase).
Плюс исследовать как данные затраты влияют на традиционные модели построения информационных систем, как меняется при этом функция эффективности, и какие прагматические выводы из этого можно сделать.
Поэтому я тут начну публиковать заметки по систематическому анализу ресурсных потерь, возникающих как при установлении коммуникационного канала, так и в процессе самого коммуникационного акта в современных MAS.
На данный момент у меня основная гипотеза - это закон сохранения стоимости коммуникации:
❗️ Любое архитектурное решение принятое при проектировании коммуникации способно только перераспределить затраты их между различными фазами и типами, но не способно исключить их в целом.
——
❗️Почему это актуально
Несмотря на десятилетия исследований в области коммуникации MAS, отсутствует единый язык и формальный аппарат для сравнительного анализа ресурсных затрат различных архитектур. Существующие подходы, от формальных языков типа KQML/FIPA ACL до современных LLM-систем, оцениваются по разнородным метрикам. Это затрудняет понимание фундаментальных компромиссов и принципа перераспределения затрат между фазами setup и act. Литература фрагментирована на исследования отдельных парадигм, без общей таксономии, которая позволила бы системно сопоставить, например, стоимость разработки онтологии со стоимостью runtime-верификации семантики в системе с использованием БЯМ. Несколько глубоких исследований и попыток найти обобщающие материалы при помощи анализа сборников arXiv и других при помощи Elicit.ai - потерпели неудачу.
❓На какие вопросы нужно ответить как минимум
1️⃣ Какие классы ресурсных потерь возникают в коммуникации MAS и как их можно классифицировать по фазам (setup vs. act) и моменту вычисления (offline vs. online)?
2️⃣ Можно ли формализовать эти классы потерь в виде единой системы метрик, применимой к различным архитектурам (от ACL до LLM) и если да, то как?
3️⃣ Действительно ли существует ли «закон сохранения стоимости», согласно которому снижение затрат в одной фазе (например, снижение затрат на подготовку к коммуникции между LLM-агентами) неизбежно ведет к их росту в другой (например, act-phase затраты на митигацию галлюцинаций)?
4️⃣ Как эволюционировал профиль ресурсных потерь по мере перехода от символических архитектур коммуникаций к коммуникациям с использованием генеративного ИИ?
Please open Telegram to view this post
VIEW IN TELEGRAM
Заметки на исследовательском поле.
Продолжаю копать в сторону того, что вообще происходит в мультиагентных системах.
Накопал фундаментальные работы по мультиагентной коммуникации. Что интересное проявляется.
Первое, фундаментальное:
МАС - имеет общую цель и общую функцию. Если таковое выделить нельзя - это несколько систем.
Альтернативой этой концепции выступает Гараедаги с его Multiminded systems, но вся его концепция держится на фундаментальном допущении, что произвольно взятое множество агентов можно договорить в принципе. Но тут вступает в силу сложность контекста и рушит предлагаемый им "алгоритм решения" до практически сильно ограниченно применимого. В отдельной компании с выделенным высшим арбитром - да, можно. В реальном мире открытых взаимодействий можно забить на эту концепцию. Мы никогда не знаем намерений создателя сервиса и его целевую функцию, а любой арбитраж разобьётся о пачку юрисдикций, и возможности силового решения сторонами своих задач.
Второе фундаментальное:
Вообще за агента можно принимать любую целенаправленную или наблюдаемо целенаправленную штуку. А основные вопросы которые стоят при проектировании МАС с участием штуки - это вопросы сравнительной стоимости следующих кусков деятельности:
1. Спроектировать достаточно полную структуру общения агентов в текущей среде, чтобы всё, что они делают совместно приводило к общему результату
2. Доработать инфраструктуру так, чтобы планируемая задача была решаема в рамках ограничений
3. Сделать так, чтобы цена синхронизации состояний в процессе была приемлема при попытке решить частную задачу
Третье фундаментальное:
В современных МАС у нас стакаются три типа агентов, люди, роботы, БЯМки. И если роботы с людьми ещё как-то работают вместе, запроектировав защиту от дурака, используя разные методы safety engeneering, то с добавлением сюда ещё и галлюцинирующих моделей применимоcть SE ограничивается только роботами. А сложность предсказания катастрофического сценария выходит за пределы возможностей предсказания какой-либо математикой. В том смысле, что стоимость предсказания катастрофы становится сопоставима со стоимостью устранения её последствий.
Поэтому проектируя новые системы критически важно принять аксиому о неизбежности катастрофы. Я её формулирую так:
Как бы хорошо ни была спроектирована мультиагентная система на достаточно длительном периоде существования она ОБЯЗАТЕЛЬНО станет частью катастрофического сценария, который невозможно как предсказать, так и предотвратить.
Это прямое следствие закона Мёрфи, вроде бы очевидное, но нет. Пока мы верим в силу ИИ и в то, что "мы справимся".
#инженерия #инженерное #рефлексия #архитектура
Продолжаю копать в сторону того, что вообще происходит в мультиагентных системах.
Накопал фундаментальные работы по мультиагентной коммуникации. Что интересное проявляется.
Первое, фундаментальное:
МАС - имеет общую цель и общую функцию. Если таковое выделить нельзя - это несколько систем.
Альтернативой этой концепции выступает Гараедаги с его Multiminded systems, но вся его концепция держится на фундаментальном допущении, что произвольно взятое множество агентов можно договорить в принципе. Но тут вступает в силу сложность контекста и рушит предлагаемый им "алгоритм решения" до практически сильно ограниченно применимого. В отдельной компании с выделенным высшим арбитром - да, можно. В реальном мире открытых взаимодействий можно забить на эту концепцию. Мы никогда не знаем намерений создателя сервиса и его целевую функцию, а любой арбитраж разобьётся о пачку юрисдикций, и возможности силового решения сторонами своих задач.
Второе фундаментальное:
Вообще за агента можно принимать любую целенаправленную или наблюдаемо целенаправленную штуку. А основные вопросы которые стоят при проектировании МАС с участием штуки - это вопросы сравнительной стоимости следующих кусков деятельности:
1. Спроектировать достаточно полную структуру общения агентов в текущей среде, чтобы всё, что они делают совместно приводило к общему результату
2. Доработать инфраструктуру так, чтобы планируемая задача была решаема в рамках ограничений
3. Сделать так, чтобы цена синхронизации состояний в процессе была приемлема при попытке решить частную задачу
Третье фундаментальное:
В современных МАС у нас стакаются три типа агентов, люди, роботы, БЯМки. И если роботы с людьми ещё как-то работают вместе, запроектировав защиту от дурака, используя разные методы safety engeneering, то с добавлением сюда ещё и галлюцинирующих моделей применимоcть SE ограничивается только роботами. А сложность предсказания катастрофического сценария выходит за пределы возможностей предсказания какой-либо математикой. В том смысле, что стоимость предсказания катастрофы становится сопоставима со стоимостью устранения её последствий.
Поэтому проектируя новые системы критически важно принять аксиому о неизбежности катастрофы. Я её формулирую так:
Как бы хорошо ни была спроектирована мультиагентная система на достаточно длительном периоде существования она ОБЯЗАТЕЛЬНО станет частью катастрофического сценария, который невозможно как предсказать, так и предотвратить.
Это прямое следствие закона Мёрфи, вроде бы очевидное, но нет. Пока мы верим в силу ИИ и в то, что "мы справимся".
#инженерия #инженерное #рефлексия #архитектура
Заметки на полях. Продолжая тему применения больших языковых моделей в некоторых процессах.
Вообще достаточно очевидно, что первостепенный представляет интерес в качестве объекта редактирования при работе с LLM-агентами тот контекст, который содержится в контекстном окне. И тут для нас было бы замечательно закрепить базу, что там вообще есть. Для начала вспомним любой курс по ЛЛМкам и там будет что-то вроде :
Контекстное окно заполняется следующими элементами:
- Системный промпт
- Пользовательский промпт
- История чата
- Внешний контекст
Однако, это в контексте единичной генерации. А в длительных цепочках рассуждений и больших диалогах? При простой последовательной генерации без дополнительных манипуляций контекстом - всё достаточно просто. На картинках я это разрисовал.
Но достаточно ли это для хорошей генерации?
Конечно нет, поскольку зная использованные типы данных, мы можем произвести несколько замечательных манипуляций с контекстом:
1. Удаление лишнего
2. Упорядочивание контекста по мере значимости типов данных
3. Редактирование отдельных элементов контекста
Например мы можем проанализировать структуру вызовов инструментов, и оставить только данные высокой степени релевантности, нормализовать контекст онтологически в рамках целевого процесса и другие интересные вещи.
Чем мы за этом платим:
- Каждый вызов генератора - нужно парсить заново контекст. Возможно весь. И скорее всего мы потеряем возможность использовать контекстные чекпоинты большого размера (500+ токенов).
Что мы в итоге получаем:
- Уменьшаем влияние проблемы "Потерянной середины"
- Экономим размер контекстного окна
- Повышаем релевантность генерации
Вроде бы элементарная база, но почему-то я ни разу не видел, чтобы её открыто обсуждали. А ведь кажется, что именно в этом и заключается Context engeneering.
#аишечка #инженерия #внимание #архитектура
Вообще достаточно очевидно, что первостепенный представляет интерес в качестве объекта редактирования при работе с LLM-агентами тот контекст, который содержится в контекстном окне. И тут для нас было бы замечательно закрепить базу, что там вообще есть. Для начала вспомним любой курс по ЛЛМкам и там будет что-то вроде :
Контекстное окно заполняется следующими элементами:
- Системный промпт
- Пользовательский промпт
- История чата
- Внешний контекст
Однако, это в контексте единичной генерации. А в длительных цепочках рассуждений и больших диалогах? При простой последовательной генерации без дополнительных манипуляций контекстом - всё достаточно просто. На картинках я это разрисовал.
Но достаточно ли это для хорошей генерации?
Конечно нет, поскольку зная использованные типы данных, мы можем произвести несколько замечательных манипуляций с контекстом:
1. Удаление лишнего
2. Упорядочивание контекста по мере значимости типов данных
3. Редактирование отдельных элементов контекста
Например мы можем проанализировать структуру вызовов инструментов, и оставить только данные высокой степени релевантности, нормализовать контекст онтологически в рамках целевого процесса и другие интересные вещи.
Чем мы за этом платим:
- Каждый вызов генератора - нужно парсить заново контекст. Возможно весь. И скорее всего мы потеряем возможность использовать контекстные чекпоинты большого размера (500+ токенов).
Что мы в итоге получаем:
- Уменьшаем влияние проблемы "Потерянной середины"
- Экономим размер контекстного окна
- Повышаем релевантность генерации
Вроде бы элементарная база, но почему-то я ни разу не видел, чтобы её открыто обсуждали. А ведь кажется, что именно в этом и заключается Context engeneering.
#аишечка #инженерия #внимание #архитектура