Promote modulair-rag brainstorm trace to .wiki/concepts/
First real run of meeting-room-promote-brainstorm. Process trace classified as room-meta (domain design already lives in ~/projects/.wiki/). Buffer archived as 2026-05-05-modulair-rag.md. tasks_create skipped — target projects (modulair-rag, meeting-room) not yet registered in projects-meta; 3 deferred actions documented in the trace itself. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
185
.wiki/concepts/modulair-rag-brainstorm-trace.md
Normal file
185
.wiki/concepts/modulair-rag-brainstorm-trace.md
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
date: 2026-05-05
|
||||
source: .brainstorm/modulair-rag.md
|
||||
status: promoted
|
||||
type: room-meta
|
||||
---
|
||||
|
||||
# ModulAIr RAG — brainstorm trace
|
||||
|
||||
> Promoted 2026-05-05 from `.brainstorm/modulair-rag.md` (single-agent session inside `.meeting-room/`). Process trace — фиксирует **как развивался брейнсторм**, какие развилки выбрали, что отвергнуто и почему. Доменный design финализирован отдельно в `~/projects/.wiki/concepts/modulair-rag-design.md`.
|
||||
|
||||
> Source scenario: `scenarios/modulair.md` (4-agent meeting frontmatter, не запускалось — пользователь предпочёл одного собеседника).
|
||||
> Prior multi-agent transcript: `.wiki/raw/research/2026-05-03-modulair.md` — там пользователь с другим ассистентом прошёл первый круг и накопил пул tooling-кандидатов (Marker, Repomix, ArchiveBox, Memos, Hermes-agent, и др.).
|
||||
|
||||
---
|
||||
|
||||
## Контекст ModulAIr
|
||||
|
||||
ModulAIr — AI-управляемый секвенсор/контроллер для еврорэка на Pico 2 W. Декомпозирован на 6 sub-projects:
|
||||
|
||||
- `modulair-hw` — KiCad PCB (Pico 2 W + DAC + Gate-drivers + ADC + MIDI TRS + audio preamp + eurorack-питание)
|
||||
- `modulair-fw` — прошивка Pico 2 W
|
||||
- `modulair-script` — Teletype-style DSL + интерпретатор
|
||||
- `modulair-mcp` — MCP-мост между LLM и Pico
|
||||
- **`modulair-rag`** — база знаний ◄ предмет этого брейнсторма
|
||||
- `modulair-agent` — Hermes-агент как top-level orchestrator
|
||||
|
||||
**Сквозная архитектурная развилка решена: Variant A — Pico-autonomous, LLM-conductor.** Pico исполняет скрипты sample-accurate, LLM через MCP мутирует паттерны/скрипты, но не сидит в горячем audio-пути. Wi-Fi latency перестаёт быть проблемой.
|
||||
|
||||
## RAG-решения и почему
|
||||
|
||||
### Стратегия — c-tiered (а не плоский vector RAG)
|
||||
|
||||
Чисто вектор-RAG плох на factual-лукапах в синт-домене:
|
||||
- Эмбеддинги "0–8V" / "±5V" / "0V to 10V" близки в семантическом пространстве, но это разные факты
|
||||
- Отрицание ("у X нет Reset-входа") не работает — ретривер тащит чанки где есть "Reset" и "X" рядом
|
||||
- Сравнения требуют JOIN, а не top-k retrieval
|
||||
- Чанкинг ломает таблицы datasheet'ов
|
||||
|
||||
→ **Tier 1** vector (manuals / theory / VCV source / forum threads) — recall-heavy, fuzzy.
|
||||
→ **Tier 2** structured Postgres (module specs из ModularGrid + vendor parsers) — precision-heavy, точные ответы.
|
||||
→ **Tier 3** ручные аннотации (~50 модулей личного рэка, calibration quirks, undocumented behavior).
|
||||
|
||||
### Storage
|
||||
|
||||
- **Postgres (cloud, существующий)** для Tier 2/3. **Не MariaDB:** JSONB для переменной формы jack-списков, pgvector как открытая дверь, recursive CTE + lateral joins зрелее, array-типы родные, MCP/ORM-экосистема Postgres-first.
|
||||
- **LightRAG #2 (новый instance с `working_dir=modulair-rag`)** для Tier 1. Текущий LightRAG-корпус не трогаем — он для других задач.
|
||||
- **Не pgvector unified** — это потребовало бы миграцию текущего LightRAG.
|
||||
- **Не Neo4j** — overkill для тысяч модулей; relations моделируются плоскими таблицами.
|
||||
|
||||
### Scope первой итерации — (II) MVP на full-scrape ModularGrid
|
||||
|
||||
~15k модулей, ~1 месяц. Альтернативы: (I) Top-50 за 2 недели — учиться на знакомом; (III) всё сразу за 1.5–2 мес. Выбрано (II) — компромисс между амбицией и сроками.
|
||||
|
||||
Что меняется при этом скоупе:
|
||||
- **Per-field provenance обязательна** — без неё не отличить достоверный ±5V от LLM-угадки
|
||||
- **LLM-extraction как этап pipeline** — jacks/polarity/range живут в свободном тексте описаний и manual PDF, нужен LLM-проход по 15k
|
||||
- **Validation gates first-class** — voltage standards становятся правилами (audio типично ±5V, anomaly → флаг)
|
||||
|
||||
### Pipeline — immutable layered (L1-L4)
|
||||
|
||||
```
|
||||
L1 raw HTML → MinIO bucket, content-addressed (sha256)
|
||||
L2 DOM extracts → JSONL/run, структурные поля (HP, manufacturer, current_ma)
|
||||
L3 LLM extracts → JSONL/run, jacks/polarity/range из свободного текста
|
||||
L4 Postgres → "current state", собран из L2+L3+Tier-3
|
||||
```
|
||||
|
||||
Зачем слоями: на MVP схема меняется ~5×, LLM-промпт ~10×. Без immutable слоёв каждое изменение = повторный scrape (медленно, rate-limit) + LLM-проход (дорого). С immutable — пере-extract из L2/L3 за минуты.
|
||||
|
||||
### Source стратегия — multi-source
|
||||
|
||||
```
|
||||
1. Vendor-side parsers (top-10):
|
||||
pichenettes/eurorack (canonical Mutable), Make Noise, Intellijel,
|
||||
Doepfer, ALM, Noise Engineering, Befaco, 4ms, Erica, Tiptop
|
||||
2. ModularGrid scrape (HTML, ≤1 RPS, weekly cron)
|
||||
robots.txt allow модули и .json; их официальный API паузнут из-за EU copyright reform
|
||||
3. Tier 3 — ручные аннотации (~50 модулей личного рэка)
|
||||
```
|
||||
|
||||
Не зависимы от ModularGrid одного — фрагильно (DOM может смениться, anti-scrape, юр. неопределённость).
|
||||
|
||||
### Extractor LLM — Ollama Cloud sample first, не Haiku
|
||||
|
||||
Решение: первый прогон через Ollama Cloud (GLM-5.1 / qwen) на golden set, валидация против Haiku 4.5 как benchmark. Если разница <5pp на ключевых метриках — Ollama, бесплатно. Если ≥10pp — Haiku-tiered с Sonnet 4.6 на flagged записях.
|
||||
|
||||
**Golden set protocol** (1–2 дня ручной работы):
|
||||
- ~40 модулей: 20 Mutable (pichenettes/eurorack), 10 Doepfer, 5 Make Noise/Intellijel, 5 edge-case
|
||||
- JSON-эталон per модуль: `{name, direction, signal_type, polarity, range_v_min, range_v_max}`
|
||||
- Метрики/пороги: F1 signal_type ≥0.85, Acc polarity ≥0.85, MAE range ≤0.5V, hallucination ≤5%, miss ≤15%
|
||||
- Артефакты в git: `golden/`, `runs/<model>/`, `metrics/`
|
||||
|
||||
### Provenance — module_facts + materialized consensus view
|
||||
|
||||
```sql
|
||||
module_facts (
|
||||
module_id, field, value JSONB, confidence REAL,
|
||||
source_layer -- 'L2-dom' | 'L3-llm-haiku' | 'L3-llm-sonnet' | 'tier3-manual'
|
||||
source_ref, -- 'scrape-2026-05-05/mutable-rings.json#desc-jacks'
|
||||
scraped_at
|
||||
)
|
||||
```
|
||||
|
||||
Плоские `modules` / `jacks` — materialized view "consensus" поверх highest-confidence values. MCP читает плоский view, валидатор/админка — `module_facts` напрямую. Альтернатива (`<col>_confidence`/`<col>_source` рядом) отвергнута — на 30+ полях шум.
|
||||
|
||||
### Tier 1 corpus — phased
|
||||
|
||||
**Phase 1 (MVP):** ModularGrid descriptions всех 15k (из L1) + top-100 vendor manuals + VCV Rack Fundamental/Library source + 30–50 hand-curated theory статей.
|
||||
**Phase 2 post-MVP:** vendor manuals top-500, YouTube whisper-транскрипты топ-creator'ов, selected forum threads.
|
||||
**Phase 3:** long-tail manuals, full forum scrape с quality filter.
|
||||
|
||||
### Deploy shape — Docker compose, своё железо
|
||||
|
||||
Existing: Postgres, Traefik, Portainer, kicad-mcp (для других sub-projects).
|
||||
|
||||
5 новых контейнеров для modulair-rag:
|
||||
1. `lightrag-modulair` — Tier 1 vector, working_dir отдельный
|
||||
2. `minio` — L1 raw HTML cache, content-addressed
|
||||
3. `modulair-pipeline` — scraper + extractor + loader, cron внутри
|
||||
4. `tier1-converter` — Marker + Repomix + Firecrawl batch jobs
|
||||
5. `modulair-mcp` — MCP-сервер для Hermes (`module_spec`, `concept_search`, `module_compare`, `module_pairs`, `module_text`, `rack_modules`, `provenance`)
|
||||
|
||||
### Orchestration — Hermes, не n8n
|
||||
|
||||
Hermes-agent живёт в отдельном sub-project и через MCP зовёт наш `modulair-mcp` + (будущий) `firmware-mcp` + собственные Python-skills для batch (`run_repomix`, `run_marker`). n8n из плана убран — дублирует Hermes.
|
||||
|
||||
Phases:
|
||||
- Phase 1 — cron внутри контейнеров
|
||||
- Phase 2 — Changedetection.io webhooks → Hermes scheduled-automations
|
||||
- Phase 3 — расширение Hermes skills (multi-source priorisation, feedback-loop из Memos/Obsidian, vendor-парсеры как skills)
|
||||
|
||||
## Что отвергнуто и почему
|
||||
|
||||
| Отвергнуто | Причина |
|
||||
|---|---|
|
||||
| Pure vector RAG (c-flat) | Factual-лукапы галлюцинируют; embeddings не различают voltage ranges |
|
||||
| Postgres + pgvector unified (α) | Заставит мигрировать существующий LightRAG-корпус |
|
||||
| MariaDB | JSONB и pgvector будущего — типпинг-пойнт за Postgres |
|
||||
| Neo4j | Overkill для тысяч модулей; relations плоско моделируются |
|
||||
| n8n | Дублирует Hermes-agent |
|
||||
| markitdown как primary | Marker лучше PDF, Repomix лучше код, Firecrawl лучше JS-сайты |
|
||||
| tree-sitter primary chunking | Repomix даёт structure-aware MD из коробки |
|
||||
| DVC | pg_dump + content-addressed MinIO покрывают provenance |
|
||||
| kicad-mcp в modulair-rag | Out of scope; живёт в modulair-agent / modulair-hw |
|
||||
| ArchiveBox в MVP | Heavy (Docker+Chrome+Node), своя scraper-реализация дешевле для targeted-scrape |
|
||||
|
||||
## Открытые вопросы (не блокируют MVP)
|
||||
|
||||
- Финальный размер golden-set (40 принято; ужесточение MAE до 0.2V для CV-модулей — после первого прогона)
|
||||
- Music theory sources — конкретный список 30–50 статей не зафиксирован (упомянуты Allen Strange, Whitwell, SoS Synth Secrets, Eno strategies)
|
||||
- Phasing для feedback-loop (Memos / Obsidian #feedback) — Phase 2, конкретная реализация позже
|
||||
- Где физически живёт kicad-mcp (host stdio vs Docker) — релевантно для modulair-agent / modulair-hw, не для modulair-rag
|
||||
|
||||
## Tooling из исходного транскрипта 2026-05-03
|
||||
|
||||
| Категория | Что взято | Что отвергнуто |
|
||||
|---|---|---|
|
||||
| PDF→MD | **Marker** (primary), **LlamaParse** (fallback) | markitdown как primary, Docling (только если Marker не установится) |
|
||||
| Web→MD | **Firecrawl** (batch), **Jina Reader** (одноразовый) | Trafilatura |
|
||||
| Code→MD | **Repomix** | tree-sitter с нуля |
|
||||
| Web archive | **Wallabag** в Phase 2 | ArchiveBox в MVP, Linkwarden, Shiori |
|
||||
| Change detection | **Changedetection.io** в Phase 2 | (alone, без n8n) |
|
||||
| Orchestration | **Hermes-agent** | n8n, Huginn |
|
||||
| Data versioning | `pg_dump` + content-addressed MinIO | DVC |
|
||||
| Feedback loop | **Memos** или **Obsidian** в Phase 2 | (одно из двух) |
|
||||
| Container UI | **Portainer** (existing) | Dockge |
|
||||
| Vector store | **LightRAG** (existing для других, новый instance для modulair) | ChromaDB, Pinecone, GraphRAG |
|
||||
| Algo composition | **music21** — для modulair-agent, не RAG | — |
|
||||
| Embedded DSP | Pure Data + hvcc / Faust — для modulair-fw audio sub-project, не RAG | — |
|
||||
| EDA → MD | **kicad-mcp** существующий, для modulair-hw / modulair-agent | KiCad-CLI / KiBot — out of scope для modulair-rag |
|
||||
|
||||
## Меморики, появившиеся за сессию
|
||||
|
||||
- `feedback_meeting_room_workspace.md` — `.meeting-room` это brainstorm-зона, артефакты идут в `.brainstorm/` или global wiki, не через "transit-zone autopilot"
|
||||
- `project_extend_discipline_for_meeting_room.md` — открытый todo расширить project-discipline под brainstorm-workspaces
|
||||
- `feedback_read_source_transcripts.md` — `.meeting-room/source/<date>-<topic>.md` это pre-loaded user research, читать до предложения стэка
|
||||
|
||||
## Deferred actions (не созданы как таски)
|
||||
|
||||
Целевые проекты `modulair-rag`/`meeting-room` пока не зарегистрированы в `projects-meta` (на 2026-05-05 в `meta_status` — 12 проектов, ни один из них). `tasks_create` в скиле `meeting-room-promote-brainstorm` пропущен. Перевести в backlog при появлении проектов:
|
||||
|
||||
1. Брейнсторм per остальным 5 sub-projects (`modulair-hw`, `modulair-fw`, `modulair-script`, `modulair-mcp`, `modulair-agent`) — owner: meeting-room.
|
||||
2. Когда RAG-implementation начнётся — поднять структуру репозитория `modulair-rag` где-то в `~/projects/`, скелет compose.yml, `.tasks/STATUS.md` под фактический проект — owner: modulair-rag.
|
||||
3. Заведение golden-set (1–2 дня ручной работы — это первое что нужно сделать; в MVP это блокирующая зависимость для extractor-валидации) — owner: modulair-rag.
|
||||
@@ -12,3 +12,4 @@ Events: `started`, `promoted`, `registered`, `archived`.
|
||||
2026-05-05 registered moderator
|
||||
2026-05-05 registered skeptic
|
||||
2026-05-05 started modulair ([moderator, skeptic, idea_generator, analyst])
|
||||
2026-05-05 promoted modulair-rag → .wiki/concepts/modulair-rag-brainstorm-trace.md (tasks_create skipped: target projects modulair-rag/meeting-room not yet registered in projects-meta; 3 actions deferred in trace)
|
||||
|
||||
Reference in New Issue
Block a user