- Update assistant lists (added Shawn, Watson, David, CASE, AWS SA; modified Scotty/Harper roles) - Reflect new architecture layers: Tool Prompt Snippets and Shared Context - Align repository structure diagram with current filesystem layout
47 lines
2.9 KiB
Markdown
47 lines
2.9 KiB
Markdown
# Mnemosyne
|
|
|
|
> Multimodal personal knowledge base — text, images, and graph-structured content.
|
|
|
|
- **MCP server name:** `mnemosyne` (runs in the lab; FastMCP at `/mcp` on its own host)
|
|
- **Prompt snippet:** [prompts/tools/mnemosyne.md](../../prompts/tools/mnemosyne.md)
|
|
- **Project repo:** `/home/robert/git/mnemosyne` (full README, architecture docs)
|
|
|
|
## What It Is
|
|
|
|
Mnemosyne is "the memory of everything you know" — a content-type-aware multimodal knowledge management system built on Neo4j vectors and Qwen3-VL embeddings. Unlike a generic vector store, Mnemosyne knows what *kind* of thing a document is (a novel, a textbook, an album, a journal entry, a business proposal) and adjusts chunking, embedding, and retrieval accordingly.
|
|
|
|
It is a **retrieval engine**, not a synthesis engine. It returns ranked chunks plus metadata; the calling agent does its own synthesis. Architecturally this is intentional — letting the LLM see chunks and pivot mid-search beats pre-digesting answers server-side.
|
|
|
|
## What It's Good For
|
|
|
|
- Searching the user's personal knowledge base across libraries (fiction, nonfiction, technical, music, film, art, journal, business, finance)
|
|
- Multimodal queries — find a book cover, an album sleeve, a screenshot, alongside text
|
|
- "Did I read something about X" / "what did I write about Y on what date"
|
|
- Pulling source material the user has actually curated, rather than guessing from training data
|
|
- Following graph relationships (Author → Book → Topic; Artist → Album → Track)
|
|
|
|
## What It's Not Good For
|
|
|
|
- General web knowledge — that's Argos
|
|
- Anything not already in the KB — Mnemosyne only knows what's been ingested
|
|
- Synthesis or "give me the answer" — Mnemosyne returns chunks; the calling agent synthesizes
|
|
- Real-time information (status, news) — content is ingested, not live
|
|
|
|
## MCP Tools Exposed
|
|
|
|
| Tool | Purpose |
|
|
|---|---|
|
|
| `search` | Hybrid search (vector + graph + full-text), re-ranked |
|
|
| `get_chunk` | Retrieve the full text of a chunk by ID |
|
|
| `list_libraries` | What libraries exist (fiction, technical, etc.) |
|
|
| `list_collections` | Collections within a library |
|
|
| `list_items` | Items within a collection |
|
|
| `get_health` | Service health probe |
|
|
|
|
## Known Gotchas
|
|
|
|
- **It's retrieval, not answers.** A `search` call returns chunks; the agent then has to read them and form the answer. Don't expect Mnemosyne to "tell you" something.
|
|
- **Library type matters.** Searching the *fiction* library for technical content returns nothing useful. Use `list_libraries` first if uncertain.
|
|
- **Citations should be preserved.** Mnemosyne returns chunk IDs and source metadata — when synthesizing, cite back to the chunk so the user can verify and trace.
|
|
- **Empty results may mean the index isn't ready.** If `setup_neo4j_indexes` hasn't been run for a given environment, vector search returns empty results and the app logs a readiness warning. Surface that, don't silently confabulate.
|