Files
nexa/docs/11-open-questions.md
T
Claude 5c9034c861 Resolve Q16/Q17: media_uri at source, Immich out-of-band
- Q16 → image bytes stay in their source (Memos / Nextcloud / Obsidian);
  Phase-3.2 backfill fetches by media_uri. Zero copy.
- Q17 → Immich stays out-of-band; Nexa does not call Immich's smart-search.
- New Q18 carries forward the unresolved sub-question of whether SAIA's
  LiteLLM gateway already proxies an embedding model — a 1-line check that
  could let us skip TEI in 3.1.
2026-05-04 21:49:08 +00:00

5.1 KiB
Raw Blame History

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_scientific with a nexa_* 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.
  • Q15 — Embeddings staging plan → A now, C prepared.
    • Phase 3.1 (now): TEI + BAAI/bge-m3, single collection nexa_knowledge_text (1024-dim). DE/EN multilingual, fits the corpus.
    • Phase 3.2 (later): swap TEI → infinity, add jinaai/jina-clip-v2 (768-dim), second collection nexa_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. See qdrant_schema.json and qdrant_schema_visual.json.

Architectural decisions

  • Q4 — Obsidian sync mechanism. system_prime.txt references Obsidian Context, but the current setup syncs via Nextcloud (nc.nuclide.systemsNotizen folder, ~200 MB). Should Nexa watch the filesystem on LXC 105 (NC data dir) or the Nextcloud WebDAV API? FS is cheaper, WebDAV is portable.
  • Q5 — Karakeep vs. Hoarder naming. Zoraxy host is hoarder.nuclide.systems but containers are karakeep-* and Homepage labels it Karakeep. Same product (rename 2024). Pick one display name for docs and prompts.
  • 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 the Notizen folder; the Phase-3.2 backfill workflow fetches them on demand via the URI scheme. Sub-question on whether SAIA already proxies an embedding model is still worth a 1-line check in the LiteLLM admin UI before deploying TEI — moved to Q18.
  • Q17 — Immich out-of-band. Nexa does not call the Immich smart-search API. Photo-library queries stay inside Immich; if a Nexa workflow ever needs photo context it will go through a Memos-mediated handoff rather than a direct API.
  • Q18 — Does SAIA already proxy an embedding model? 1-line check in the LiteLLM admin UI: list models on the Nexa virtual key. If the SAIA backend offers e.g. mistral-embed, we can skip TEI in Phase 3.1 entirely. If not, deploy TEI as planned.

Identifiers needed (auto-discoverable, but list now if known)

  • Q6 — Nextcloud Tasks list IDs for: Work_Tasks, Personal_Tasks, Shopping, Wishes. Discovery via #nexa:config will 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 on ntfy.nuclide.systems or should it be authenticated?
  • Q10 — Pocket-ID role. id.nuclide.systems is running. Do we want SSO in front of the n8n / Memos UIs, or skip for now?

Hardware / capacity

  • Q11 — RAM headroom on docker host. 29.5 GiB free / ~31 GiB total, ~8.5 GB used. Phase-3 Qdrant indexing + TEI/bge-m3 (~1.1 GB) + Ontotext GraphDB (~4 GB heap) ⇒ ~14 GB used worst case, still ample. Confirm acceptable.
  • Q12 — S3 archive bucket. s3.nuclide.systems is up. Bucket name + access key for Qdrant snapshots and GraphDB exports?

Process

  • Q13 — Octoprint container is Exited (Homepage). Out of scope for Nexa, but Phase-5 monitoring would alert on it. Suppress or is it intentional?
  • Q14 — Missing Widget Type: zoraxy on Homepage. Cosmetic, unrelated to Nexa.

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 ~50100 ms ~20 ms
Daily ingest ~70 docs <60 s ~510 s ~2 s
Obsidian backfill (one-shot) ~2 000 docs <15 min ~24 min <1 min
RAG query embed (#nexa:ask) 1 doc <300 ms ~50 ms ~20 ms

Conclusion: CPU-only Ollama is sufficient — no GPU needed for current scope. Bottleneck is SAIA chat (already remote), not embeddings.