e1c2ba96e2
- Q4 → Obsidian vault is the Notizen/ folder in Nextcloud (multi-device sync). Nexa reads via WebDAV using the existing NC_APP_PASSWORD — no filesystem mount. Ignore list pinned: .copilot/, .copilot-index/, .smart-env/, .caldav-sync/, assets/ (routed to Phase-3.2 visual queue), Templates/, BMO/, Excalidraw/. Index target: Notizen/**/*.md. - Q5 → canonical name is Karakeep; legacy Zoraxy alias hoarder.nuclide.systems kept for compatibility. - Q13 → Octoprint container is intentionally powered down most of the time. Phase-5 monitoring must skip names matching octoprint*. Reflected in docs/10 monitoring table and CLAUDE.md. - Q14 → Homepage Zoraxy widget config error; cosmetic, dropped from open questions and from docs/12 optimization list. - Q18 → SAIA does proxy embeddings but rate limit is 10 msg/min, unusable for ingest. TEI stays in Phase 3.1. - docs/12: stale items removed (Octoprint, Zoraxy widget, generic Immich vector idea); added new ones derived from the Obsidian discovery (plugin embedding collision, notify_push upgrade path, assets/ size note). - docs/04 integration matrix updated to describe Obsidian-via-Nextcloud read path explicitly. - docs/09 step-4 credentials list collapses NC Tasks / Calendar / WebDAV onto a single app password.
5.9 KiB
5.9 KiB
11 — Open Questions (user-info-required)
Items that block progress and need a human decision before a workflow can be implemented or a service deployed. Tick them off as you decide.
Resolved
- Q1 — Graph DB choice → Ontotext GraphDB (SPARQL). Rationale: explore Nexa's memory through SPARQL is a stated goal. 08-graphrag-architecture is rewritten accordingly.
- Q2 — Vector store → reuse
qdrant_scientificwith anexa_*collection prefix. No dedicated container. - Q3 — Embeddings model → not OpenAI. Self-host on the docker host via TEI (HF
text-embeddings-inference) — Rust single-binary, OpenAI-compatible, ~500 MB image, no LLM runtime overhead. Speed analysis in §"Speed budget" below. - Q5 — Display name → Karakeep. The Zoraxy host alias
hoarder.nuclide.systemsis legacy — keep it for compatibility, but all docs, prompts and new workflow nodes use "Karakeep". - Q13 — Octoprint container is intentionally temporary. Suppress from Phase-5 monitoring: container-up/down alerts must skip names matching
octoprint*(or any container taggedproxmox-he 3d-printing). - Q14 — Homepage Zoraxy widget → no such widget. Config error in
homepage/services.yaml; cosmetic, not Nexa-related. - Q15 — Embeddings staging plan → A now, C prepared.
- Phase 3.1 (now): TEI +
BAAI/bge-m3, single collectionnexa_knowledge_text(1024-dim). DE/EN multilingual, fits the corpus. - Phase 3.2 (later): swap TEI →
infinity, addjinaai/jina-clip-v2(768-dim), second collectionnexa_knowledge_visual. Backfill from the queue (see Q16). - All schema fields needed for 3.2 (
modality,media_uri,graph_iri,nexa:pendingVisualIndex) are introduced now so 3.2 is purely additive — no rename, no migration. Seeqdrant_schema.jsonandqdrant_schema_visual.json.
- Phase 3.1 (now): TEI +
- Q16 — Image-attachment queue ergonomics → leave bytes at source, reference by
media_uri. Zero copy. Memos attachments stay in Memos's data dir, Nextcloud images stay in Nextcloud, Obsidian images stay in theNotizenfolder; the Phase-3.2 backfill workflow fetches them on demand via the URI scheme. - Q17 — Immich out-of-band. Nexa does not call the Immich smart-search API. Photo-library queries stay inside Immich.
- Q18 — SAIA proxies an embedding model, but 10 msg/min rate limit makes it unusable for ingest. A 2 k-note Obsidian backfill would take ~3.3 h; real-time
#nexa:askwould queue for tens of seconds during a writing burst. Decision: deploy TEI as planned. SAIA embeddings remain available as a manual fallback (e.g. for one-off#nexa:learncalls where rate is irrelevant). - Q4 — Obsidian sync via Nextcloud WebDAV. Confirmed the vault is
nc.nuclide.systems/Notizen/(multi-device sync via Nextcloud client). Nexa accesses it through WebDAV (/remote.php/dav/files/<user>/Notizen/) reusing the existingNC_APP_PASSWORD— no filesystem mount, no LXC-to-LXC privilege escalation. Phase 3.1 polls every 15 min; an upgrade to Nextcloud'snotify_pushfor sub-second updates is captured as optimization #15. Ignore list (don't index):.copilot/,.copilot-index/— Obsidian Copilot's own embeddings cache..smart-env/— Smart Connections / Smart Composer plugin data (~13 MB)..caldav-sync/— calendar sync, not notes.assets/— 186 MB of binaries; routed through the Phase-3.2 visual queue (nexa:pendingVisualIndex), not the text path.Templates/— empty templates, low semantic value.BMO/,Excalidraw/— plugin folders. Anything else underNotizen/**/*.mdis fair game.
Identifiers needed (auto-discoverable, but list now if known)
- Q6 — Nextcloud Tasks list IDs for:
Work_Tasks,Personal_Tasks,Shopping,Wishes. Discovery via#nexa:configwill fill these — confirm names match. - Q7 — Nextcloud Calendar IDs for:
Work_Calendar, primary personal calendar. - Q8 — IMAP credentials for the personal mail account. Can n8n reuse a Nextcloud Mail account (preferred — no extra password) or must we add a dedicated IMAP entry?
- Q9 — ntfy topic name for
nexa.system. Is the topic public onntfy.nuclide.systemsor should it be authenticated? - Q10 — Pocket-ID role.
id.nuclide.systemsis running. Do we want SSO in front of the n8n / Memos UIs, or skip for now?
Hardware / capacity
- Q11 — RAM headroom on docker host. Sized against 31 GiB allocated to the LXC; the NUC 14 Pro itself has 64 GB so the LXC's memory cap can be lifted if needed. Phase-3 stack (Qdrant + TEI/bge-m3 ~1.1 GB + Ontotext GraphDB ~4 GB heap, later +infinity/jina-clip-v2 ~1 GB) tops out around ~14 GB. Comfortable. Confirm acceptable.
- Q12 — S3 archive bucket.
s3.nuclide.systemsis up. Bucket name + access key for Qdrant snapshots and GraphDB exports?
Speed budget (Q3 follow-up)
Workload on the docker host (16 CPU, ~30 GB free RAM):
| Task | Volume | Latency target | Achievable on CPU with bge-m3 |
Achievable with nomic-embed-text |
|---|---|---|---|---|
| Real-time memo embed | 1 doc | <500 ms incl. n8n round-trip | ✅ ~50–100 ms | ✅ ~20 ms |
| Daily ingest | ~70 docs | <60 s | ✅ ~5–10 s | ✅ ~2 s |
| Obsidian backfill (one-shot) | ~2 000 docs | <15 min | ✅ ~2–4 min | ✅ <1 min |
RAG query embed (#nexa:ask) |
1 doc | <300 ms | ✅ ~50 ms | ✅ ~20 ms |
Conclusion: CPU-only TEI is sufficient — no GPU needed for current scope. Bottleneck is SAIA chat (already remote), not embeddings. SAIA's own embedding endpoint is rate-limited to 10 req/min which would block real-time embed; self-hosted TEI side-steps that completely.