phuonguyen/medical-rag-with-gnn
0
title: Medical RAG with GNN emoji: ๐ฅ colorFrom: blue colorTo: green sdk: docker app_port: 8501 tags:
- streamlit
- gnn
- rag
- medical pinned: false license: mit ---
๐ฅ Medical RAG with GNN
A modern, graph-powered RAG pipeline for medical QA.
This project combines a knowledge graph, GNN-based structural embeddings, and a hybrid retriever to deliver accurate medical answers. All components are optimized for CPU and Hugging Face Spaces.
Quick Navigation
- [System Diagram](#system-diagram)
- [Artifacts & Data](#artifacts--data)
- [Graph & GNN Details](#graph--gnn-details)
- [Retriever Logic](#retriever-logic)
- [App & Usage](#app--usage)
- [Deployment Notes](#deployment-notes)
- [Directory Layout](#directory-layout)
- [Citations](#citations)
System Diagram
MedQA Subset
โ
โผ
PropertyGraphStore (LlamaIndex)
โ
โผ
GCN (PyTorch Geometric)
โ
โผ
Hybrid Retriever (Semantic + Structural)
โ
โผ
Streamlit UIArtifacts & Data
- Graph:
src/graph_storage_500/(JSON) - Embeddings:
src/pyg_data.pt,src/structural_embeddings.pt - Node Map:
src/node_id_map.pt - Subset: MedQA (200 docs)
Graph & GNN Details
- Graph Construction: Entities/relations from medical Q&A via LlamaIndex.
- GCN Model: 2-layer, 384-dim, self-supervised link prediction. See
src/rag_gnn_structural_embeddings.py. - Artifacts: PyG Data, GNN embeddings, node map.
Retriever Logic
File: src/dual_scoring_retriever.py
- Semantic Score: Cosine similarity (query โ node text embedding)
- Structural Score: Cosine similarity (query โ GNN embedding)
- Hybrid: Weighted sum (ฮฑ slider in UI)
- Returns: Top-5 nodes for context
App & Usage
- Entry:
app.py(root) - UI: Streamlit (question input, ฮฑ slider, context expander)
- Artifacts: Loaded at startup
How to run:
- Launch the Space (first run may download LLM weights)
- Enter a medical question
- Adjust ฮฑ for retrieval balance
- Expand context to inspect retrieved nodes
Deployment Notes
- Docker: Uses
sdk: dockerfor Hugging Face Space - RAM/CPU: 16GB RAM, CPU-only
- Artifacts: All required files are committed
Directory Layout
.
โโโ Dockerfile
โโโ README.md
โโโ app.py
โโโ requirements.txt
โโโ src/
โโโ dual_scoring_retriever.py
โโโ rag_gnn_structural_embeddings.py
โโโ node_id_map.pt
โโโ pyg_data.pt
โโโ structural_embeddings.pt
โโโ graph_storage_500/
โโโ property_graph_store.json
โโโ index_store.json
โโโ image__vector_store.json
โโโ graph_store.json
โโโ docstore.json
โโโ default__vector_store.jsonCitations
- LlamaIndex
- PyTorch Geometric
- MedQA (Jin et al., 2020)
- Streamlit
