AI search and chat
Cited answers across SOPs, transcripts, integrated systems, and the memory graph — always under the requester's permissions.
Query patterns
Mnemos supports three query modes. They share retrieval but differ in how the result is composed.
- Answer — natural-language question. Returns a synthesized answer with inline citations.
- Find — return ranked artifacts without synthesis. Useful for discovery and audit.
- Walk — graph traversal from an entity, summarized as a structured response. Useful for "who depends on X?" questions.
Retrieval pipeline
Retrieval is hybrid: dense vector search (pgvector) plus lexical search (pg_trgm) plus structured graph lookup. Candidates are re-ranked by a cross-encoder, then filtered by the requester's permissions before being passed to the generator. Cross-tenant retrieval is impossible — the query plan is bound to the tenant session at the row-level-security boundary.
Citation format
Every cited claim resolves to a stable URI:
mnemos://artifact/<artifact_id>?range=12340-12502
mnemos://sop/<sop_id>#step-3
mnemos://graph/<entity_id>UIs that render Mnemos answers should hyperlink each citation to its source artifact, preserving the byte range so that the highlighted passage opens in context. The structured response also includes a confidence score per citation.
Permission filtering
Filtering happens at two layers: row-level security in Postgres restricts what the requester can ever load, and a policy engine evaluates fine-grained rules (project membership, data classification, retention status) on each candidate before it reaches the generator. The response includes a redactions field describing what was filtered:
{
"answer": "Month-end close is owned by the Revenue Ops team...",
"citations": [
{ "uri": "mnemos://sop/sop_01HZX...", "score": 0.91 }
],
"redactions": [
{ "reason": "project_not_member", "count": 3 }
]
}Asking a question
curl -X POST https://api.mnemos.ai/v1/chat \
-H "Authorization: Bearer $MNEMOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "How do we close month-end for revenue?",
"mode": "answer",
"scope": { "project_id": "prj_01HZX..." }
}'Always render redactions to your users. The whole point of a permission-aware system is that gaps are explicit, not invisible.