Aletheia

THE ARCHIVE

Answers you can follow
back to the page.

Aletheia reads the papers you give it and answers questions across them. Every citation in an answer is checked against the passages that were actually retrieved — so a reference either resolves to real text in your library, or the answer does not make it.

THE PROBLEM

A fabricated citation looks exactly like a real one.

That is the whole difficulty. A language model asked about a literature will produce plausible author names, plausible years and a plausible page number, and nothing about the output signals which parts came from a document and which were assembled to fit the sentence. Checking is slower than asking, so it usually does not happen. Aletheia is built the other way around: the checking is not optional and not the reader’s job.

WHAT IT GUARANTEES

Four properties, each enforced in code rather than asked for in a prompt.

01

A citation it cannot support is not returned

Evidence passages are handed to the model with opaque IDs, and the answer is re-checked against them server-side. An ID the model invented is not a footnote that happens to be wrong — it fails validation, and the answer does not ship with it.

02

“The corpus does not say” is a valid answer

When the retrieved passages do not settle a question, the system says so instead of assembling a fluent paragraph out of the nearest available text. Most of the damage done by research assistants is done confidently.

03

The retrieval runs on your machine

Embeddings and reranking are local ONNX models — no key, no per-query spend, and no page of your unpublished work sent anywhere to be indexed. Only the final answering step calls a hosted model.

04

The evaluation splits are leakage-free

Held-out sets are split by question ID, so passages from one question cannot appear on both sides. It is the difference between a metric and a number that looks like one.

THE PATH A QUESTION TAKES

Six steps, and the last one can reject the fifth.

  1. 01IngestPDF → pages, sections, figures, tables, equations
  2. 02Embedjina-embeddings-v2-small-en, locally
  3. 03RetrieveChroma, falling back to pgvector
  4. 04Rerankcross-encoder over the candidate set
  5. 05Answergrounded generation with opaque evidence IDs
  6. 06Validateevery citation checked before it is returned

THE WORKSPACE

Eight ways into the same corpus.

TRAINED FOR THIS PROJECT

Three models, with the one that did not work labelled as such.

Each was trained from the checked-in benchmark, split by question ID, and is reproducible from a notebook in colab/. The stance classifier sits below its own majority-class baseline. It is shown here for the same reason it is shown in the app: removing it would make the other two look like the whole story.

Multi-source relevance

89.87%

held-out accuracy, against an 84.96% lexical baseline

Neural reranker

0.717 MRR

Recall@6 0.799, reproduced exactly on a full re-ingest

Scientific stance

54%

experimental — below its majority-class baseline, and shipped saying so

SEE THE LEARNING CURVES →

Put your own papers in and ask it something hard.

Upload a PDF, wait for it to parse, and ask a question it can only answer by reading. The interesting result is the one where it tells you the corpus does not cover it.

Create an account