Medical knowledge graph and RAG system for processing pharmaceutical instructions and medical documents.
2025_graph_rag/
├── app/ # Main application package
│ ├── clients/ # Client management
│ │ ├── http_client.py # HTTP client configuration
│ │ └── llm_client.py # LLM client management
│ ├── config.py # Application configuration
│ ├── dependencies.py # Shared dependencies
│ ├── models/ # Data models
│ │ └── prompts.py # LLM prompt templates
│ ├── services/ # Business logic services
│ │ ├── document_service.py # Document processing
│ │ ├── entity_service.py # Entity extraction
│ │ ├── qa_service.py # Q&A functionality
│ │ └── relation_service.py # Relation extraction
│ ├── ui/ # User interface
│ │ └── gradio_app.py # Gradio web interface
│ └── utils/ # Utility functions
│ └── text_utils.py # Text processing utilities
├── qdrant_manager.py # Qdrant vector database manager
├── graph_builder.py # Graph visualization builder
├── main.py # Application entry point
├── docker-compose.yml # Docker services configuration
├── Dockerfile # Application Docker image
└── pyproject.toml # Project dependencies
docker compose up -dLinux/Mac:
wget -qO- https://astral.sh/uv/install.sh | shWindows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"More info: https://docs.astral.sh/uv/getting-started/installation/#standalone-installer
uv syncCreate a .env file in the project root:
OPENAI_API_KEY=your_openai_api_key_here
# Optional: Proxy configuration
# PROXY_URL=http://your-proxy:port
# Optional: Qdrant configuration
# QDRANT_URL=http://localhost:6333
# Optional: Processing configuration
# CHUNK_SIZE=800
# CHUNK_OVERLAP=150
# MAX_WORKERS=4python3 main.pyThe Gradio interface will be available at http://localhost:7860
To run the entire stack with Docker:
docker compose up -dThis will start:
- Qdrant vector database (ports 6333, 6334)
- Gradio application (port 7860)
- Document Processing: Upload and process PDF and Markdown medical documents
- Entity Extraction: Automatically extract medical entities (diseases, drugs, symptoms, etc.)
- Relation Extraction: Identify relationships between medical entities
- Vector Search: Semantic search using Qdrant vector database
- Knowledge Graph: Interactive visualization of extracted entities and relations
- Q&A System: Answer questions based on processed documents
- Session Management: Organize documents into isolated sessions