ConceptGraph AI
An academic GraphRAG platform that turns course PDFs into a queryable concept graph and returns reranked answers with page-level citations.
ReactFastAPIPostgreSQLQdrantNeo4jCytoscape.jsSentenceTransformers
Intent
Why this system exists
Flat retrieval loses prerequisite relationships and course structure. ConceptGraph explores how semantic search and explicit concept relationships can work together without sacrificing provenance.
Critical decision
What shaped the architecture
Canonical course UUIDs keep graph and vector records aligned. Retrieval is gated on READY, then vector candidates are expanded through Neo4j and cross-encoder reranked before entering grounded answer context.
- 01PDF ingestion→
- 02Validation→
- 03Chunking→
- 04Embeddings→
- 05Vector storage→
- 06Graph expansion→
- 07Retrieval→
- 08Reranking→
- 09Grounded answer
Reliability work
Designed for imperfect conditions
- Content-hash duplicate detection
- Canonical course UUID resolution
- Idempotent stage-level retries
- Partial-write cleanup
- Explicit processing states
- 10 MiB upload limit
- Citation provenance on every eligible chunk
- Concept nodes rendered
- 500+
- Initial bundle
- 927 → 150 KB
- Retrieval gate
- READY
Working result
What exists now
- Rendered 500+ concept nodes and dependency edges in the interactive graph dashboard.
- Reduced the initial frontend bundle from approximately 927 KB to 150 KB with lazy-loaded routes and graph components.
- Grounded generated answers with page-level source citations.
Next pass
What I would improve
Build a repeatable evaluation set for course-resolution errors, citation completeness, and retrieval latency under graph expansion.