Search, chat & citations
How retrieval works, when to scope by project, how to verify every answer.
The two retrieval modes
Every search uses two methods at once and fuses the results:
- Semantic — your question is embedded into a vector, and the top-K most similar chunks (by cosine distance) are returned. Catches paraphrases: asking "how do we handle leaked credentials" finds a document that says "incident response for compromised accounts."
- Full-text — MariaDB FULLTEXT keyword match. Catches exact terms: asking "what's our policy on AES-256" finds the document that literally mentions AES-256, even if no embedding captures that specific cryptographic detail.
The two ranked lists are merged via Reciprocal Rank Fusion (RRF, k=60). Chunks that appear in both pools rank highest — that's usually the answer you want.
Two output modes
At the top of the search bar you can pick:
- Sources only — see the top chunks ranked, with their document and page, no LLM call. Cheap and instant. Use this when you want to verify the retrieval before spending a generation, or when you just need to find which document covers a topic.
- Generate answer — same retrieval, plus the top chunks are sent to a language model which writes a synthesised answer with numbered citations. This is what most people leave on. Each generation counts against your monthly cap (see Your account & plan).
Scope: search everything vs one project
By default, search runs over all projects you can see. Two ways to narrow:
- Click the scope button next to the search bar and tick one or more projects. The selection persists across searches in the same session.
- Use Library → Filter on any document to scope future searches to that single document.
Scoping is the single biggest lever for answer quality. A question that returns a fuzzy answer over everything often returns a sharp answer when scoped to the one project that actually covers it.
When to scope
| Situation | Scope to… |
|---|---|
| You're a salesperson answering a security question | Bid library + Trust projects, not HR |
| You're an engineer asking about a past architecture choice | Engineering / ADRs only |
| You're an employee asking an HR question | HR handbook only — avoids picking up policy-adjacent docs from elsewhere |
| You don't know where the answer might live | Don't scope — let it search everything |
Threads — multi-turn chat
The sidebar's Recent list keeps your past conversations. Click any one to resume; the model sees the prior turns and can answer follow-ups in context ("and the second one?", "what about for enterprise customers?", "rewrite that more formally").
Threads are private by default — only you see them. They persist forever (no auto-deletion).
Use the New conversation button (or the + in the sidebar) to
start a fresh context whenever the topic changes.
Citations — how to verify any answer
Every synthesised answer ends with citations like [1] [2] [3]. Click any number
to slide open the source drawer on the right showing:
- The document name and link.
- The page number (for PDFs), sheet name + row (XLSX), slide number (PPTX), section heading (DOCX).
- The exact passage retrieved — verbatim, not summarised.
If the cited passage doesn't actually support the claim the model made, you've caught a hallucination — open the document and check. In practice this is rare with our grounding defaults, but it's the most important habit to build with any AI tool.
The grounding promise. When Knowledge can't find an answer in your corpus, agents with grounding mode turned on (the default for new agents) will say so explicitly rather than invent. See the agent's grounding-mode field.
Common search anti-patterns
- Vague questions. "Tell me about security" returns mush. "Do we encrypt backups at rest?" returns the exact policy clause.
- Too many tokens in one question. If you ask three things at once, the retrieval pulls a mix — and the answer is shallow on each. Ask one at a time.
- Looking in the wrong scope. If you're getting "I don't see that in your documents" but you know the doc exists, check the project filter at the top of the page.
- Stale corpus. Search reflects what's uploaded. If the policy changed last month but nobody re-uploaded the new version, the answer will be wrong but cited. Habit: refresh docs quarterly.