Personal research assistantRetrieval-augmented generation over a local corpus
The weight of evidence
Ask a question. atlas searches a library of scientific research and answers it, every claim traced to its source.
Refine
python serve.py to run a query See § 7
Guide & terms
atlas answers only from your own note library: local semantic search, an answer written by a language model, every statement carrying an [n] reference to a note. No hits, no answer.
The controls
- Model
- Writes the answer (DeepSeek / Kimi / Claude / GPT). Source retrieval always runs locally.
- Balance
- On a contested topic, splits the hits across both camps.
- Topic filter
- Restricts the search to one subject area (list on the right).
- Corpus
- Restricts the search to selected collections — e.g. only Ray Peat's articles or only the Weston A. Price library. All on (default) = the whole library.
- Study design
- Hits of one design only (meta-analysis, RCT, cohort …). Classified by LLM from title and abstract, with a heuristic as fallback; anything unrecognisable is labelled “undetermined”.
- Evidence weighting
- Re-ranks the hits so that at similar relevance the stronger study design wins. Off = pure similarity ranking.
- from year
- Notes from this publication year onwards only.
- Sources (k)
- How many notes go to the model as context. More context is broader but less sharp.
- Open access
- Freely available sources only.
The topics
pufa/kritik against pufa/gegenevidenz in the linoleic acid debate. The balance control lists every axis currently filled on both sides. Without it, semantic proximity alone decides the hits.
atlas is a local vector index over 13,409 curated documents plus a query component. Each question retrieves the k most similar passages; a language model writes an answer from them, with citations. An optional filter returns hits from both camps on contested topics. Index and retrieval run locally; only the retrieved passages go to the model API.
Keywords: retrieval-augmented generation · local vector search · mandatory citation · debate balance · Obsidian vault
Anatomy of an answer
An example built from studies that are in the collection. The answer itself is illustrative.
Q: Does creatine improve cognitive performance under sleep deprivation?
The corpus holds no trial that induces sleep deprivation, so this answer stays one step back from the question. What it does hold: supplementation improved cognitive performance in older adults[1], and a double-blind, placebo-controlled crossover found improved brain performance in healthy adults[2]. The gain was largest where baseline intake was lowest, in vegetarians compared with omnivores[3].
In contextAll three measured rested participants. Whether the effect survives a night without sleep is not a question this corpus can answer; it would need a trial that induces the condition.
Sources from the local index
- [1]McMorris, T. et al. (2007): Creatine supplementation and cognitive performance in elderly individuals. Neuropsychology, Development, and Cognition B, 14(5).
- [2]Rae, C. et al. (2003): Oral creatine monohydrate supplementation improves brain performance: a double-blind, placebo-controlled, cross-over trial. Proceedings of the Royal Society B, 270.
- [3]Benton, D., Donohoe, R. (2011): The influence of creatine supplementation on the cognitive functioning of vegetarians and omnivores. British Journal of Nutrition, 105(7).
Every superscript number points to a document in the local index. Hovering marks the source; clicking jumps to it.
Four steps per query
Every step runs on your own machine. The single exception is the language model writing the answer. The same process as a particle cycle: field (corpus) → figure (retrieval) → mark (answer).
Curate
You decide which documents enter the collection: studies, abstracts, compound notes. Only that selection is indexed.
Index
Each document is embedded locally (nomic-embed-text via Ollama) and stored in a file-based vector database. The index updates incrementally, without duplicates.
Retrieve
For each question the vector search returns the k most relevant hits, filterable by topic, year and open-access status. On contested topics a balance filter can force both camps into the set (§ 3).
Write
A language model (DeepSeek, Kimi, Claude or GPT) writes the answer from those hits. The system prompt requires citations and forbids statements not grounded in a hit.
Both camps of a debate in one retrieval
For three topics the corpus is split into two camps. With the balance filter on, the retrieval contains hits from both, regardless of which side sits semantically closer to the question.
| Axis | Camp A | Camp B |
|---|---|---|
| PUFApolyunsaturated fatty acids | topic/pufa/kritik7 queries in the corpus set | topic/pufa/gegenevidenz4 queries in the corpus set |
| CholesterolLDL, saturated fat, CVD risk | topic/cholesterin/kritik | topic/cholesterin/konsens |
| Red meatunprocessed vs. processed | topic/rotfleisch/kritik | topic/rotfleisch/konsens |
Retrieval per axis via --balance pufa|cholesterin|rotfleisch. The camps are filled from separate query sets; PUFA, for instance, 7 to 4. With balance on, the answer bar additionally shows the quality-weighted ratio of the camps across the whole corpus, weighted by study design: meta-analysis 5 · RCT 4 · cohort 3 · case-control 2.5 · cross-sectional/review 2 · animal 1 · in vitro 0.5.
What atlas cannot do
Four limits that come with the approach.
- No hit, no answer If the collection holds nothing suitable, atlas says so. It does not fill the gap and it does not generalise.
- Abstract depth The corpus is mostly abstracts. Method, sample and secondary findings can only be checked as far as the abstract goes.
- Corpus bias The answers mirror your own selection. What was never curated appears in no answer.
- Weighting Citations are bound to hits. How the hits are weighted against each other is left to the language model and is not separately verified.
System state
Current configuration.
Precedent and distinction
atlas was called “consensus” in draft, until the name turned out to be taken. Consensus (consensus.app, since 2021) searches over 200 million peer-reviewed papers in plain language and returns synthesised, cited answers; Pro runs about $9–12 a month. atlas shares the positioning: fast, trustworthy orientation in the evidence, not a substitute for reading critically. Four features carry it:
Consensus Meter
On yes/no questions, shows what percentage of studies support or contradict a claim.
Deep Search
Automated mini literature reviews with methodological context, how findings moved over time, and open gaps.
Study Snapshots
A structured digest of a single paper: design, sample, findings at a glance.
Fine filters
By study design, journal ranking and field, plus a citation for every statement.
The precedent has documented weaknesses. Four of them are design requirements for atlas:
- Transparency instead of a black box The precedent's ranking and meter logic cannot be inspected and have not been independently validated. atlas exposes every lever: k, filters, model choice and the system prompt sit as files in the project, so any retrieval result is explainable from visible parameters.
- Reproducibility There, the same question yields different syntheses at different times, and retrieval is not guaranteed to be complete. atlas works on a fixed local corpus: same index state, same hits. The corpus is a folder, so snapshots and versioning come for free.
- Your own corpus The precedent knows only what the large databases hold, mostly recent English-language papers. atlas holds precisely the niche and older literature (from 1945), full-text articles and compound notes that are missing there.
- Balance instead of a meter The meter reduces evidence to yes/no/maybe; study quality and effect size disappear. On contested topics atlas pulls both camps, with real sources, into the same retrieval (§ 3).
Shipped (08/2026): the study-design filter, the quality-weighted camp ratio per debate (in place of the meter's vote count), and the structured paper snapshots: design, sample and key finding were written into the frontmatter by LLM extraction across the whole corpus (13,379 papers) and appear in the sources panel; design classification has come from the LLM snapshot since, with the heuristic only as fallback.
Running it locally
atlas is a personal tool, not a product. It assumes a maintained collection. The query runs in the browser against the local server: python serve.py in the project directory, then http://127.0.0.1:8765.
Full function requires the server to be running.