A plain vector store answers what text looks like this. Running graphiti over Neo4j means results are reranked by how entities relate, and the episode model keeps a record of how those relations changed as documents arrived — useful when the question is about a decision that moved rather than a fact that sits still. The price is infrastructure: Neo4j, an ingest pass, and three model endpoints you supply. The project warns that a local LLM has to return formatted responses within seconds to keep up, and that OpenRouter hits rate limits easily — point at a specific provider instead.
A self-contained retrieval backend built on graphiti and Neo4j. A batch job ingests documents through unstructured, and an MCP server exposes search over the resulting knowledge graph — vector, graph and full-text results reranked by how entities relate. Because ingestion runs as episodes, how concepts relate to each other over time stays visible rather than being flattened.
- Search shaped for retrieval-augmented generation over everything ingested, scoped by group — `search_for_rag`
- Fact-level and node-level retrieval with result caps and optional entity-type filtering — `search_memory_facts`, `search_memory_nodes`
- The episodes behind the graph, listed per group — `get_episodes`
- New content added to the graph from a client rather than through the ingest batch — `add_memory`
- Ingestion that resumes: a failed run restarts from the file it stopped on, with per-stage directories for pending, in-progress, completed and re-splittable files
Docker Compose, plus an OpenAI-compatible endpoint for three models: an embedding model for vector search, an LLM for graph construction and a lightweight LLM for reranking. Embeddings and LLM may point at different URLs — a local Ollama for one, a hosted API for the other. Setup is downloading `docker-compose.yml` and the example env file, editing it, and `docker compose up -d`; documents go into `data/input/` and `docker compose run --rm ingest` registers them. Clients connect over SSE at `http://localhost:8000/sse`. Ingestion covers txt, md, rst, org, html, xml, pdf, doc, docx, ppt, pptx, xls, xlsx, odt, rtf, epub, csv, tsv, eml, msg, p7s and common image formats. Documentation is in Japanese.
