← All use cases
The scenario
The answer exists. It is in a design doc, or a thread, or a deck from last
quarter, and the person who knows which is on leave.
Keyword search fails here because the document does not use your words. You are
asking “why do we bill on ingest?” and the doc says “retention-time accounting”.
Step 1 — Put the sources in one space
Tag by source so a later question can be narrowed without a second space.
Step 2 — Ask, in your own words
Extraction stores meaning, not just tokens, so a question phrased in the words
you actually have finds a document written in the words you do not.
Step 3 — Show where it came from
For internal search this matters more than it looks. An answer with no source is
a rumour, and people are right not to act on it.
Evals
- Collect ten questions your team asked in Slack that were answered by a link.
- Ask all ten and score against the linked document.
- Deliberately ask one using vocabulary that appears nowhere in the corpus. A
semantic system should still find it; if it does not, the source is missing
rather than the search being bad.
- Check
document_id resolves for every answer you would act on.
Guardrails
Access control is per space, not per document. Everything you upload into
one space is readable by everyone with access to it. Do not mix a public
handbook with board material and rely on the question not being asked — use
separate spaces.
- Stale beats missing, but only just. An archived RFC answers as
confidently as a current one. Tag by status and filter, or
supersede explicitly.
reason costs more than retrieve. Use retrieve where the user can read
the results themselves, and reason where they need them synthesised.
- Don’t ingest everything. A corpus of drafts, duplicates and superseded
versions produces confident contradictions; curate at the folder level.
Built from
Both are complete, runnable scripts:
document_qa.py,
memory_basics.py.