Skip to content

Как работает NOUZ

Вы пишете заметки. NOUZ читает YAML frontmatter, строит DAG, классифицирует контент через эмбеддинги и находит мосты между ветками.

Формула сущности

Каждый узел в графе описывается компактной формулой:

(дети)[узел]{родители}

( ) — потомки. Знаки агрегируются: число перед знаком только если больше одного. Куст в точке пересечения доменов.

[ ] — сам узел, с доменным знаком. Составной знак (SE) — кросс-доменная идея.

{ } — родители. Знаки записываются слитно.

Примеры:

(S2E)[E]{E}          — 3 потомка (1×S + 2×E), сам E, родитель E
(2D)[SE]{SE}         — 2 потомка D, сам SE, родители S и E
(SE)[SE]{SE}         — 1 потомок SE, сам SE, родитель SE

Формула сжимает всю топологию узла в одну строку: количество и домены детей, собственный домен, домены родителей.

Инструмент format_entity_compact возвращает эту формулу для любой заметки.

Знак — доменная классификация

Знак показывает, к какому домену знаний принадлежит заметка. Домены задаются описательными текстами в config.yaml — NOUZ превращает их в вектор-эталоны и классифицирует каждую заметку по cosine similarity к этим эталонам.

УровеньОткуда знак
L1 ЯдроВручную — это и есть домен
L2 ПаттернВручную + валидация эмбеддингом
L3 МодульНаследуется от родителя L2
L4 КвантВычисляется из эмбеддинга контента
L5 АртефактНаследуется от родителя

Приоритет: manual > auto (confident) > weak_auto > унаследованный

Заметка получает составной знак (например ES), если два домена набирают выше порога одновременно. Это кросс-доменная идея — две проекции одной мысли.

Нормализация через spread

Классификация не работает по абсолютному cosine. Используется нормализация:

percent = (cosine - min) / (max - min) × 100

Это решает проблему низкой абсолютной близости: если все тексты в базе знаний похожи по стилю, абсолютные значения могут быть высокими у всех доменов. Spread выделяет относительный перевес.

Порог по умолчанию: 30% для присвоения знака домену.

Двунаправленная причинность

Два потока работают одновременно:

↓ sign (Намерение): L1 → L2 → L3 — задаёт человек, спускается сверху
↑ core_mix (Реальность): L4 → L3 → L2 — агрегируется из контента снизу

Намерение — какой домен вы ожидаете от модуля. Реальность — о чём его контент на самом деле. Когда они расходятся — это core_drift.

Пример drift:

Модуль "Machine Learning":
  sign: E (Engineering)   ← задан вручную при создании
  core_mix: {S: 61%, E: 39%}  ← реальность из квантов снизу

  → DRIFT WARNING

Это сигнал. Последние заметки сдвинулись в сторону системного мышления. Пора пересмотреть — или принять эволюцию.

Типы связей

ТипКто создаётСмысл
hierarchyТолько человекСтруктурное решение. Знак передаётся только по ней.
temporaryЧеловек или ИИВременная связь. Артефакт ещё не прирос к графу.
semanticИИ предлагает, человек подтверждаетКросс-доменное смысловое пересечение.
analogyИИ предлагает, человек подтверждаетСтруктурный изоморфизм — та же роль в графе, другой домен.
errorАвтоматическиПропуск уровня в иерархии.

Семантические мосты

Эмбеддинг заметки сравнивается со всеми заметками из других доменов. Cosine ≥ 0.55 → мост предложен с флагом proposed: true.

Связи внутри одного домена уже покрыты иерархией. Мост нужен когда два разных домена говорят об одном — разными словами, разным языком, одним смыслом.

Примеры мостов которые NOUZ находит:

  • Дедлок в базе данных ↔ Трагедия общин (структурная ловушка)
  • Энтропия ↔ Технический долг (накопление хаоса)
  • Мицелий ↔ Интернет (сетевой паттерн)

Аналогические мосты

Структурный изоморфизм: две заметки из разных доменов играют похожую роль в своих подграфах. Взвешенная формула:

score = 0.35 × core_mix_angle
      + 0.25 × level_match
      + 0.20 × degree_similarity
      + 0.20 × tag_overlap

Порог по умолчанию: 0.65.

Пайплайн

Заметка

Markdown-файл с YAML frontmatter: родители, тип, уровень. Без frontmatter — NOUZ индексирует без семантики.

Эмбеддинг + классификация

Контент превращается в вектор. Cosine similarity с эталонами после нормализации → доменный знак и процентное распределение.

Размещение в DAG

Родители из YAML размещают узел в графе. Циклы проверяются перед записью — write_file вернёт ошибку при обнаружении цикла.

Агрегация снизу вверх

core_mix поднимается от квантов (L4) к модулям (L3) и паттернам (L2). Родитель получает средневзвешенное доменное распределение детей.

Обнаружение мостов

Семантические и аналогические мосты связывают узлы между доменами. Все предложения помечены proposed: true — ИИ предлагает, вы решаете.

Эталоны

Домены задаются в config.yaml как описательные тексты. Не список ключевых слов — а описание сути домена своими словами. Команда calibrate_cores превращает их в вектор-эталоны и записывает в БД.

Пример эталона:

yaml
etalons:
  - sign: S
    name: Systems Thinking
    text: >
      Methodology for analysing complex objects: feedback loops,
      emergent properties, self-regulation, bifurcation points.
      Not data and not code — a way of thinking about how parts
      form a whole and why systems behave non-linearly.
  - sign: E
    name: Engineering
    text: >
      Software engineering and infrastructure: writing and debugging
      code, deployment, containerisation, neural networks, inference,
      microservices, CI/CD, refactoring, APIs. The practical discipline
      of building computational systems.

После calibrate_cores сервер выводит попарные косинусы между эталонами — в двух вариантах: сырые и mean-centered (с вычитанием среднего вектора, которое убирает анизотропию трансформерных эмбеддингов). Хороший результат: mean-centered косинус между разными доменами заметно ниже чем между одним доменом и самим собой. Если значения между всеми парами примерно одинаковые — эталоны семантически перекрываются, стоит усилить различия.

Эталоны не нужно пересчитывать при каждом запуске — только при изменении config.yaml.

База данных

NOUZ хранит индекс в SQLite (obsidian_kb.db в корне vault). В базе:

  • Метаданные всех файлов (тип, уровень, знак, parents)
  • Эмбеддинги (если включены)
  • Эталонные векторы доменов
  • Граф связей для traversal

База полностью локальная. Данные остаются на машине. Если используете облачный провайдер эмбеддингов (OpenAI) — только тексты для эмбеддинга покидают машину.

Telegram · Email