Problem
Search results cite a document: title, source URL, connector, and the chunk's position. A reader can open the source but not see which sentence supports the claim. With context expansion a returned passage can span several chunks, so "which part of this did the answer use" is a larger question than it used to be.
Example
An agent answers that the data retention period is 90 days, citing a 60-page policy document. To verify, someone opens the document and searches it by hand. If the agent had the number wrong, nothing in the citation reveals that — the document is genuinely relevant and genuinely cited.
Where
platform/backend/src/knowledge-base/chunker.ts — where offsets would be recorded
platform/backend/src/knowledge-base/query.ts — ChunkResult.citation
platform/backend/src/archestra-mcp-server/ — the tool result the model sees
Approach
Do the cheap version first; it delivers most of the value and needs no schema change.
Quote verification. Ask the answering model to include a verbatim quote with each claim, then check the quote actually appears in the cited chunk. A quote that does not appear is a fabrication, and it is caught programmatically rather than by a reader. This is a prompt plus a string match, and it doubles as a hallucination check.
Stored offsets. Record character offsets when chunking and surface them in the citation. Two limitations to weigh before building on them:
- Offsets point into extracted plain text, not into the rendered source. There is no way to deep-link a highlight into a Confluence page or a Jira description, so the payoff is confined to a document viewer inside Archestra, which would also have to be built. PDFs would want page and bounding box instead, a different data model.
- Offsets shift when a document is re-ingested, so citations stored against an older version silently point at the wrong span. Chunk-level citations degrade more gracefully.
Done when
- An answer's claims can be verified against the cited source without a reader opening the document and searching it manually.
- A claim whose quote does not appear in the cited chunk is detectable.
Notes
Ranked below the retrieval items deliberately. This is a trust and audit feature rather than a retrieval quality one, and the expensive half has a narrow payoff.
Problem
Search results cite a document: title, source URL, connector, and the chunk's position. A reader can open the source but not see which sentence supports the claim. With context expansion a returned passage can span several chunks, so "which part of this did the answer use" is a larger question than it used to be.
Example
An agent answers that the data retention period is 90 days, citing a 60-page policy document. To verify, someone opens the document and searches it by hand. If the agent had the number wrong, nothing in the citation reveals that — the document is genuinely relevant and genuinely cited.
Where
platform/backend/src/knowledge-base/chunker.ts— where offsets would be recordedplatform/backend/src/knowledge-base/query.ts—ChunkResult.citationplatform/backend/src/archestra-mcp-server/— the tool result the model seesApproach
Do the cheap version first; it delivers most of the value and needs no schema change.
Quote verification. Ask the answering model to include a verbatim quote with each claim, then check the quote actually appears in the cited chunk. A quote that does not appear is a fabrication, and it is caught programmatically rather than by a reader. This is a prompt plus a string match, and it doubles as a hallucination check.
Stored offsets. Record character offsets when chunking and surface them in the citation. Two limitations to weigh before building on them:
Done when
Notes
Ranked below the retrieval items deliberately. This is a trust and audit feature rather than a retrieval quality one, and the expensive half has a narrow payoff.