Mnemos AI
Product

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:

citation 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:

response
{
  "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
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..." }
  }'
Best practice

Always render redactions to your users. The whole point of a permission-aware system is that gaps are explicit, not invisible.