RAG & Knowledge Assistants

Answers you can trace to a source.

We build systems that answer questions from your own documents and show you where each answer came from. Your policies, contracts, manuals and case files, searchable by asking, with a link back to the passage every time.

What it is

Retrieval-augmented generation means the model doesn’t answer from memory. Every question triggers a search across your documents, and the model writes its answer from what comes back. Change a document and the answer changes with it, with no retraining involved.

Typical work we’re asked for looks like this. An internal assistant over policies and procedures, so staff stop asking the same question in Slack. A customer-facing assistant grounded in product documentation. Contract review, where the question is what a clause actually says across two hundred agreements. Support that answers from the knowledge base rather than from a guess.

What you get is a working assistant over your document set, an ingestion pipeline that keeps it current as documents change, source citations on every answer, and an evaluation set built from real questions so you can measure it rather than trust it.

How we build it

Documents are chunked against their own structure rather than a fixed character count, because a table split down the middle retrieves as nonsense and a clause severed from its heading loses its meaning.

Retrieval is hybrid. Semantic search finds passages that mean the same thing in different words; keyword search catches the exact reference number, clause ID or product code that embeddings routinely miss. Candidates from both are reranked before they reach the model, because retrieving twenty and narrowing to four beats retrieving four.

Every answer carries its sources, linked to the passage rather than the document, so a reader can verify in one click instead of opening a 60-page PDF. The evaluation set is built from questions collected from the people who will actually use the system, because a test written by the developer only proves the developer got what they intended.

Where the boundary sits

The assistant says it doesn’t know. When retrieval returns nothing above the relevance threshold, the answer is that the documents don’t cover it, rather than a paragraph assembled from whatever was nearest.

It answers from your corpus, not from the model’s general knowledge. Mixing the two gives a reader no way to tell which they’re reading, and it’s the difference between a system people check and a system people stop checking.

Where a question needs judgement rather than lookup, it routes to a person. On a patient-facing system we built, anything approaching clinical territory escalated, and that line was drawn before any code was written.

Proof

A patient-facing RAG chatbot that books, charges and routes

Production system for a US healthcare team. Answers grounded in their own documents with traceable retrieval, and it escalates to a person before anything clinical.