ClarionnClarionn

From scattered information to connected answers.

Clarionn builds a knowledge graph from your documents and keeps it up to date. So answers hidden across files become easy to find.

Benchmarked

90%

Search accuracy across different domains.

Medical · Legal · Literature · Finance

Evaluated on academic benchmarks including GraphRAG-Bench, HotpotQA, and T²-RAGBench.

  • Plug and play. Builds the graph from your documents.
  • No maintenance. Edits, deletions and duplicates handled.
  • Backed by evidence. Every answer links to its sources.

Building the graph is just the beginning. Maintaining it is the challenge.

Build it yourself

16 components to build and maintain

6 prone to breaking in production

Document parsingChunkingFact extraction promptsSchema designMerging duplicate entitiesGraph databaseVector indexesEmbedding pipelineLLM retries and failoverJob queueUpdating changed documentsRemoving deleted documentsGraph query agentCitationsPer-customer isolationQuality testing

Use Clarionn

3 calls to use

Fully automatic. No upkeep.

  • uploadSend a document. It joins the graph.
  • queryAsk a question. Get a sourced answer.
  • retrieveOr take the ranked passages to your own model.

From files to answers in five steps.

  1. 1Upload

    Send your knowledge base.

    Clarionn reads them, pulls out the facts and adds them to the graph.

    # export CLARIONN_API_KEY=cln_sk_...
    from clarionn import Clarionn
    
    cl = Clarionn(workspace_id="ws_7c31a0")
    
    files = ["company_openai.md",
             "person_mira_murati.md"]
    for path in files:
        report = cl.files.upload(path)
        cl.files.wait(report.id)
    Indexed Documents list of the demo's markdown files about AI companies and founders, each marked Indexed
  2. 2Ask

    Ask a question that spans multiple files.

    This answer joins three companies and five founders from different documents.

    answer = cl.query(
        "Who founded Anthropic, Safe "
        "Superintelligence and Thinking "
        "Machines Lab, and what roles did "
        "each founder hold at OpenAI before?"
    )
    print(answer.text)
    The question, and an answer naming the founders of Anthropic, Safe Superintelligence and Thinking Machines Lab and their earlier OpenAI roles
  3. 3Check

    See the evidence behind it.

    Each answer carries its source passages. Or send the ranked passages to your own model.

    for c in answer.citations:
        print((c.content or "")[:80])
    
    # or just the ranked passages
    hits = cl.retrieve(
        "Who founded SSI?", k=3)
    for p in hits:
        print(p.score, p.content[:80])
    Retrieved source passages, about Safe Superintelligence and Mira Murati, with relevance scores of 100% and 95%
  4. 4Explore

    Use the graph directly.

    Find an entity, walk its connections, or ask how two entities link.

    murati = cl.entities.search(
        "Mira Murati").data[0]
    openai = cl.entities.search(
        "OpenAI").data[0]
    
    around = cl.entities.connections(
        murati.id, hops=2)
    links = cl.relationships.paths(
        murati.id, openai.id)
    Knowledge graph centred on Mira Murati, linked to OpenAI, Thinking Machines Lab and her roles
  5. 5Inspect

    A data model you never have to design.

    Clarionn works out the kinds of things your documents describe, and it updates them as new files arrive.

    tree = cl.ontologies.list()
    
    for cls in tree.walk():
        print(cls.class_type, cls.name)
    A grid of the 121 classes Clarionn found on its own, including Person, FormalOrganization, TechnicalSystem, MedicalCondition, UrbanDistrict, AirPermit, Film and StrategicPriority, each with its properties

Works with the tools you already use.

Python SDK

Available on request. Sync and async clients.

from clarionn import AsyncClarionn

answer = await AsyncClarionn().query(q)

LangChain and LlamaIndex

Drop-in retrievers for both frameworks.

from clarionn.integrations.langchain \
    import ClarionnRetriever

docs = ClarionnRetriever(k=8).invoke(q)

MCP server

Give your agents the graph as a tool.

# point your agent runtime at:
python -m clarionn.mcp

networkx export

Take the graph out and analyse it yourself.

g = cl.graph.fetch(limit=500).to_networkx()
nx.degree_centrality(g)