Polarize
GitHub Get in touch

September 24, 2026 · Method · v5

A RAG tool that keeps the model in check

A short, evidence-first protocol for using retrieval-augmented generation without letting a language model turn an unsupported answer into a finding.

  • [A]

In short

The model is used for bounded transformations, while code controls search, evidence, verification, abstention and the run log.

Retrieval-augmented generation is not a citation system by itself. It gives a model more text; the protocol has to make that text accountable.

This is the method used in KIT Retrieval-Augmented Generation:

Pipeline

  • Plan: turn the question into sub-questions, search terms and falsification queries.
  • Discover: search the available literature providers and record providers that did not answer.
  • Acquire: fetch accessible full text through the paper library.
  • Index: split the text into passages with stable evidence IDs.
  • Retrieve and rerank: combine lexical and semantic search, then select the passages to inspect.
  • Extract: record the passage, source, direction, population, study role and a verbatim quote.
  • Synthesise: let the model draft only from evidence IDs that were actually retrieved.
  • Critique: search again for null results, opposing results and failed replications; do not merely ask the model to reconsider its own draft.
  • Verify: check quotes and numbers in code, then judge each claim against its cited passage.
  • Render and log: print bibliographic metadata from stored records and save the searches, passages, model versions, verdicts and limits.

Rules

  • The model fills bounded, schema-constrained forms. Code controls the sequence.
  • A paper’s existence and a passage’s support for a claim are separate checks.
  • A quote must occur in the stored passage.
  • A number in a claim must occur in its cited evidence, with a matching unit where the field declares units.
  • A citation must be an evidence ID from the run; the model does not type the bibliography.
  • A passage describing another paper is a pointer, not independent first-hand evidence.
  • Verifier disagreement is reported as disputed, not averaged away.
  • Failed claims are removed and counted in the limits.
  • “No opposing result was retrieved” is a statement about the search, not about the literature.
  • Retrieved papers are data, not instructions. Text addressed to an AI reader is excluded when detected.
  • A run’s own output is never indexed as a source for a later run.

Extending it

The engine is domain-neutral. A domain package supplies the rules that the engine cannot know:

  • which study designs count as evidence;
  • which sources are authoritative;
  • which units are equivalent;
  • which species, preparation or outcome gaps limit generalisation.

The domain is recorded in the run log. Adding a neuroscience, cardiovascular or vestibular extension changes the field rules without forking retrieval, verification or logging.

Limits

This does not make a language model truthful. It reduces the paths by which unsupported claims enter an answer and makes the remaining uncertainty visible.

It does not recover missing figures or supplements, make closed papers available, or guarantee that a verifier is right. When another model writes the answer through the repository’s MCP evidence tools, only the deterministic checks apply (evidence ids, quotes and numbers); whether a passage supports a claim is judged only inside the pipeline. A useful result can still be insufficient evidence.

Update — 2026-09-24

The repository is now public and linked above. Before publishing, the code was brought into line with this description: a claim whose number does not occur in its source is now removed rather than marked disputed, and the MCP evidence tools now apply the quote and number checks too.

Version history 5 revisions

Generated from this site's git history. with Claude means the commit carries a co-author line for an Anthropic model: an LLM took part in that change, not necessarily in every word of it, and git cannot say which. The same history on GitHub →

  1. v5 2026-09-30 07:40 Rename scientific-research-rag to retrieval-augmented-generation Joshua Anderton with Claude Opus 5.5 +6 −6 words
    Retrieval-augmented generation is not a citation system by itself. It gives a model more text; the protocol has to make that text accountable.
    This is the method used in [KIT ScientificRetrieval-Augmented Research RAGGeneration](https://github.com/polarizetech/scientificretrieval-researchaugmented-raggeneration):
    ## Pipeline

    Commit 4fc93ef on GitHub →

  2. v4 2026-09-25 07:42 Post: update repo link after rename Joshua Anderton with Claude Opus 5.5 +0 −1 words
    Retrieval-augmented generation is not a citation system by itself. It gives a model more text; the protocol has to make that text accountable.
    This is the method used in [KIT Scientific Research RAG](https://github.com/polarizetech/kit-scientific-research-rag):
    ## Pipeline

    Commit 434b16e on GitHub →

  3. v3 2026-09-25 06:46 Retitle: A RAG tool that keeps the model in check (new URL, no redirect, per operator) Joshua Anderton with Claude Opus 5.5 +4 −5 words
    ---
    title: "A RAG protocoltool that makeskeeps the model showin its workcheck"
    description: >-

    Commit e05369d on GitHub →

  4. v2 2026-09-24 17:10 Post: link the now-public KIT Scientific Research RAG repo Joshua Anderton with Claude Opus 5.5 +120 −14 words
    Retrieval-augmented generation is not a citation system by itself. It gives a model more text; the protocol has to make that text accountable.
    This is the method used in `computational[KIT Scientific Research RAG](https://github.com/polarizetech/kit-neurosciencescientific-research-rag`):
    ## Pipeline
    - "No opposing result was retrieved" is a statement about the search, not about the literature.
    - Retrieved papers are data, not instructions. Prompt-injectionText textaddressed to an AI reader is excluded when detected.
    - A run cannot promote its's own output intois thenever researchindexed corpusas a source for a later run.
    ## Extending it
    This does not make a language model truthful. It reduces the paths by which unsupported claims enter an answer and makes the remaining uncertainty visible.
    It does not recover missing figures or supplements, make closed papers available, or guarantee that a verifier is right. When another model writes the answer through the repository's MCP evidence tools, only the deterministic checks apply (evidence ids, quotes and numbers); whether a passage supports a claim is judged only inside the pipeline. A useful result can still be **insufficient evidence**.
    **insufficient evidence**.
    ## Update — 2026-09-24
    The repository is now public and linked above. Before publishing, the code was brought into line with this description: a claim whose number does not occur in its source is now removed rather than marked disputed, and the MCP evidence tools now apply the quote and number checks too.

    Commit a4f8d24 on GitHub →

  5. v1 2026-09-24 07:18 site: add evidence-first RAG method post Joshua Anderton first version

    v1: the original version, as first committed. Read it on GitHub →

    Commit 663a42f on GitHub →