Environment and pre-processing — your own documents, retrieval and running RAD Reporter
Why the house standard belongs in the request to the language model — when it should travel in full and be cached, when it should be retrieved in excerpts, what that costs, and which documents achieve what
Version 1.0 · 25 September 2026 · Working paper on software documentation
Abstract
A language model knows textbook radiology, but not your department. The structure of your reports, your phrasing, the classifications that are binding where you work — all of that lives in documents that never reached the request. This dossier sets out how they get there, what has to be weighed, what it costs and how the documents should be written.
Two methods are available. Passing everything with caching sends the whole collection with every request and lets the provider reuse the unchanged prefix. Selective retrieval (retrieval-augmented generation, RAG) looks up the fitting excerpts for each dictation and sends only those. The first has no recall loss but does not scale; the second scales but can miss.
The rule proposed here, and implemented in RAD Reporter, is therefore not a choice between the two but a threshold: up to about 12,000 characters everything, above it only what fits. It follows from the cost model of caching, from the position-dependence of long contexts, and from the observation that a house standard typically sits just below that threshold. The cost calculation holds a surprise: with documents and caching a report costs less than without either. Passing the documents works with all providers in the program; only the price advantage differs.
New as of 3 October 2026
- Claude via Amazon Bedrock, ChatGPT via Azure OpenAI. For organisations with an AWS or Microsoft contract: Claude via Amazon Bedrock with the “EU only” tick (processing in EU data centres only, the place of processing is shown in the AI report) and ChatGPT via Azure OpenAI with your own resource. Enter region or address on the AI provider tab.
- PDF and browser too. Select text in a PDF (Acrobat, Foxit, Sumatra, PDF-XChange, Edge, Chrome) or on a web page – without a selection the whole text counts. The report goes into a new Word document (without Word into LibreOffice Writer). Proof-reading stays with writing programs.
- The icon bar in the document window. It moves into the window in front – Word, editor, PDF or browser – and shows all buttons there (no proof-reading in PDF and browser). Floating on the desktop it shows only the main button. If the window is closed, minimised or hidden, it waits on the desktop and returns by itself.
- Continuous progress bar – with Cancel. One window from reading to the finished answer: the reporter's emblem and name, the current step, provider, model and time – without gaps. Cancel stops the request at any time; the cancellation is logged with time and step and listed as “cancelled” in the archive.
- Check before sending: one table. Every item with placeholder, type and origin; uncertain items at the top in yellow. Whatever you send yellow and unticked counts as harmless from then on and is no longer marked. Right-click: always or never anonymise.
- More precise recognition. IBAN and card numbers only with a valid check digit (otherwise a yellow suspicion rather than a file number taken for an account); a form of address or role – “Mr”, “client”, “patient”, “born” – makes an uncertain name certain; law-firm and partnership names (“Gruber & Partner”) are replaced as companies.
- Narrated tutorial. The video explains every station with a synthetic voice – “Cori” on this English page, a narrator based on the “Kerstin” studio recordings (CC0, generated with Chatterbox, MIT) on the German one; both generated locally, free of third-party rights.
1Starting point
RAD Reporter does not work from a free-form prompt but from a fixed, readable rule set. That rule set answers the question of how a report is built: which sections, in which order, which duties of care, what must not be said. It is professionally general and deliberately written so that it holds in any institution.
What it does not answer is how a report sounds where you work. Whether the impression starts with the leading finding or with the clinical question. Whether you write “no evidence of” or “no signs of”. Which version of a classification is binding and with which sector names. Whether volumes are given in cubic centimetres or millilitres. These rulings are no less binding than the rule set — they simply live elsewhere: in guidance notes, templates and tables circulating in the department.
A language model knows none of this. Nor can it guess: it then picks whatever dominates in its training data. The result is a professionally defensible but foreign text — and that is exactly the rework the tool is meant to avoid. So the task is to bring the existing documents into the request in a way that makes them effective without overloading it.
2The two methods
2.1Passing everything, with caching
A request to a language model consists of an unchanging prefix — system instruction, rule set, background material — and a changing part, here the dictation. The prefix is the same for every report. That is precisely what makes it cacheable.
Technically the following happens: the provider forms a match value over the beginning of the request and keeps the model's corresponding internal computation state. If a request with exactly the same beginning arrives shortly afterwards, that state is reused instead of recomputing the prefix. The benefit is twofold: the answer starts sooner, and the reused portion is billed far more cheaply than freshly processed input. Creating the entry costs slightly more than ordinary processing; from the second request on the advantage dominates.
Three properties matter for the trade-off. First, there is no recall loss: the model sees the documents in full, nothing can be missed by a search. Second, it is deterministic — the same prefix underlies every report, independent of the dictation. Third, it comes with conditions: the cached beginning must be character-identical, it must reach a provider-dependent minimum length (on the order of one to two thousand tokens, depending on the model), and retention is short — a few minutes without a further hit, according to the vendors. Whoever writes a report every few minutes works inside the cache throughout; whoever writes one a day, never.
Caching is not a saving mechanism but a structural requirement: it rewards requests whose unchanging part comes first and whose changing part comes last. Insert material after the dictation, or put the dictation before the documents, and the advantage is lost entirely — not partly.
2.2Selective retrieval
If the collection is too large to send every time, it is split and made searchable. Each document falls into chunks of about a thousand characters, cut at paragraph boundaries and with slight overlap so that no thought is severed. Word forms are counted for each chunk and for the dictation. The search then uses the measure long established in document retrieval: BM251.
The formula does not stop at plain word frequency. IDF weights rare words above common ones — “microcalcification” carries more information than “finding”2. The denominator damps two things: k₁ limits the effect of repetition, which contributes little beyond the third occurrence, and b removes the advantage of long chunks that would otherwise win by length alone. Word forms are normalised beforehand: lower case, umlauts expanded, common German endings stripped, stop words discarded. That way “lesions” and “lesion” coincide.
The alternative is retrieval by embeddings, where texts are mapped to vectors and compared by proximity5. It also finds related meaning without a shared word form and beats the lexical method wherever things are paraphrased rather than named. But it requires every document and every query to pass through a second model — as a rule at the provider, so outside the building, with its own interface, its own cost and its own data-protection assessment.
For a radiological house standard the lexical method is not the second best but the appropriate choice. The terminology is fixed: a dictation concerning a PI-RADS category contains the words “PI-RADS”. Where matching is literal, the paraphrasing strength of embeddings brings no benefit — while its price, namely sending every document to a further service, remains.
3The trade-off
| Criterion | Everything, cached | Selective retrieval |
|---|---|---|
| Recall | Complete — nothing can be missed | Depends on wording and chunking |
| Waiting time | First request slightly longer, afterwards shorter than without documents | Constant; the search itself takes milliseconds |
| Cost | Created once, then heavily discounted reads — but the full length every time | Only the excerpts; independent of the size of the collection |
| Scaling | Ends where the prefix exceeds the window or the budget | Unbounded, because the selection stays small |
| Model attention | Falls with length; middle sections are used less well4 | Few, short, pertinent chunks |
| Data transmitted | The whole collection travels with every request | Only the selection; the search stays on the machine |
| Traceability | The request is identical for every report | Changes with the dictation; an audit needs a log |
The table shows no superiority but a reversal: every row tips with size. For small collections, passing everything wins on all counts except the amount transmitted; for large ones it reverses, and not gradually but as soon as two limits are crossed: that of the cache, which only carries a limited prefix length economically, and that of attention, since material in the middle of a long context is demonstrably used less well than material at its edges4.
The threshold set in RAD Reporter is 12,000 characters, roughly 3,000 to 3,500 tokens. It is chosen to safely exceed the minimum length for caching — below that nothing would be cached at all — while staying well under the length at which context position starts to tell. In practice that covers what a department actually writes as its standard: five to ten guidance notes. Whoever deposits a textbook collection falls above it — and is switched to retrieval automatically, with nothing to configure. The threshold is adjustable, but it is not a matter of taste: it follows the two limits named.
4Implementation
4.1Storage and preparation
The documents live in the program folder (subfolder “Unterlagen”); a button in the program opens it. Text and Markdown files are read directly. Word, RTF and PDF files are converted to text once through the word processor present on the machine; the result is kept beside the folder and tied to the source by timestamp and file size. If the source changes it is converted again, otherwise not. Measured on a Word file of medium size, the first conversion took 4.6 seconds, every later use one millisecond. At program start this happens in the background so the first report does not wait for it.
4.2Structure of the request
The order is not arbitrary; it follows directly from thesis 1:
- System block (unchanging, carrying the cache marker): the rule set, then — for a small collection — the complete documents.
- User block (changing): for a large collection first the retrieved excerpts with their source, then the task with the examination type, then the dictation.
From this follows a decision that looks perverse at first sight: the retrieved excerpts deliberately do not sit in the system block, although they are background material by nature. If they did, the prefix would change with every dictation and the cache would be missed for every report — including the rule set, which did not change at all. The changing part belongs behind the unchanging one, without exception.
4.3Precedence of instructions
The excerpts are handed over with an explicit classification: they are reference, not report content. Spelling, structure, phrasing and classifications follow them; everything factual comes from the dictation. Where a document contradicts the dictation, the dictation wins. Where a document describes a finding the dictation does not contain, that finding has no place in the text. This precedence is the real safeguard of the method — without it a well-meant template produces exactly the error it was meant to prevent: a building block describing something that was never seen.
5What it costs
Please note: All figures on operating and third-party costs – in particular the fees of the AI providers – are estimates based on the information currently available. Provider prices may change, and actual usage depends on how you work. We therefore cannot guarantee the costs actually incurred.
The question comes up immediately: if a whole stack of your own documents travels with every single report — does that not get expensive? The answer is no. With caching it actually becomes cheaper than going without them. Here is why.
Billing is by amount of text. The unit is the token; a thousand tokens are about 700 words, roughly a page and a half. Two things matter. The text you send is cheap — the text the AI writes costs about five times as much. And if the beginning of a request repeats, next time it costs only a fraction. That is the cache.
Take an ordinary report: rule set a good two pages, own documents four pages, dictation half a page, finished report just under a page. Throughout, the calculation uses the model class best suited to this task — which one that is, and why, is set out in section 5.1. A report then costs:
| Case | What is involved | Cost |
|---|---|---|
| Today — without your own documents | rules and dictation out, report back | 0.5 cents |
| With documents, provider without caching | four extra pages out — every time | 0.8 cents |
| With documents, first report | the provider stores the prefix | 0.9 cents |
| With documents, every further report | the prefix comes from the cache | 0.4 cents |
The last line is not an arithmetic slip. It is not only the collection that goes into the cache but the rule set as well — and from the second report on both are read at a tenth of the price. The surcharge on the first report is thus recovered after a single further one.
Per workstation: 50 reports a day on 20 working days makes a thousand reports a month. That costs:
| Case | per report | per person and month | and year |
|---|---|---|---|
| Without your own documents | 0.5 cents | about €4.60 | about €56 |
| With documents, without caching | 0.8 cents | about €7.40 | about €88 |
| With documents and caching | 0.4 cents | about €3.40 | about €41 |
| the same with a large model (Opus class) | about 5.7 cents | about €52 | about €620 |
| locally with Ollama | — | €0 | electricity and hardware only |
A high-volume workstation therefore costs about three and a half euros a month when the documents travel along and the provider caches — less than the €4.60 without documents. A department with ten people reporting comes to some €34 a month. By comparison, the same work with a large model costs about €520 a month. The choice of model thus weighs some fifteen times more heavily than the question of whether your own documents travel along. Whether they do is not a question of money.
What shifts the calculation. The model: a large model of the Opus class costs some fifteen times as much, a local model through Ollama nothing at all. The interval: whoever writes a report only every few hours creates the prefix anew each time and stays at about 0.9 cents — still barely more than going without documents. The size: for large collections retrieval takes over, so only a few pages travel, but the caching advantage falls away. What costs nothing at all is reading in the documents and the search itself — both run on your own machine.
5.1Which model class fits — and what it costs
The choice of model is the largest lever on cost (a factor of fifteen between small and large) and equally the largest on quality. So the question is not “which model is best” but: what does this task actually require?
It requires obedience to instructions (eighteen rules, an output structure, prohibitions that must not soften), completeness (every reportable item named individually), sure professional language and the discipline to invent nothing. It does not require what distinguishes large models: multi-step reasoning, weighing under uncertainty, calculation, world knowledge at its edges. The structure comes from the rule set, the facts from the dictation, the tone from your documents — the model has to order and phrase. And while dictating, waiting time counts: a small model answers in seconds, a large one keeps you waiting.
| Class | Fit for reporting | per report | per month |
|---|---|---|---|
| Small and fast Haiku, mini, Flash class |
Matches the task. Obedient, fast, professionally sure enough — the structure comes from the rule set anyway. | 0.4 cents | about €3.40 |
| Medium Sonnet class |
Noticeably better where the IMPRESSION gets demanding: many pathologies, synthesis, unclear dictations. | about 1.1 cents | about €10 |
| Large Opus class |
No discernible gain for this task, at fifteen times the price and a noticeably longer wait. | about 5.7 cents | about €52 |
The small, fast class as the standard — selectable in the program (Claude Haiku 4.5; the factory setting is Claude Opus 5). At a thousand reports a month it costs about €3.40 per member of staff, some €41 a year.
Anyone who wants to treat the hard cases differently switches to the medium class on the AI provider tab. For a tenth of the reports that makes about €4.10 a month instead of €3.40 — seventy cents for a hundred difficult reports. The large class does not pay off for this task.
This can be checked rather than believed: run ten typical dictations once through the small and once through the medium class and compare the results without knowing which is which. If you see no difference, there is none for your cases — and the decision is made. That comparison costs less than twenty cents in total.
Two conditions are unaffected by the class. Language: for German professional texts the differences between vendors are larger than between two classes of the same vendor — a reason to run the comparison across providers as well. And data protection: a local model through Ollama costs nothing and releases nothing, but needs a machine with graphics memory and stays behind the named classes in phrasing quality.
6Does it work with every provider
Two questions must be separated. Passing the documents is ordinary text inside the request — it works with all providers in the program without exception, as does retrieval, which runs on your own machine anyway. What differs is only whether caching applies, and with it the price advantage.
| Provider | Caching | What it means in practice |
|---|---|---|
| Claude (Anthropic) | Explicitly requested | RAD Reporter sets the marker itself; full benefit once the minimum length is reached. |
| ChatGPT (OpenAI) | Automatic | Unchanged prefixes above a minimum length are reused without any action. |
| Mistral (EU) | Not generally | The documents still take effect, the price advantage does not; cost stays around 0.8 cents per report. |
| Ollama (local) | Local, nothing billed | The server keeps the computation state of an unchanged prefix anyway; there are no costs at all. |
Blocked providers (since 5 October 2026). Google Gemini, DeepSeek, OpenRouter and Groq are blocked in all reporters – because of training on the data, processing outside the EU or uncontrollable routing. You can choose Claude, ChatGPT, Mistral (EU) and Ollama locally, plus Claude via Amazon Bedrock (processing in EU data centres only, selectable) and ChatGPT via Azure OpenAI.
6.1Roughly what the providers cost
Prices as at the time of writing – an estimate based on the information currently available, without guarantee for the costs actually incurred; the providers' current price lists are authoritative.
The price differences between providers are considerable — larger than anything caching contributes. The table below runs the same thousand reports a month from table 3 through every provider, without caching so that the figures stay comparable. Where caching applies, the amount falls to roughly a half or a third.
| Provider (model class) | input / output per million tokens | 1,000 reports a month |
|---|---|---|
| Ollama (local, your own model) | — | €0 |
| Mistral (small model, EU) | about $0.20 / $0.60 | about €1.30 |
| ChatGPT (small model) | about $0.40 / $1.60 | about €2.70 |
| Claude (Haiku class) | about $1 / $5 | about €7.40 |
| Claude (Sonnet class) | about $3 / $15 | about €22 |
| Claude (Opus class) | about $15 / $75 | about €110 |
Two lessons. First, a factor of eighty separates the cheapest route from the dearest — the choice of model decides the cost, not the question of whether your own documents travel along. Second, even the dearest amounts are small: €110 a month for a thousand reports is eleven cents per report. The choice should therefore follow the quality of the texts and the data situation — an EU provider or a local model may be preferable for reasons other than price.
So anyone not using one of the first four providers loses nothing in effect — only the discount. And anyone working locally with Ollama does not face the question: there, neither input nor output costs anything, and the documents never leave the machine.
7Which documents achieve what
Not every document has the same effect. The overview below sorts the usual genres by what they actually change in the generated text.
| Document | What it achieves | How it should be written |
|---|---|---|
| House standard per examination structure, mandatory items |
Strongest effect. Fixes order, headings and the items that must never be missing. | A short, imperative list; one line per rule. Put the examination type in the file name, because the name travels with the excerpt. |
| List of preferred phrasings | Acts directly on word choice — the fastest way to remove a foreign ring. | In pairs: “instead of X → Y”. A few dozen pairs suffice; justifications are superfluous. |
| Classification tables PI-RADS, BI-RADS, Fleischner … |
Secures the right version and the right category names. | Deposit only the version binding in your department, with the version number on the first line. Two versions side by side create contradictions. |
| Model reports one or two per examination |
Acts on sentence structure and length, hence on tone. | Only invented or fully anonymised cases. Keep them short — a model report is quickly longer than the entire rest of the house standard. |
| Units and abbreviations | Unifies measurements and abbreviations; prevents switching between millimetres and centimetres in one text. | Tabular, without prose. |
| Negative list what is not written where you work |
Strikingly effective, because prohibitions steer a model better than recommendations. | “No treatment recommendations”, “no probabilities in per cent” — one sentence per point. |
| Unsuitable | Textbook chapters and complete guidelines (their length crowds out everything else), real previous reports with personal data, several versions of the same standard, scanned images without a text layer. | |
7.1Seven rules for the folder
- Meaningful file names. The name travels with the excerpt and is itself a search term. “mri_prostate_standard.docx” beats “Standard_final_v3.docx”.
- One subject per file. That helps retrieval choose and helps you maintain them.
- Imperative, not narrative. “State volumes in cubic centimetres” works; “We usually state volumes in cubic centimetres because …” dilutes.
- Remove contradictions. Two files ruling the same thing differently are worse than none. Old versions belong out of the folder, not in it.
- Stay below the threshold. As long as the display says “small enough”, everything travels — the safest state. Whoever exceeds it should first check whether prose can be cut before relying on retrieval.
- Read again after depositing and check the status: count, characters and the chosen route are shown on the tab.
- Judge by the result. Run one typical case twice, with and without the checkbox, and compare the two texts — a minute that shows whether the documents work and what is still missing.
8Due care in a medical setting
No patient data in the folder. The documents go to the AI provider whose key is entered — for a small collection, with every single report. Templates, standards and tables belong there; real reports with names, dates of birth or case numbers do not. A real previous report used as a “style example” is exactly the case that must stay excluded here. Passing them can be switched off at any time with a checkbox.
The search stays on the machine. Chunking, weighting and selection are computed locally; no embedding service is contacted and no index is outsourced. Only what was actually selected is transmitted.
The report remains a draft. Neither the rule set nor the documents change the fact that the model sees no images and writes from what it is given. The documents improve the form, not the factual basis. Review by the physician remains necessary; the tool is not a medical device.
9Limitations
- Literal matching. Lexical retrieval finds what matches in word form. A dictation that consistently paraphrases while the document names the thing goes unserved. Remedy: write the documents with the terms that are actually dictated — or name the synonyms once, explicitly.
- Chunking. Where an argument runs over several pages it may fall between two chunks. The overlap softens this; it does not remove it. Short, self-contained sections suit the method better than long prose.
- Cache retention. Whoever reports at long intervals creates the prefix anew every time and gains nothing from caching — but suffers no disadvantage either.
- Provider dependence. See table 5: the effect is the same everywhere, the price advantage is not.
- No substitute for the rule set. Documents describe habits, not duties. Whatever must always apply belongs in the rule set, which instructs explicitly — not in a template from which it has to be inferred.
10The pre-processing stage in detail
Everything described so far concerns what goes out. This section concerns the stretch before that: what happens between the moment you press the key combination and the moment the request leaves the building. That stretch is called the pre-processing stage here. It is invisible, and that is precisely why it deserves to be written down: each of its parts helps decide what the model gets to see — and a model only answers what it sees.
The principle behind it is simple and the same in both reporters: the model is not made better, the question is. Every part described here is computed locally, without any outside service; it costs nothing per request and works without a network.
10.1Splitting: paragraphs, headings, overlap
A collection too large to be passed in full has to be split before it can be searched. How it is split decides everything that follows — a badly cut collection cannot be rescued by any search method.
Cuts are made at paragraph boundaries until about 900 characters have gathered; the last paragraph of a piece repeats in the next, so that no thought falls between two pieces. Each piece also carries the heading it sits under: it counts twice in the weighting and goes out with the excerpt, so the model knows what the passage is about.
That this description is accurate is not a matter of course but the result of a measurement. On a real working paper of 51,505 characters it turned out that Word puts a single paragraph mark between paragraphs while the program only split at blank lines. The consequence was that the entire file counted as one paragraph — cut blindly into equal blocks, without a single recognised heading. A second fault made the cutting loop advance by one character at a time at the end of a long paragraph. 66 paragraphs thus became 1,997 near-identical snippets averaging 88 characters.
| Measure | before | after |
|---|---|---|
| pieces from 51,505 characters | 1,997 | 76 |
| average piece length | 88 characters | about 680 characters |
| pieces with a recognised heading | 0 | 76 |
| hits for questions in the words of the text | 3 of 3 | 3 of 3 |
The last row is the most instructive: literal search worked the whole time — which is why the fault went unnoticed. It only became visible when the pieces were counted. Anyone running a pre-processing stage has to measure it; it does not report itself.
10.2Searching two ways: wording and meaning
The lexical measure (section 2.2) hits what is written. It misses what says the same thing differently. How often that happens can be measured: eight questions were put to the same 76 excerpts — three in the words of the text, five paraphrased, the way a user asks who does not know the document by heart.
| Question | wording | meaning | both |
|---|---|---|---|
| “omnibus directive easing reporting duties for businesses” | 39 | 4 | 4 |
| “How much must one read today to judge a tax liability?” | 12 | 1 | 3 |
| “Should large groups observe a floor in taxation?” | 21 | 16 | 13 |
| three questions in the words of the text | 1 | 1 | 1 |
| within the first five: wording 4 of 8 · meaning 5 of 8 · both 6 of 8 | |||
Measured in the finished program, that is including selection and the character budget: for questions in the words of the text it stayed at 3 of 3; for paraphrased questions the yield rose from 1 of 5 to 3 of 5. Two paraphrases remain unserved — a foreign term such as “decluttering” can neither be guessed nor paraphrased.
Meaning is computed by a small multilingual model (multilingual-e5-small, quantised, about 120 MB) that turns any text into 384 numbers; the closeness of two texts is then a simple dot product. Both measures are put on a common scale per question and mixed 60 % wording to 40 % meaning; whatever falls clearly behind is dropped. That last part matters: measured against two unrelated questions (a riding horse, lilac blossom) the second measure sent out not one character more than without it — 1,984 and 3,738 characters against 1,984 and 3,750. The second measure lifts what fits; it does not invent anything.
A second measure does not replace the first; it insures it against the case where the user does not know the document by heart. The price for it, however, must not be that the documents leave the building — which is why local computation is not one option among several but the condition under which the method can be considered at all.
10.3Literature and structure guide: PubMed and RSNA RadReport
With RAD Reporter two open specialist sources go along besides your own documents. Both are in English; a German dictation would find nothing there. The chosen model therefore first derives, in a short preliminary step, two to four English technical terms (preferably MeSH) plus organ and modality. Only these terms leave the computer — never the report text.
PubMed, the interface of the US National Library of Medicine (free, no account), is queried in two stages: first for guidelines of the societies (EFSUMB, ESUR, ESR, ACR and others), then generally for reviews and meta-analyses. What counts is the article type, not a word in the title: with “guideline” in the title, comparative studies came first (“… and ATA Guidelines”). Requiring the guideline type puts, for a prostate MRI, the EAU/ESUR guideline 2024 and its 2026 update plus the ACR Appropriateness Criteria first, and for a thyroid nodule the two EFSUMB guidelines of 2026. The articles go along as elements with author, journal, year and PMID; the model may cite literature only from them.
RSNA RadReport supplies the structured report template for the examination — free to use according to the RSNA. It goes along as a checklist of report elements: structure, language and order are still set by the rule set, the template's default values are not copied, and nothing is invented for fields the dictation is silent on. The interface's search knows only one keyword in the title (“prostate” finds, “MRI prostate” does not); hence the preliminary step delivers organ and modality separately.
This too was measured. A model with a thinking phase used up the 80 tokens first allotted to the preliminary step on thinking alone and returned only “Pr”; with 1,024 tokens the terms arrive complete. PubMed answers in 1 to 2 seconds, RadReport in 1 to 4 seconds.
10.4Learning from the correction
The last part works in the other direction. If a result is corrected by hand, the program compares draft and final version on request and proposes a rule from the difference — not silently, but as a proposal the user accepts, edits or discards. A habit that so far existed only in someone’s head thus moves into the rule set that leads every future request.
Learning, guided. Since 2 October 2026 learning no longer runs silently in the background but in an assistant with four steps. Compare: the AI's draft and your version side by side, every change below as ‘old → new’ – the draft comes from the last answer, after a restart too, or from an earlier saved answer. Choose rules: the AI proposes up to two general rules, each with a tick box and editable; an own rule can be added. Scope: for all reports or only for the examination. Adopt: the assistant shows what goes into the rule set and warns if a rule is already there; only ‘Adopt’ writes. It opens via the shortcut, the learn button on the bar or ‘Learn …’ on the rules page.
Release or discard. If the report goes into a separate Word document, you proof-read it there – sides, locations, measurements and classifications in orange, negations in violet, additions in grey. A small window that does not take the focus then asks Release or Cancel; the bar steps back meanwhile. Release reads the report with your corrections from the document and puts it as plain text without marks at the place in your editor window it came from – the selected passage or, if nothing was selected, the whole text. Cancel transfers nothing. Both close the document without saving; afterwards the bar is back and the cursor is in your editor window. Microsoft Word is required; without Word, LibreOffice Writer (free) takes the same role – if both are missing, an installation guide leads through the set-up.
10.5What it gains over “without”
| Part | Without it | With it (measured) |
|---|---|---|
| splitting at paragraph boundaries, with heading and overlap | 1,997 snippets, no heading, contexts torn apart | 76 pieces, each with its heading |
| heading inside the excerpt | the model reads a paragraph without knowing its subject | the passage is named; one more question answered |
| lexical search (BM25) | order by chance or file date | literal questions: 3 of 3 |
| semantic search (local, hybrid) | paraphrased questions: 1 of 5 | paraphrased questions: 3 of 5, with no extra output on unrelated questions |
| guidelines by article type instead of title word (PubMed) | comparative studies with “Guidelines” in the title first | the societies' guidelines first (EAU/ESUR 2024 and 2026, EFSUMB 2026) |
| preliminary step with a sufficient limit | 80 tokens: answer “Pr”, no search | 1,024 tokens: complete terms |
| learning from the correction | the same correction with every request | the habit is in the rule set from now on |
The effort is small and does not fall on the user: the vectors of all pieces are computed once when reading in (76 pieces in about 1.5 seconds) and then sit as a file next to the documents; per question a single computation of a few milliseconds is added. The compute service occupies about 190 to 220 MB of memory while running and starts in about half a second.
10.6The semantic model: origin and way of working
What it is. The semantic search of section 10.2 runs on multilingual-e5-small, a text embedding model by Microsoft Research. It writes no text and answers no question. It turns a text into a row of 384 numbers — a vector. Texts that mean something similar get similar vectors even if they share no word. That is exactly what lexical search lacks: it finds “hypertension”, but not “the blood pressure is persistently too high”.
Origin. The model is a small transformer in the style of BERT: 12 layers, 12 attention heads, a width of 384 numbers, about 118 million weights. Most of them sit in the vocabulary of about 250,000 word pieces for roughly a hundred languages, taken over from XLM-RoBERTa; German and English are well represented. It started from Microsoft's Multilingual-MiniLM and was trained in two stages: first “contrastively” on about a billion multilingual text pairs from the web — such as heading and paragraph, question and answer — pulling matching pairs together and pushing unrelated ones apart; then on hand-labelled datasets for retrieval and similarity. This is described in Wang et al., Text Embeddings by Weakly-Supervised Contrastive Pre-training (2022) and Multilingual E5 Text Embeddings: A Technical Report (2024). The model is licensed under MIT; the attribution is in the program's third-party licences.
The version shipped: ONNX, 8 bit. What ships is not the training format but a version in the open exchange format ONNX (Open Neural Network Exchange) — a vendor-neutral format holding a trained network as a computation plan with its weights. It comes from the “Xenova” collection on Hugging Face and is quantised: the weights are stored in 8 instead of 32 bits. The file model.onnx thus shrinks to about a quarter (about 113 MB) and runs faster; for this purpose the ranking of hits barely changes. The model is executed with Microsoft's ONNX Runtime (MIT licence), on the processor only and with at most four cores (half of those available); no graphics card is needed.
How a text becomes a vector.
- Marking. The text is prefixed with “query: ” for a question or “passage: ” for a piece of the documents. That is how the model learned to tell question and source apart; without these markers it is measurably worse.
- Splitting into word pieces. The text is split into the word pieces the model knows (SentencePiece unigram, as in XLM-RoBERTa); a long word such as “lymphadenopathy” falls into several pieces. Of all possible splits the one with the best overall score is chosen. The splitter is programmed into the service itself; its word list
woerter.bin(250,002 entries, 3.7 MB) is derived once from the model's vocabulary file. A piece is cut after 256 word pieces. - Computing. For every word piece the model returns 384 numbers that take the context of the whole piece into account — “bank” next to “loan” comes out differently from “bank” next to “river”.
- Averaging and normalising. The numbers of all word pieces are averaged and scaled to length one. Comparing two texts is then a simple dot product, the cosine similarity: the closer to one, the closer the meaning.
How it is integrated. The compute service semantik.exe sits in the program's Semantik subfolder and runs as a separate process; the reporter talks to it through standard input and output, one line per job. The vectors of all pieces of your own documents are computed once when they are read in and are then kept in a file next to the documents — with a checksum per piece so that only changed pieces are recomputed. Each request adds a single computation for the question. The ranking mixes 60 % lexical search (BM25) and 40 % meaning, both first brought to the same scale; anything reaching at least 55 % of the best score is considered. If the service is missing or does not start, the reporter works as before with lexical search alone — nothing depends on it.
What it costs and what it does not do. Measured: about 8 ms per piece, 25 ms at full length; the service starts in 0.4 to 0.55 seconds and uses 187 to 218 MB of memory. It needs no network, downloads nothing and sends nothing — the vectors never leave the machine; only what the selection puts into the request as an excerpt goes out. Its limits are those of a small model: it knows specialist language only as far as it occurred in its training data, and bare statutory citations or very short questions are better served by lexical search. That is why semantic search complements lexical search rather than replacing it — measured, paraphrased questions went from 1 in 5 without it to 3 in 5 with it, literal questions unchanged at 3 in 3.
10.7Pseudonymising and the check before sending
Before a request leaves the machine, the reporter replaces personal details with placeholders such as [PERSON_1] or [FIRMA_2]. It recognises 18 kinds: names and titles, companies, addresses, e-mail addresses, telephone numbers, IBAN, account and card numbers, social security, ID and tax numbers, vehicle registration numbers, IP addresses, dates of birth, patient or case numbers, and company register and VAT numbers. The same person gets the same placeholder throughout the text — the context stays understandable, only the identity is gone. The search terms for the online sources are also formed from the text after replacement.
Names from context (since 2 October 2026). Fixed rules capture whatever has a recognisable form — identification numbers, addresses, names after a title or role. They miss a first name on its own or a foreign name without a title. A local name model therefore runs as the primary pass (xlm-roberta-base-ner-hrl, licence AFL-3.0, reduced to 8 bit, 278 MB) in the same computing service as the semantic search: it recognises people and companies from context, in German, English and eight more languages, offline and without any text leaving the machine. Certain persons are replaced; uncertain finds and companies appear yellow in the check before sending for confirmation; courts, authorities and medical eponyms (“Crohn’s disease”, “Bosniak”) are left alone. If the model is missing, a check against the Windows dictionary takes over as the fallback: capitalised words known to neither the German nor the English dictionary count as suspected. In addition two remembered lists — “always anonymise” and “never anonymise” — apply to every run. Since 3 October 2026 the check shows every item in one table – with placeholder, type and origin; removing the tick puts the original back, uncertain items are yellow at the top, and whatever is sent yellow and unticked counts as harmless from then on (a third list). In addition IBAN and card numbers count only with a valid check digit, a form of address or role makes an uncertain name certain, and law-firm and partnership names are replaced as companies.
Check before sending. If anything was replaced or is suspected, the reporter shows the version about to go out in a separate Word instance — apart from the one you are working in — with every replacement highlighted in red. Only after your confirmation does the request go out; anything the recognition missed can still be replaced by hand there. Without Word a built-in window takes over.
Putting the data back. The model's answer contains the placeholders. On request the reporter puts the real details back locally and again shows the result in a separate Word instance, every restored detail in green: Insert real data passes the answer on in plain text, Keep placeholders leaves it pseudonymised. The mapping placeholder → plain text never leaves the machine. Learning from corrections (see there) also works on the replaced text.
Word and sense check. The last rule of every request is a plausibility test: before answering, the AI checks every word – does it exist, is it spelled correctly, is it the right term. It checks the text it was given in the same way: dictation and typing errors are read correctly where that is unambiguous; ambiguous passages are rendered neutrally and reported separately as “unclear in the text”. On request (Options, off by default) the program then checks again – before the data are put back, so on the placeholder text only. First it enforces fixed spellings (“Cholecystitis” becomes “Cholezystitis” in German text). Then it pre-sorts: what Windows spell check knows, what is in the texts sent along (dictation, rules, documents, template and literature) and what the learned term list contains counts as known. The AI checks the small rest and the text itself in a short extra call for two kinds of error: invented or misspelled words (“perikholezystisch”) and correct words in the wrong place (“pericystic” at the gallbladder instead of “pericholecystic”). Confirmed words are added to the term list for good; words found wrong are replaced and their correct form remembered, so the next time they are corrected at once without the AI. A correction by the AI only applies if the corrected form is itself known – otherwise the program reports the word as “please check”. Content, figures and assessment are left untouched; the extra call is entered in the cost book. No ready-made open German term list exists – so the list grows out of the work itself, without manual effort.
Limits. Recognition works with patterns and name lists. Unusual spellings, names that are also ordinary words, or details that identify a person only in context can slip through — hence the check before sending. It does not replace the care of not writing unnecessary personal details into the request.
11Environment, requirements and on-site installation
This section applies to RAD Reporter and states what a machine must bring so that operation is smooth, and what is to be done when setting up on site.
11.1The machine
| Item | Minimum | Recommended |
|---|---|---|
| operating system | Windows 10 or 11, 64-bit | Windows 11, current patch level |
| .NET Framework | 4.7.2 (included in Windows 10/11) | 4.8 or newer |
| memory | 8 GB | 16 GB |
| processor | four cores | eight cores; no graphics card needed |
| disk space | 200 MB (154 MB installed) | 1 GB for documents and reports |
| display | 1280 × 800 | 1920 × 1080 or larger |
| word processor | Microsoft Word (for dictation and hand-over) | Word 2016 or newer |
Semantic search is the only part with a noticeable appetite: about 190 to 220 MB of memory while it runs, and about 25 milliseconds of computing time for a full piece of 256 word parts. It can be left out at installation; the program then works as before with lexical search alone.
11.2A machine on which everything runs briskly
The table above states what is necessary. Anyone asking what the software runs best on will get a different answer than expected: it is not the big machine that helps but the fast single lane. Everything the user experiences as waiting depends on three things — the provider’s response time (no machine changes that), the speed of a single processor core, and the disk.
| Component | Proposal | Why exactly that |
|---|---|---|
| processor | eight to twelve cores with high single-core performance (e.g. current Intel Core i7/i9 or AMD Ryzen 7/9), base clock from 3 GHz | The interface, the splitting and the lexical search run in sequence; they get faster with a fast core, not with many. The language model uses up to four cores. |
| memory | 32 GB | 16 GB suffice; 32 GB let Word, browser, PACS viewer and the compute service sit side by side without Windows paging to disk. |
| disk | NVMe SSD, 512 GB or more; documents and program on the same SSD | The single biggest time sink when first reading in is reading the documents. On a spinning disk the same read takes many times as long. |
| graphics | nothing special — the built-in one will do | The model behind semantic search was deliberately chosen small enough to run on the main processor. A graphics card speeds up nothing noticeable here. |
| display | 27 inch, 2560 × 1440 or 4K – sharp at any Windows scaling (GDI scaling) | Dashboard and text window sit side by side; that saves constant switching. |
| network | wired, 100 Mbit is enough; low latency matters more than bandwidth | What travels is text in the kilobyte range. What counts is the round trip to the provider, not throughput. |
| operating system | Windows 11 64-bit with .NET 4.8, power plan high performance | On a saving plan the processor clocks down; the short computations of semantic search are exactly what suffers. |
| virus scanner | add the installation folder as an exception | Otherwise the compute service is scanned at every start — which costs more time than the computing itself. |
What this equipment does not achieve should be said just as plainly: the model’s answer is produced at the provider. A faster workstation shortens the preparation from fractions of a second to smaller fractions of a second; the wait for the report stays as it is. Anyone wanting to cut the total time noticeably picks a faster model at the provider — not a bigger machine.
11.3The network
An outgoing connection over HTTPS (port 443) to the chosen AI provider is required, plus to PubMed (eutils.ncbi.nlm.nih.gov) and RSNA RadReport (api3.rsna.org). Incoming connections are not needed, no ports have to be opened. If the institution uses a proxy, it is entered on the Proxy / network tab; it applies to the request to the model as well as to all online sources. User name and password are — like the API keys — stored encrypted with Windows data protection (DPAPI), readable only by the same Windows user on this computer. Without a network, splitting, search and semantic search remain fully operational — only the request to the model and the research do not work.
11.4What leaves the machine — and what does not
- It leaves the machine: the request to the language model. It contains the rule set, the selected excerpts from your documents, with a small collection the whole collection — and your text, with personal details only as placeholders (see “Pseudonymising and the check before sending”).
- It does not leave the machine: the collection as a whole, the search index, the vectors of the semantic search, your rules, your corrections, your access key. Splitting, weighting, semantic search and selection are computed locally. For activation only administrative data goes out: your e-mail address, a request code derived from a one-way function over a device identifier, the language, the Windows computer name and the small request file.
11.5The installation
One file is delivered (Setup_RAD_Reporter.exe, about 300 MB). It brings everything needed: the program, the compute service with its language model, the Microsoft runtime files and the licence texts. Nothing is downloaded and nothing on the system is altered — no registry entries, no path variables, no third-party installation. Everything sits in the chosen folder.
- Target folder.
C:\RAD Reporteris proposed — deliberately not under “Program Files”: the program also keeps its documents and the request file there and needs write access for that. - Semantic search. A checkbox decides whether the compute service and the language model are installed (about 130 MB).
- Licence. The wording can be read in the window; the consent is recorded with a date in the target folder.
- Warm-up. After copying, the model’s word list is converted into a compact form and computed through once — so that the first report is not the slowest.
- Shortcuts. Start menu and desktop as desired; the target folder holds a file
Entfernen.batthat removes the program again while leaving documents and activation in place.
Rights: an ordinary user account suffices as long as the target folder is writable. Administrator rights are only required for installing into a protected folder, which is not recommended. Virus scanners that delay unknown programs should know the target folder; otherwise the compute service starts late at every program start.
11.6Activation on site
At first start the machine is activated. The program shows a request code and places a request file in the Freischaltung subfolder of the installation folder — where it can be found again without searching the system temp folder. The file contains only that code, no content. It goes to the licensor; back comes a key valid on this machine only. To enter it, pasting the whole reply e-mail is enough — a key the mail program wrapped over several lines is recognised too; the expiry date is taken from the signed key only. Without a network, the route via the mail program remains open.
11.7Operation, backup, updates
- Changing documents. Put new files into the folder and press read in again. Only new pieces are computed; known ones come from storage.
- Backup. Back up the
Unterlagenfolder, theFreischaltungfolder and the settings file. The rest can be reinstalled at any time. - Updating. A new version is installed over the existing one; documents, rules and activation stay untouched.
- Several machines. Each machine is activated separately. The documents may sit on a network drive if everyone involved has read access.
11.8Protected folders
Where plain text is stored, only your own Windows account may enter. The program knows three such places, and each is protected the same way: access is limited to your own user account, SYSTEM and the administrators; inherited rights of other users or groups are removed.
- The program folder — the folder chosen during setup. The installer removes its inherited rights and allows only the three accesses named. If the chosen folder belongs to another account, nothing is installed there. It holds the program, the settings (the keys for the AI providers and the proxy additionally encrypted with Windows data protection, DPAPI), your own documents and the rule set.
- The saved AI answers — in the program folder under
Antworten(earlier versions: user profile,%APPDATA%; existing files are taken over once at the first start). There the program saves every AI answer before anything is inserted: the latest answer and a collection of the last twenty. The folder inherits the protection of the program folder.
How the protection works technically. Protection uses the access rights of the NTFS file system, a folder's access control list (ACL) — the same means by which Windows keeps user profiles apart. For each of the folders three things happen:
- Inheritance cut. A new folder normally inherits the rights of the one above it — on a data drive often “Users: read” or even “Everyone”. This inheritance is switched off; inherited entries are not carried over.
- Exactly three entries. Only your own user account, the SYSTEM account and the Administrators group are set, each with full control. They apply to the folder, all subfolders and all files in it — including those created later.
- Only on your own folder. Rights are changed only if the folder belongs to your own account: no rights are taken from someone else's folder, and a drive root such as
D:is never touched. If the program folder chosen during setup belongs to another account, installation stops with a message.
The installer sets this up once for the program folder.The keys for the AI providers and the proxy password are additionally encrypted in the settings with Windows data protection (DPAPI): they can be read only by the same Windows account on the same machine, even if someone copies the file.
What the protection does not do. Access rights govern who can look inside while Windows is running; the files themselves are not encrypted. Anyone who removes the drive or boots the machine from another system bypasses them. Windows drive encryption (BitLocker) protects against that, and we recommend it for every machine that stores plain text. Administrators always see the folders — deliberately, so that backup and maintenance keep working.
In operation this means: backup and antivirus software running as SYSTEM or with administrator rights still reach the folders; other users of the same machine do not see them. Anyone sharing a machine with colleagues works under their own Windows account with a program folder of their own. If a folder is placed on a network drive, the server's rights apply there — protection is then limited to what the server allows.
11.9Checklist for setting up
- 64-bit Windows, .NET 4.7.2 or newer — the installer checks both and says so in the first step.
- Target folder writable (not under “Program Files”).
- Outgoing HTTPS to the provider open; proxy entered if applicable.
- Provider access key entered and the connection tested in the dashboard.
- Activation completed.
- Own documents placed and read in once; look at the number of pieces — it tells you whether the splitting worked.
- One trial request made and the result compared with the house standard.
12Conclusion
The question “caching or retrieval” is put wrongly. Both methods solve the same task at different sizes, and the transition between them can be argued from technical constraints rather than preference. For the size a radiological house standard actually has, passing everything with caching is the better solution: it cannot miss anything, it is identical for every report, and in the steady state it is even cheaper than going without. Retrieval is the answer to that collection growing — not its replacement.
What decides the outcome in both cases is not the retrieval mechanics but the precedence: the rule set instructs, the documents set the form, and the facts come solely from the dictation. Where that order holds, additional material improves the report. Where it is softened, it produces text that looks like a report.
13References
- Robertson, S., Zaragoza, H. The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in Information Retrieval 3(4), 333–389, 2009.
- Spärck Jones, K. A statistical interpretation of term specificity and its application in retrieval. Journal of Documentation 28(1), 11–21, 1972.
- Lewis, P., Perez, E., Piktus, A. et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. Advances in Neural Information Processing Systems 33, 2020.
- Liu, N. F., Lin, K., Hewitt, J. et al. Lost in the Middle: How Language Models Use Long Contexts. Transactions of the Association for Computational Linguistics 12, 157–173, 2024.
- Karpukhin, V., Oguz, B., Min, S. et al. Dense Passage Retrieval for Open-Domain Question Answering. Proceedings of EMNLP 2020, 6769–6781.
- Gao, Y., Xiong, Y., Gao, X. et al. Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997, 2023.
- Anthropic. Prompt caching. Developer documentation of the Claude API; minimum length, retention and price factors are stated there per model.
