Neo4j's sandbox for making LLMs talk to graphs
A working demo repo that wires natural language to Cypher queries, unstructured text to knowledge graphs, and LLM output to templated reports.

What it does
NaLLM is Neo4j’s experimental glue layer between large language models and graph databases. It ships three React frontends plus a Python backend that handle: asking plain-English questions against a Neo4j database (the LLM translates to Cypher), turning raw text into structured knowledge graphs, and generating reports that blend static graph data with LLM-generated content. Docker Compose spins up the whole stack locally; a pre-loaded demo database of companies, people, and news articles is available if you don’t bring your own.
The interesting bit
The demo database stores article text in Chunk nodes with text-embedding-ada-002 vectors already computed — so the RAG pipeline isn’t theoretical, it’s wired to actual vector search over a real (if small) knowledge graph. The blog series alongside the code is arguably the main deliverable; the repo is the runnable companion to five deep dives on fine-tuning vs. retrieval, multi-hop reasoning, and real-time analytics.
Key highlights
- Three independent React apps in
ui/src/, each scoped to one use case - Backend endpoints in a single
main.pywith LLM logic split into focused components - Docker Compose setup with optional OpenAI key via UI or
.env - Pre-built demo database (Diffbot subset) with credentials openly listed — handy, don’t ship production data this way
- Extensive blog series documenting design trade-offs, not just cheerleading
Caveats
- The README warns the field is “rapidly evolving” and code may stale-date quickly; this is an exploration repo, not a supported product
- “Bring your own database” requires hand-editing
api/fewshot_examples.pyfor your schema — no automatic Cypher generation adaptation - Frontend code is organized “for ease of navigation” per the README, but two separate React apps for three use cases suggests one got folded in or the structure drifted
Verdict
Worth a spin if you’re deciding whether knowledge graphs earn their keep in your RAG stack, or if you need working code to accompany the Neo4j blog curriculum. Skip it if you want a maintained, general-purpose NL-to-Cypher library — this is a demo scaffold, not a framework.