This project turns unstructured notes into a queryable knowledge graph using LLMs. Instead of retrieving text chunks based on vector similarity, it leverages graph traversal and entity relationships to support multi-hop reasoning.
The system includes:
- A FastAPI backend for document ingestion and graph-based retrieval
- A React frontend with D3-based graph visualization
- A chat interface grounded entirely in knowledge graph context
graph-whisperer-react-app-GoogleChrome2025-06-1600-57-52-ezgif.com-video-speed.mp4
- Upload and parse raw text or notes
- Extract (Entity A) —[Relation]→ (Entity B) triples using LLM prompts
- Construct a live, visual knowledge graph
- Query the graph using a chat interface (no vector database required)
- Modular API-first backend designed for reuse in agents or bots
| Layer | Technology |
|---|---|
| Frontend | React, TailwindCSS |
| Backend | FastAPI (Python) |
| RAG Engine | LlamaIndex (Graph RAG) |
| Visualization | D3.js |
| Future Plans | Neo4j, spaCy, Hybrid RAG |
git clone https://github.com/Sarita-Joshi/note-to-knowledge.git
cd note-to-knowledgepython -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r backend/requirements.txtpython app.pycd frontend
npm install
npm run devCreate a .env file in the backend root directory with the important keys like
OPENAI_API_KEY=your_openai_key
GEMINI_API_KEY=your_gemini_key
GROQ_API_KEY=your_groq_key
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_passwordSee app.py for the following endpoints:
POST /upload— Ingest text or notesGET /graph— Retrieve graph nodes and edgesGET /chat— Query graph via LLM-backed reasoning
Auto-generated Swagger docs coming soon.
Some LlamaIndex methods are asynchronous internally, which may cause issues with FastAPI's sync/async routing.
Common error:
RuntimeWarning: coroutine '...' was never awaited
Workarounds attempted:
- Wrapping calls with
asyncio.run() - Background task queues
- Refactoring into sync-friendly wrappers
Contributions welcome if you’ve solved this more cleanly.
- Neo4j support for persistent graph storage
- Entity resolution via spaCy or sentence embeddings
- Hybrid Graph + Vector RAG
- Feedback loop to validate or revise extracted triples
- Graph memory integration for agent workflows
Contributions are welcome. To get started:
git checkout -b feature-name
# make your changes
git commit -m "Add feature"
git push origin feature-nameThen open a pull request.
Source: https://github.com/Sarita-Joshi/note-to-knowledge
MIT License
Built as part of a personal Mini Project Series focused on building E2E Applciations with AI, LLMs, and data-driven systems.