Multi-tenant · self-hostable

Turn documents into cited, graph-aware answers.

GraphRAG is a multi-tenant knowledge API. Upload a partner’s documents; it extracts an entity & relationship graph, and answers questions with hybrid retrieval and citations back to the source — each tenant fully isolated.

No vendor lock-in · runs on your infrastructure via Docker Compose

ask a question
# Ask, and get an answer grounded in your own documents
curl -X POST https://api.your-host/v1/answer \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "How do we handle refunds?", "k": 6}'

# → { "answer": "...", "citations": [ … ], "graph_used": false }

Why GraphRAG

Everything a partner knowledge base needs

Built for teams running document intelligence for multiple customers — safely, and with answers you can trust.

🔒

Per-tenant isolation

Every project gets its own isolated knowledge base — enforced at both the application and database layers. One tenant can never reach another’s data.

🕸️

Entity & relationship graph

Ingestion extracts a typed knowledge graph from your documents — entities, aliases and relationships — with every fact traceable to a source passage.

🎯

Hybrid retrieval + citations

Semantic vector search fused with keyword search and cross-encoder re-ranking. Every answer cites the exact chunks it used.

Native vector search

Nearest-neighbour search runs on a native vector index inside the graph store — no brute-force scan, no separate vector database to operate.

💾

Backups & tested restores

Automated per-tenant backups with restores that are actually drilled on a schedule — a backup is only real once it has been restored.

🧩

Simple REST API

Create a project, upload documents, ask questions. Bearer-token auth, async ingestion with job polling, and an SSE streaming answer endpoint.

How it works

From raw documents to grounded answers

Create a project

Provision an isolated tenant and receive an API key.

Upload documents

PDF, Office, HTML, Markdown and more — parsed and chunked for you.

Graph is built

Entities, relationships and embeddings are extracted asynchronously.

Ask questions

Get a synthesized answer with citations back to your sources.

Evidence-first

Answers you can defend, not just plausible text

Retrieval is graded on whether it surfaces the right evidence, and answers are validated against the passages they cite. Graph-based answering is only enabled once it is measured to help on real documents — so you get robust results today and a proven upgrade later, never an unproven feature.

  • Citations resolve to real chunks in your own corpus
  • Refusal-first: an unsupported question is declined, not invented
  • Per-tenant isolation verified at the database layer
  • Rigorous, documented evaluation before anything ships
How retrieval works →
answer response
{
  "answer": "Refunds are issued within
    14 days of purchase [chunk:doc:…:3].",
  "citations": [
    {
      "chunk_id": "chunk:doc:8f2…:3",
      "document_id": "doc:8f2…",
      "text": "Refunds are processed…",
      "source": "retrieval"
    }
  ],
  "graph_used": false
}

Ship a grounded knowledge base for your next partner

Create a project, upload documents, and start answering — self-hosted, isolated, and cited.