HKUDS/DeepTutor · critical · RuntimeError

GraphRAG indexing failed: {detail}

Error message

GraphRAG indexing failed: {detail}

What it means

Generic RuntimeError from _build_impl: the GraphRAG indexing run itself failed; the message aggregates up to the first three workflow errors as 'workflow: error' detail strings after unclassifiable errors (model errors that classify_model_error / embedding classification couldn't map).

Source

Thrown at deeptutor/services/rag/pipelines/graphrag/engine.py:350

        config=config,
        method=IndexingMethod.Standard,
        is_update_run=is_update,
    )
    errors = [r for r in results if getattr(r, "error", None) is not None]
    if errors:
        for result in errors:
            error = getattr(result, "error", None)
            if isinstance(error, BaseException):
                workflow = str(getattr(result, "workflow", "") or "").lower()
                classified = (
                    classify_embedding_error(error)
                    if "embed" in workflow
                    else classify_model_error(error)
                )
                if classified is not None:
                    raise classified from error
        detail = "; ".join(f"{r.workflow}: {r.error}" for r in errors[:3])
        raise RuntimeError(f"GraphRAG indexing failed: {detail}")


async def _resolve_outputs(config, names: list[str], optional: list[str]) -> dict[str, Any]:
    """Load the requested output parquet tables as DataFrames (mirrors the CLI)."""
    from graphrag.data_model.data_reader import DataReader
    from graphrag_storage import create_storage
    from graphrag_storage.tables.table_provider_factory import create_table_provider

    storage_obj = create_storage(config.output_storage)
    table_provider = create_table_provider(config.table_provider, storage=storage_obj)
    reader = DataReader(table_provider)

    frames: dict[str, Any] = {}
    for name in names:
        frames[name] = await getattr(reader, name)()
    for name in optional:
        frames[name] = await getattr(reader, name)() if await table_provider.has(name) else None
    return frames

View on GitHub (pinned to 3e82f13042)

Solutions

  1. Read the joined detail to see which workflow and underlying error failed, then address it directly.
  2. Retry the build after fixing rate limits/network/storage issues; indexing resumes over outputs.
  3. Check graphrag logs/output dir for full per-workflow errors beyond the first three.
  4. Align the installed graphrag package version with what DeepTutor's adapter expects.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await build(root_dir)
except RuntimeError as e:
    detail = str(e)
    if not detail.startswith("GraphRAG indexing failed:"):
        raise
    persist_partial_failure(detail); notify_user(detail)

Prevention

When it happens

Trigger: Running build() for a GraphRAG KB where one or more GraphRAG workflows (e.g. extract_graph, embed_text) errored during the indexing pipeline, with causes outside the recognized error taxonomy.

Common situations: Mid-index API rate limits/outages, malformed source documents crashing a workflow, GraphRAG library version mismatches, disk/full parquet write failures in the output dir.

Related errors


AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27). Data as JSON: /api/errors/fb5e1fd6f4df0449. Report an issue: GitHub.