Retrieval-augmented generation grounds a language model’s output in retrieved evidence rather than parametric memory alone (Lewis et al., 2020). The dominant experimental setting, however, is question answering over topically coherent public corpora, typically evaluated with dense passage retrieval over flat chunk indexes (Karpukhin et al., 2020). A longitudinal personal corpus violates several assumptions of that setting. It is heterogeneous in register, spanning diary entries, technical notes and verbatim transcripts. It is strongly temporal: the truth of a statement is indexed to when it was written, and the most recent statement is usually, but not always, the authoritative one. And it is emotionally non-uniform: some regions of the corpus concern material the corpus owner may not want surfacing incidentally, which makes retrieval itself a matter of design responsibility rather than only of recall.
This post describes LucasRAG, a system I built and operate as a personal knowledge substrate (my “exocortex”) for language-model assistants. Rather than proposing a new retrieval algorithm, it documents architectural decisions made against those three properties, and reads them against the recent graph-RAG literature.
Where this sits in the literature
Graph-augmented RAG addresses the fragmentation that flat chunk retrieval produces when answers depend on relationships dispersed across documents. GraphRAG constructs an LLM-derived entity knowledge graph and pre-generates community summaries, targeting corpus-global, query-focused summarisation (Edge et al., 2024). LightRAG pursues a lighter construction, combining graph-structured indexing with dual-level (entity-level and thematic) retrieval and incremental index updates (Guo et al., 2024). HippoRAG frames the graph as a long-term memory substrate, using personalised PageRank over an entity-linked index in analogy to hippocampal indexing theory (Gutiérrez et al., 2024), and its successors extend this toward non-parametric continual learning (Gutiérrez et al., 2025). Surveys of the wider RAG landscape catalogue the now-standard pipeline of retrieval, reranking and generation (Gao et al., 2023), with cross-encoder reranking established as an effective second stage since Nogueira and Cho (2019). Work on LLM memory management, such as MemGPT’s operating-system framing of context paging (Packer et al., 2023), is adjacent: it concerns what a model should hold in context, where this post concerns what a retrieval layer should be willing to surface at all.
Two requirements of the personal-corpus setting are, to my knowledge, not directly addressed in this literature: recency-defaulted retrieval with deliberate archival access, and affect-aware suppression at retrieval time.
Federation over a single index
The corpus is partitioned into four workspaces by life domain: technical, creative, personal and administrative - all personal to me. Each is an independent LightRAG instance with its own graph and vector store, backed by Neo4j for graph structure and PostgreSQL with pgvector for chunk embeddings. A federation layer fans a query out to all workspaces (or a caller-restricted subset), requesting a fixed number of candidates per workspace before merging.
The alternative, one index over everything, was rejected on two grounds. First, entity collision: the same name may denote a colleague in the administrative domain and a fictional character in the creative one, and a single automatically constructed graph conflates them in ways that are difficult to repair. Second, blast radius: index rebuilds, experiments and failures are contained within one domain. The cost is a merge problem.
Combined-pool reranking
Scores produced by independent retrievers are not comparable across workspaces, so the federation layer discards them and reranks the merged candidate pool with a cross-encoder served natively via llama.cpp, with an embedding-similarity fallback when the reranker is unavailable. In operation the fan-out requests thirty candidates per workspace and returns twenty-five after reranking. This mirrors the standard two-stage retrieve-then-rerank pattern, but applies it as a fusion mechanism across heterogeneous indexes rather than as precision refinement within one.
Temporal banding
Every chunk carries a temporal band, assigned at ingestion from explicit frontmatter where present and inferred from content otherwise, distinguishing broadly present material from archival material. Queries without a temporal signal are answered with a recency preference; a detector watches for explicit signals (a year, a decade, lexical cues such as “history” or “growing up”) and, when one fires, opens archival bands deliberately.
This addresses a failure mode observed early in operation: a question asked in the present tense (“what is X?”) being answered confidently from a decade-old note. Frontmatter is treated as the highest banding authority precisely because inference from content misfires; one canonical facts file was initially inferred into an archival band on stylistic grounds and thereby suppressed on the present-tense queries it existed to answer. The mechanism is coarse next to the continual-memory updating proposed by Gutiérrez et al. (2025), but it is inspectable and cheap, which matters in a system maintained by one person.
Chunk-level deference
The corpus contains material that is accurate but emotionally charged, concerning bereavement, past relationships and similar subjects. A deference list names such subjects; chunks marked as charged for a deferred subject are suppressed from results unless the query deliberately opens the archive or the caller explicitly bridges a named subject. Crucially, suppression is accompanied by an explicit hint stating that archival material on a named subject exists and how to reach it, so the mechanism withholds content, never the fact of the content.
This differs in intent from safety filtering in deployed assistants: the goal is not to block disallowed content but to make surfacing painful material a deliberate act rather than a side effect of lexical overlap. I am not aware of a direct analogue in the RAG literature, where retrieval quality is framed as maximising relevance. Here, a maximally relevant result can be the wrong result.
Ingestion governance
Writes enter through a watched vault of Markdown files rather than direct index insertion, preserving a human-readable corpus of record. A confidence-gated router assigns each document to a workspace, and low-confidence routings are quarantined for human review rather than ingested: a small governance measure against index pollution that incremental-update designs otherwise leave to the operator.
Limitations, honestly
The system’s evaluation is operational rather than benchmarked: it is exercised daily through model-facing tooling, and failures (a suppressed canonical file, non-comparable cross-workspace scores, stale-band answers) were found and fixed in use. That is a real limitation. Public graph-RAG evaluations rely on corpus-appropriate question sets, and no such benchmark exists for a private longitudinal corpus; constructing a privacy-preserving evaluation protocol for personal RAG is, I think, a genuinely open problem. Temporal banding and deference are rule-based; both would plausibly benefit from learned classification, at the cost of the inspectability that motivated the rules. And federation as implemented is static; routing queries to workspaces adaptively is unexplored here.
The general claim this experience supports is modest but, I believe, transferable: for personal corpora, retrieval design is not exhausted by relevance. When the corpus is a life, the retrieval layer inherits duties, of recency, of context, and of care, that benchmark-driven RAG research has not yet had reason to formalise.
References
Edge, D., Trinh, H., Cheng, N., Bradley, J., Chao, A., Mody, A., Truitt, S. and Larson, J. (2024) ‘From local to global: a Graph RAG approach to query-focused summarization’, arXiv preprint arXiv:2404.16130.
Gao, Y., Xiong, Y., Gao, X., Jia, K., Pan, J., Bi, Y., Dai, Y., Sun, J., Wang, M. and Wang, H. (2023) ‘Retrieval-augmented generation for large language models: a survey’, arXiv preprint arXiv:2312.10997.
Guo, Z., Xia, L., Yu, Y., Ao, T. and Huang, C. (2024) ‘LightRAG: simple and fast retrieval-augmented generation’, arXiv preprint arXiv:2410.05779.
Gutiérrez, B.J., Shu, Y., Gu, Y., Yasunaga, M. and Su, Y. (2024) ‘HippoRAG: neurobiologically inspired long-term memory for large language models’, Advances in Neural Information Processing Systems, 37, pp. 59532-59569.
Gutiérrez, B.J., Shu, Y., Qi, W., Zhou, S. and Su, Y. (2025) ‘From RAG to memory: non-parametric continual learning for large language models’, arXiv preprint arXiv:2502.14802.
Karpukhin, V., Oğuz, B., Min, S., Lewis, P., Wu, L., Edunov, S., Chen, D. and Yih, W. (2020) ‘Dense passage retrieval for open-domain question answering’, arXiv preprint arXiv:2004.04906.
Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., Küttler, H., Lewis, M., Yih, W., Rocktäschel, T., Riedel, S. and Kiela, D. (2020) ‘Retrieval-augmented generation for knowledge-intensive NLP tasks’, Advances in Neural Information Processing Systems, 33, pp. 9459-9474.
Nogueira, R. and Cho, K. (2019) ‘Passage re-ranking with BERT’, arXiv preprint arXiv:1901.04085.
Packer, C., Wooders, S., Lin, K., Fang, V., Patil, S.G., Stoica, I. and Gonzalez, J.E. (2023) ‘MemGPT: towards LLMs as operating systems’, arXiv preprint arXiv:2310.08560.