Skip to content

v0.13.0 — GraphRAG restored (experimental)

Choose a tag to compare

@github-actions github-actions released this 06 Jul 06:28
· 25 commits to main since this release
d519bb0

The correction release: v0.12.0's BREAKING GraphRAG removal was a
misdiagnosis (an OpenAI-strict extractor emptied the graph — a
misconfiguration, not a dead feature), so GraphRAG returns as experimental,
together with the fix for the footgun and a guard that keeps it from silently
looking dead again. Deployments that kept KNOWLEDGE_GRAPHRAG_ENABLED off are
unaffected; upgraders from ≤0.11 get the graph tables re-created (with
tenant-isolation RLS) by migration 0011.

Added

  • GraphRAG restored as experimental — corrects the v0.12.0 removal. v0.12.0
    removed GraphRAG as "non-functional (0 graph neighbours)", but that was a
    misdiagnosis: the verification ran the extractor on the default OpenAI-strict
    chat model, whose strict structured-output rejects the extractor's nullish
    schema → zero entities → empty graph. On a nullish-tolerant extractor the graph
    populates and resolves (verified live: 12/12 materials → 82 entities / 121
    mentions / 74 relations, neighbors() + multi-hop). The deleted modules and
    wiring (graph schema, graphrag, graphrag-extractor, graphrag-postgres,
    graph-store, qaplan, ontology, kl_graph_neighbors) are restored verbatim;
    migration 0011 re-creates the kg_* tables with tenant-isolation RLS (the
    0009 drop is kept as history, not reverted). Off by default; positioned
    experimental and agent-unproven (see docs/knobs.md).
  • KNOWLEDGE_GRAPHRAG_EXTRACTOR_MODEL — routes the entity/relation extractor
    to a nullish-schema-tolerant model (e.g. a Gemini id). This is the actual fix for
    the empty-graph footgun that caused the wrong removal. Unset = default chat model
    (safe only if it is not OpenAI-strict).

Changed

  • GraphRAG is now covered by the enabled-but-dead guard. The graphrag layer
    joins the manifest with an answer-observable predicate (graphContextRows > 0),
    so smokeCheckableLayers fails when GraphRAG is enabled but the graph is empty —
    exactly the silent state that the v0.12.0 removal misread. The extractor also
    warns loudly when a non-empty document yields zero entities.