LLM Wiki в дії: як агент у Docker за одну ніч зберіг лекції зруйнованого війною фізика у самооновлюваній вікі

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Нещодавно я опублікував на DOU статтю «Від RAG до LLM Wiki: як побудувати персистентну базу знань за концепцією Андрея Карпати». У ній ми розбирали теорію: чому класичний RAG змушує модель щоразу «відкривати Америку» і як заміна векторного пошуку на скомпільовану й пов’язану перехресними посиланнями Markdown-базу знань (під керуванням ШІ-агента) вирішує проблему «рутинної плати» (bookkeeping tax).

Сьогодні я хочу поділитися живим кейсом. Це історія про те, як теорія перетворилася на інструмент цифрової стійкості знань, коли реальний науковий архів опинився під загрозою повного зникнення внаслідок ракетного удару.

Контекст: трагедія, що стала поштовхом

У ніч проти 2 липня 2026 року російська ракетна атака на Київ (під час якої ворог випустив 74 ракети та 496 дронів) зруйнувала будинок біля кіностудії ім. Довженка. У цьому будинку згоріли квартири родини доцента КНУ імені Тараса Шевченка, відомого фізика та популяризатора науки Михайла Висоцького, а також житло його батьків.

Вогонь ущент знищив документи, техніку, наукові напрацювання та сімейний архів, який збирався понад 100 років. Сам Михайло прокоментував так: «У нас не залишилося абсолютно нічого... знищене все моє життя».

Через втрату обладнання та архівів Михайло повідомив, що, ймовірно, припиняє роботу над своїм YouTube-каналом, де він роками безкоштовно ділився глибокими науково-популярними лекціями з фізики, космології та астрофізики.

Для мене це стало тригером. Особисті фізичні архіви науковця, на жаль, втрачені назавжди. Але його публічні лекції на YouTube — це знання, які все ж можна врятувати.

Що було зроблено: архівація знань

Я побудував незалежний освітній архів на базі відкритих відеолекцій каналу «Михайло Висоцький: науково-популярні лекції». Результатом став сайт «Науковий образ світу».

Станом на зараз база знань налічує:

  • 48 вихідних джерел (очищених транскриптів лекцій) у папці raw/, які були пакетно імпортовані;
  • 41 сторінка концепцій (wiki/concepts/) та сутностей (wiki/entities/), що охоплюють квантову фізику, теорію відносності, космологію, біологічну еволюцію, науковий метод тощо;

Технічна архітектура: LLM Wiki під капотом

Весь контент сайту та структуру зв’язків згенерував LLM-агент, запущений локально в Docker-контейнері. Я виступав виключно в ролі архітектора та валідатора (підхід human-in-the-loop).

Проєкт побудовано за канонами патерну LLM Wiki, проте його доповнено генератором MkDocs:

.  
├── src/  
│   ├── hooks.py       # Python-хуки збірки MkDocs
│   ├── config.yaml    # Конфігурація для хуків  
│   ├── templates/     # Шаблони розмітки для збірки сторінок  
│   └── overrides/     # Кастомні перевизначення шаблонів теми Material   
├── mkdocs.yml         # Основний конфігураційний файл сайту
└── data/              # Каталог із вихідними даними  
   ├── raw/            # Первинні джерела
   ├── wiki/           # Вікі-база знань
   ├── pages/          # Статичні сторінки
   └── static/         # Статичні файли

1. Ізольовані субагенти для імпорту (Ingest)

Це ключове рішення, про яке я згадував у теоретичній статті. Замість того, щоб «годувати» головного агента десятками транскриптів лекцій одночасно (що миттєво забило б контекстне вікно моделі та призвело до галюцинацій), архітектура передбачає запуск ізольованих субагентів. Головний оркестратор брав один файл транскрипту лекції, створював під нього чистого субагента, який аналізував текст, створював або оновлював файли концепцій і повертав результат. Після цього субагент знищувався, а оркестратор переходив до наступного файлу.

2. Контроль якості через Git Diff

Моделі схильні помилятися. Щоб гарантувати точність, кожна дія агента фіксувалася локальними змінами в Git. Перед публікацією я перевіряв зміни через git diff. Якщо агент неправильно пов’язав концепції або спотворив науковий термін, я скасовував зміни (або відкочував коміт) і коригував інструкції.

3. MkDocs, Python та кастомні хуки

Сайт рендериться як статичний за допомогою генератора MkDocs з темою Material. Для керування залежностями та швидкої збірки використовується сучасний інструмент uv:

uv run mkdocs build

Стандартний MkDocs «із коробки» не ідеально виконував це завдання, тому агент під моїм контролем написав кастомні хуки на Python, що автоматизували рутину:

  • Сортування кирилиці: Стандартне сортування MkDocs ламається на українських літерах (І, Є, Ґ тощо), якщо в системі чи Docker-контейнері немає потрібної системної локалі. Хук реалізує сортування без прив’язки до локалей ОС.
  • Динамічна навігація: Ми не прописували розділ nav у mkdocs.yml вручну. Хук самостійно сканує папки concepts/ та entities/ і будує дерево меню «на льоту».
  • Інтерактивні віджети: Реалізовано блок «Випадкові статті» з адаптивною мобільною версткою, щоб читачам було зручніше досліджувати базу знань.

Процес: «з телефона на дитячому майданчику»

Найбільше вау-враження від цього проєкту — це зміна ролі розробника. Я не писав тексти статей і не проставляв сотні перехресних посилань вручну. Більшість роботи зробив агент, поки я гуляв з дитиною на вулиці.

Mій workflow виглядав так:

  1. Запустив Docker-контейнер з агентом через SSH-клієнт на телефоні.
  2. Через чат в месенджері поставив задачу клонувати репозиторій.
  3. Доручив агенту зробити транскрипти лекцій та закинути в папку inbox/.
  4. Запустив скіл імпорту (ingest) та пішов спати.
  5. Понад 4 години агент у Docker автономно та послідовно обробляв десятки текстів, будуючи зв’язки.
  6. Зранку я перевірив результат і переконався, що структура є логічною.

Це наочна демонстрація відсутності «рутинної плати» (bookkeeping tax). Вся механічна робота делегована ШІ, людина лише коригує вектор руху та валідує кінцевий результат.

Чому це важливо для спільноти?

Війна показала, що цифрова інфраструктура та фізичні носії є вразливими. Підхід LLM Wiki — це не просто спосіб зекономити час на веденні нотаток. Це інструмент цифрової стійкості знань (digital knowledge resilience).

Якщо у вас є цінні публічні джерела, лекції чи матеріали, які можуть зникнути — не треба чекати. Компілюйте їх у персистентну базу знань.

Гуманітарна підтримка

Цей технічний кейс народився через трагедію конкретної родини. Михайло Висоцький та його батьки втратили все майно. На створеному сайті також розміщено інформаційний блок із закликом допомогти родині науковця.

Якщо ви хочете підтримати родину Михайла фінансово, ви можете зробити внесок на його банку в Monobank.

Висновки та посилання

Практичний запуск показав: патерн LLM Wiki дійсно масштабується і працює асинхронно без перевантаження контексту.

Корисні лінки для тих, хто хоче спробувати:

👍ПодобаєтьсяСподобалось6
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А поясніть, будь ласка, навіщо?

LLM Wiki — чудовий інструмент. Він дозволяє зберігати інформацію в зручному форматі для роботи ШІ-агент(а/ів).
Але тут це навіщо? Хочете архів, збережіть відео та транскрипцію.

Компіляція цієї інформації у LLM Wiki не додає нічого. Вона лише робить цю інформацію зручною для ШІ. ШІ-агенти будуть її використовувати? Як? Для чого?

Дякую за запитання! Це ключовий момент для розуміння різниці між пасивним архівом та живою базою знань.

1. Чому сирої транскрипції недостатньо для людини?
Сирий транскрипт — це купа хаотичного усного мовлення з повторами та відступами. До того ж автор записував лекції роками, тому факти про одну концепцію (наприклад, квантову заплутаність) розпорошені по десятках різних відео.
LLM Wiki конденсує цей масив: ШІ-агент аналізує транскрипти, прибирає шум і збирає всю інформацію про кожне поняття в єдину структуровану статтю з перехресними посиланнями та лінками на хвилини у відео. Людина отримує не звалище файлів, а зручний інтерактивний підручник.

2. Як і для чого ШІ-агенти будуть це використовувати?
Маючи таку скомпільовану базу знань, локальний ШІ-агент може працювати як:

Особистий тьютор: генерувати тести, створювати плани навчання або пояснювати складні теми, спираючись виключно на методологію автора лекцій.
Накопичувач знань: при появі нових наукових відкриттів ви можете доручити ШІ інтегрувати їх у вже існуючі концепції вікі, автоматично перевіряючи дані на несуперечливість.
Генератор матеріалів: ШІ може миттєво зібрати з вікі структурований посібник чи конспект під конкретний рівень знань.
LLM Wiki перетворює пасивне сховище файлів на активну, структуровану систему знань, з якою зручно працювати і людині, і ШІ.

1. «Живою базою знань» — ви пишите, що ютуб канал не планує нових відео. А отже замість живої бази знать, отримаємо конспект написаний LLM. База знань є живою тільки якщо вона постійно буде оновлюватись. Тоді чому це не пасивний конспект від LLM?
2. LLM Wiki так, як її задумав і описав Андрей Карпати не створена для того, щоб людина напряму працювала з нею. LLM wiki зручна для агентів, але не для людей. Карпати пише, що запити повинні йти через LLM. Тобто це не підручник. Або дуже своєрідний підручник для роботи з яким потрібна підписка на LLM.

Але давайте від теоретичних міркувань перейдемо до практики. Як ви, ваші друзі, знайомі чи незнайомі, користувачі ДОУ плануєте це використовувати? Якщо як особистий тьютор, накопичувач знань чи генерація матеріалів, тоді чому зупинятись на матеріалах від однієї людини? (З усією повагою до автора лекцій.)

Чому тільки для ШІ?
Ось інша real life Wiki — tavor118.github.io/...​ew_questions_and_answers — також побудована не без допомоги ШІ і призначена для людини, а не ШІ.

Вам подобається той приклад, що ви навели? Я відкрив випадковий розділ Web Development>HTTP. Це жахливо. DOM, websockets, DNS. Потік свідомості. Якщо це і призначено для людини, то точно не для такої людини, як я.

Ну тут напевно таки ви праві, проблема у вас )

ви точно відкрили свій приклад? У вас нема проблеми?

Ну давайте розширений коментар, бо я щиро не розумію в чому проблема і які були ваші очікування.

Я вже побачив, що те, що ви пропонуєте, — це ваш репозиторій. Тому ви, мабуть, так відреагували.

Добре, поясню. Людині зручно, коли знання викладені послідовно та структуровано. Якщо спливає новий термін, який не пояснювався раніше — то є посилання, де про нього можна почитати. Тоді можна говорити, що це якась Wiki. Знання послідовні та пов’язані.

Подивимось на ваш репозиторій:
1. Почну з HTTP, якщо вже його зачепив. Відкриваю, а там що завгодно в рандомному порядку. TCP/IP(що на рівень нижче), або OAuth, що на рівень вище. Websocket, який не є HTTP-протоколом. XSS? І ці всі питання ніяк не відсортовані. І дещо навіть не має відношення до HTTP...
2. Репозиторій про Python. Подивлюсь фреймворки. Починаю з Django. Перше питання про переваги та недоліки, без опису що це таке, навіщо. Але чомусь SQLAlchemy починається з опису, що це таке і навіщо.
3. Docker. Спочатку використовується термін Dockerfile в питанні про Docker Image, а далі після кешування, мереж та багато чого, несподівано — Dockerfile.

Це лише декілька прикладів. Цей репозиторій може хтось використовувати для того, щоб освіжити знання у випадковій послідовності. Щось вивчити по ньому неможливо. Тому він трішки покращена версія «топ 100 популярних питань до інтерв’ю».

Дуже дякую за розлогий коментар. Власне тому завжди варто звірити годинники, тобто термінологію. Те що ви описали — це не баг, а фіча. тобто так by design. І саме так — цей ресурс щоб згадати, а не вивчити.
І так — це покращена версія 100 популярних завдань.
Як каже шлях унікса — програма має робити щось одне, але робити добре. У підручника, курсу і цього ресурсу справді різні призначення. Це радше зміст, roadmap. Якщо робити з нього повноцінний ресурс для вивчення — він перстане слугувати шпаргалою.

Підписатись на коментарі