Skip to content

None Mode

The none mode uses Graphiti's default schema with no customization. This is the fastest way to get started but provides no type consistency.

Overview

Aspect Value
Ontology Required No
LLM Calls for Schema None
Type Consistency Poor
Setup Time Zero
Best For Quick prototyping, exploring data

How It Works

When you use --schema-mode none, Aletheia skips schema inference entirely and uses Graphiti's built-in defaults:

# Default schema (what Graphiti uses internally)
ENTITY_TYPES = {
    "Entity": Entity,  # Generic entity type
}

EDGE_TYPES = {
    "RELATED_TO": RelatedTo,  # Generic relationship
}

The LLM has full discretion to: - Create any entity types it wants - Use any relationship names it wants - Assign any properties it wants

Usage

aletheia build-knowledge-graph \
  --use-case my_case \
  --knowledge-graph my_graph \
  --schema-mode none

What Happens During Ingestion

Episode: "Hamas is a terrorist organization designated by the US State Department"

LLM extracts (no guidance):
  Node: "Hamas"
    - labels: ["TerroristOrganization"]  ← LLM's choice
    - properties: {type: "militant group", founded: "1987"}

  Node: "US State Department"
    - labels: ["GovernmentAgency"]  ← LLM's choice
    - properties: {country: "United States"}

  Edge: Hamas -[DESIGNATED_BY]-> US State Department  ← LLM's choice

The exact types and relationships depend entirely on the LLM's interpretation.

Output

No schema files are generated. The schemas/ directory is not used.

Pros and Cons

Advantages

  • Zero setup: No ontology, no configuration
  • Fast iteration: Start ingesting immediately
  • Flexible: LLM adapts to any data structure
  • Good for exploration: See what the LLM naturally extracts

Disadvantages

  • No consistency: Same concepts may get different types across documents
  • Relationship sprawl: Many semantically equivalent relationship names
  • Poor retrieval: Queries miss results due to type fragmentation
  • No schema documentation: No record of what types exist

When to Use

Use none mode when:

  1. Quick prototyping: You want to see results fast without configuration
  2. Data exploration: You're exploring unknown data to understand its structure
  3. Testing Graphiti: You're testing the basic extraction pipeline
  4. Throwaway graphs: You'll rebuild with a proper schema later

When NOT to Use

Avoid none mode when:

  1. Production systems: Type consistency matters for queries
  2. Multi-document ingestion: Same entities appear across many documents
  3. Evaluation: Measuring retrieval quality requires consistent types
  4. Long-term storage: You need a documented, stable schema

Example: The Problem

Consider ingesting 1000 news articles about organizations:

Article 1: "Apple announced new products..."
  → LLM creates: Company, Corporation, TechCompany (varies by article)

Article 500: "Apple's stock price..."
  → LLM creates: Company (maybe), Organization (maybe)

Result: "Apple" exists as 5 different entity types
  → Query for "Company" misses 60% of Apple mentions

Migrating from None Mode

If you started with none and want to add a schema:

  1. Analyze current graph: See what types the LLM created

    redis-cli GRAPH.QUERY my_graph "MATCH (n) RETURN DISTINCT labels(n), count(*)"
    

  2. Choose a schema mode: Based on your findings, select llm, ontology, or graph-hybrid

  3. Rebuild: You'll need to rebuild the graph with the new schema

    aletheia build-knowledge-graph \
      --use-case my_case \
      --knowledge-graph my_graph \
      --schema-mode llm \
      --reset