This repository contains a GraphRAG working demonstration that ingests structured and unstructured tax sources, stores them in a vector database (Chroma) and a property graph (Neo4j), and exposes a chat API plus a small frontend to traverse the knowledge base and perform analytical queries.
- Docker
- OpenAI API key
- or local OLlama instance (download)
- Host ports 3000 and 8080 available
cp .env.example .env- Populate
OPENAI_API_KEYwith your OpenAI API key, alternatively see the environment variables section to configure Ollama
- Initialization may take a second.. or two.
4. Open frontend http://localhost:3000
- API may not fully start before frontend, it will soon be ready.
- This will take a second or two as well
- Alternatively you can run outside of docker by initializing a python environment and running the ingestion notebook
Repo heirarchy and linked documentation:
- Docker
- Data
- Packages (Python)
- Shared
- Orchestrator
- Ingestion
- Retrieval Hybrid database tools and utilities.
- Frontend
- Notebooks
This project reads configuration from a .env file in the repo root. The canonical settings live in packages/src/shared/config/settings.py.
Required (choose one):
- OpenAI: set
OPENAI_API_KEY - Ollama: set
OLLAMA_MODEL(default:llama3.1:8b)
Optional variables:
OPENAI_MODEL,EMBEDDING_MODELCHROMA_HOST,CHROMA_PORT,CHROMA_COLLECTION_NAMENEO4J_URI,NEO4J_USERNAME,NEO4J_PASSWORDLLAMA_CLOUD_API_KEY(only needed if re-running LlamaParse)
- Backend: Python 3.11, FastAPI, LlamaIndex, ChromaDB, Neo4j
- Frontend: Node 20, Vite, React
make testsmake lints
Method: POST
Path: /chat
Request body: (application/json):
{ "message": "user query" }
Response: 200 OK with Content-Type: text/event-stream
Streaming format: Server-Sent Events (SSE).
- Run interface services in dev reload mode:
make dev-frontendmake api-dev(watches packages/ for reload)
- Make databases available to host ports
make db-dev- neo4j viewer:
- http://localhost:7474/browser/
- default creds: u: neo4j p: neo4jtest
- Install packages directly to your current env
make install-pkgsormake install-pkgs-editable
- Run package tests
make tests
- Have python 3.11 (tested on 3.11.14)
pip install packages- Run
make db-devto expose the ports to host - Set DB configuration variables within the python environment to host accessible addresses, ie:
CHROMA_HOST=localhost CHROMA_PORT=8000 NEO4J_URI=bolt://localhost:7687
frontend: 3000
api: 8080
Not exposed to host by default:
neo4j: 7474, 7687
chroma: 8000
to expose db to host, see Dev Commands

