// RAG
FinGraphRAG
Portfolio risk & market analysis via GraphRAG
GraphRAGNeo4jQdrantFastAPIReactPythonDocker
Overview
Vector RAG is great until a question requires reasoning across relationships — "which of my holdings are most exposed to the same supply chain disruption?" needs a graph, not cosine similarity. FinGraphRAG combines both.
Architecture
- Knowledge graph (Neo4j) — companies, sectors, holdings, events, suppliers, executives, and the edges between them
- Vector index (Qdrant) — embeddings over news, filings, and analyst commentary
- Hybrid retrieval — graph traversal narrows the candidate set, then vector search ranks by semantic relevance
- Reasoning layer — LLM composes a final answer with citations to both graph paths and source documents
What it does well
- Sector exposure — "What % of my portfolio is exposed to lithium pricing?" pulls the graph path through suppliers and end-markets
- Event impact — "How might the new EU AI Act affect my holdings?" reasons across regulatory edges
- Structured outputs — every answer cites its sources; the UI lets you click through to the underlying graph subgraph
Lessons
Building a useful KG is more work than building the RAG layer on top. The entity resolution and edge typing decisions are the project. Once the graph is right, the rest follows.
// SCREENSHOTS

