Retrieval

How a question becomes a cited answer — four engines, reranking, and synthesis.

Chordian does not run "a vector search". A question fans out to four retrieval engines in parallel, the merged results are reranked, and only then does a model write an answer.

The four engines

EngineAnswers questions likeWhy it is needed
Vector"What do we know about employee benefits?"Semantic similarity across unstructured text
Graph"Who at Acme knows someone at Nexio?"Relationships that no amount of text similarity will surface
Episodic"What did we believe about this deal in June?"Time-aware recall over bi-temporal facts
CacheAnything asked recentlySub-100ms repeat answers

You do not choose engines. The query is classified and the weighting follows from its class — a relational question leans on the graph, a semantic one on vectors.

Cache correctness

The cache key folds in a per-scope corpus version counter that increments on every successful ingest. New content therefore invalidates cached answers for that scope automatically.

This matters more than it sounds. The failure mode it prevents — ingest a document, ask about it, get a confidently stale answer from cache — is one users never report as a bug, because it looks like the ingest silently failed.

Sources before the answer

On the streaming endpoint, the citation list is emitted before the first answer token:

event: sources     data: { "citations": [...] }
event: token       data: { "text": "The Acme" }
event: token       data: { "text": " expansion deal" }
event: done        data: { "answer": "...", "suggested_followups": [...] }

The ordering is a guarantee, not an implementation detail. A reader sees what the answer is grounded in before they read the prose, which is the difference between spotting a hallucination and discovering it later.

Degradation

Every engine call runs under a timeout. If one engine is slow or unavailable the others still answer — you get a result built from what was reachable rather than a hung request. If reranking is unavailable the pipeline falls back to reciprocal rank fusion, which is worse than a cross-encoder but far better than an error.

Before the model sees anything

Retrieved content passes the data perimeter before synthesis. Restricted values are dropped entirely and confidential values are masked, so a secret that reached the index cannot leak through an answer.

Was this page helpful?
Report an issue

On this page