title: HealthExpert
emoji: π₯
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
HealthExpert π₯
AI-Powered Hybrid RAG Document Analysis System
Intelligent document ingestion, retrieval, and analysis using CrewAI agents with Vector & Graph databases
π Quick Start β’ π Documentation β’ ποΈ Architecture β’ π€ Contributing
π Overview
HealthExpert is an enterprise-grade AI document analysis platform combining:
- π€ CrewAI Multi-Agent System: Specialized agents for ingestion, verification, and analysis
- π Hybrid RAG Architecture: Vector DB (ChromaDB + BM25) + Graph DB (Kuzu) for comprehensive retrieval
- π Multi-Format Support: PDF, DOCX, XLSX, CSV, TXT, and Image files (OCR)
- β‘ Microservice Architecture: Dedicated LLM generation and embedding servers
- π Web UI: Real-time streaming responses with source citations
- π Production-Ready: Error handling, logging, async jobs, and Docker support
Key Features
| Feature | Description |
|---|---|
| Multi-Agent Processing | Ingestor, Comprehensive Reader, Gatekeeper, and Analyst agents |
| Advanced Retrieval | KV-cache optimization, vector + graph search fallbacks |
| Document Support | 7 file types with automatic format detection |
| Real-time Streaming | SSE-based streaming responses with source citations |
| Async Processing | Non-blocking document ingestion with job tracking |
| Admin Dashboard | Monitor system status, manage documents, view embeddings |
| Docker Ready | Complete docker-compose setup included |
ποΈ Architecture
System Design
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Flask Web UI (port 5050) β
β Document Ingestion β’ Query β’ Output Rendering β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β Flask REST API (app.py) β
β POST /api/ingest β POST /api/query β GET /api/status β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β CrewAI Agent Layer (agents/crew.py) β
β β’ Ingestor Agent β Document loading & chunking β
β β’ Comprehensive Agent β Full-document reasoning (KV cache)β
β β’ Gatekeeper Agent β Context verification β
β β’ Analyst Agent β Answer synthesis β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
β β β
ββββββΌβββββ βββββββββΌβββββ ββββββββββΌβββββββ
β Pipelineβ β LLM Srvr β β Embed Server β
β Data β β :8002 β β :8003 β
βProcessingβ βQwen2.5-1.5B-Instruct β β BAAI/bge-small-en-v1.5 β
ββββββ¬βββββ βββββββββββββ ββββββββββββββββ
β
βββ ChromaDB (Vector Store, embedded, BM25 hybrid search)
βββ Kuzu (Graph DB)
Data Flow: Ingestion Pipeline
User Upload
β
[Document Loader] β Extract text (PDF, DOCX, XLSX, CSV, TXT, OCR)
β
[Chunker] β Split into 512-token chunks (64 overlap)
β
[Embedder] β Generate dense/sparse embeddings (BAAI/bge-small-en-v1.5)
β
βββββββββββββββββββββββββββββββββββββββββββ
β [ChromaDB] Vector Store (embedded) β
β Stores: chunks + embeddings + metadata β
β Search: BM25 (Dense ANN + BM25 / RRF) β
βββββββββββββββββββββββββββββββββββββββββββ
β
[Entity Extraction] β LLM-powered entity detection
β
βββββββββββββββββββββββββββββββββββββββββββ
β [Kuzu] Graph DB β
β Stores: entities + relationships β
βββββββββββββββββββββββββββββββββββββββββββ
Data Flow: Query Pipeline
User Query
β
[Comprehensive Agent] β Full-document reasoning (KV cache)
β
[Context Verification] β Gatekeeper validates groundedness
β
[Answer Synthesis] β Analyst generates markdown response
β
[SSE Streaming] β Real-time chunks to UI
β
User sees answer with source citations
π Quick Start
Prerequisites
- Python 3.10+
- Docker & Docker Compose (optional)
- 8GB+ RAM recommended
- CUDA/ROCm support (optional, for GPU acceleration)
Installation
1. Clone Repository
git clone https://github.com/Sam-max1/healthexpert.git
cd healthexpert
2. Set Up Python Environment
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set HuggingFace token for private KB document syncing
export HF_PRIVATE_TOKEN=$(secret-tool lookup api huggingface)
3. Start Microservices
Terminal 1 - LLM Generation Server (port 8002):
python agents/gen_llm.py
# Expected output:
# * Running on http://127.0.0.1:8002
Terminal 2 - Embedding Server (port 8003):
python agents/embed_llm.py
# Expected output:
# * Running on http://127.0.0.1:8003
Terminal 3 - Main Flask App (port 5050):
python app.py
# Expected output:
# * Running on http://127.0.0.1:5050
4. Access Web UI
Open your browser: http://localhost:5050
Using Docker Compose
# Start all services
# Ensure HF_PRIVATE_TOKEN is set in your environment or .env file before running
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
CLI Usage
# Ingest a document
python healthexpert.py ingest path/to/document.pdf
# Query documents
python healthexpert.py query "What is the main topic?"
# List ingested documents
python healthexpert.py list
# Check system status
python healthexpert.py status
# Clear all documents
python healthexpert.py clear
π Documentation
Project Structure
healthexpert/
βββ app.py # Flask REST API
βββ config.py # Configuration (env-based)
βββ healthexpert.py # CLI interface
βββ requirements.txt # Python dependencies
βββ docker-compose.yml # Docker setup
β
βββ agents/ # CrewAI agents
β βββ crew.py # Crew orchestration
β βββ llm.py # LLM integration
β βββ tools.py # Agent tools
β βββ gen_llm.py # LLM generation server (port 8002)
β βββ embed_llm.py # Embedding server (port 8003)
β
βββ pipeline/ # Data processing
β βββ document_loader.py # Multi-format document loader
β βββ chunker.py # Text chunking (512 tokens)
β βββ embedder.py # Embedding HTTP client
β βββ vector_store.py # ChromaDB + BM25 hybrid search
β βββ graph_store.py # Kuzu integration
β
βββ templates/ # Web UI (HTML)
β βββ index.html # Main interface
β
βββ static/ # Frontend assets
β βββ app.js # WebSocket + SSE handling
β βββ style.css # UI styling
β
βββ data/ # Runtime data
βββ security.key # Fernet key (local-only)
βββ uploads/ # Uploaded documents
Environment Configuration
Create .env file to override defaults:
# LLM Generation Server (port 8002)
LLM_BASE_URL=http://127.0.0.1:8002
HF_PRIVATE_TOKEN=your_huggingface_token_here
LLM_MODEL_ID=Qwen/Qwen2.5-1.5B-Instruct
LLM_MAX_TOKENS=2048
LLM_TEMPERATURE=0.7
LLM_TOP_P=0.9
LLM_TIMEOUT=600
# Embedding Server (port 8003)
EMBED_BASE_URL=http://127.0.0.1:8003
EMBEDDING_MODEL=BAAI/bge-small-en-v1.5
EMBEDDING_BATCH_SIZE=12
EMBEDDING_TIMEOUT=120
# Vector Database (ChromaDB β embedded, no server required)
CHROMA_PERSIST_DIR=./data/chroma_db
CHROMA_COLLECTION=Document
ENCRYPTION_KEY_FILE=./data/security.key
# Kuzu
KUZU_URI=bolt://localhost:7687
KUZU_USER=kuzu
KUZU_PASSWORD=healthexpert
# Flask
UPLOAD_FOLDER=./uploads
SECRET_KEY=your-secret-key-here
CHUNK_SIZE=512
CHUNK_OVERLAP=64
API Endpoints
Ingestion
POST /api/ingest
curl -X POST -F "file=@document.pdf" http://localhost:5050/api/ingest
# Response:
# { "job_id": "abc-123", "status": "processing" }
Query
POST /api/query
curl -X POST -H "Content-Type: application/json" \
-d '{"query":"What is the main topic?"}' \
http://localhost:5050/api/query
# Returns: Server-Sent Events stream
Status
GET /api/ingest/status/
curl http://localhost:5050/api/ingest/status/abc-123
π§ Development
Running Tests
# Run integration tests
python -m pytest HEALTHEXPERT_UNIT_INTEGRATION_TEST.md -v
# Run specific agent test
python -m pytest agents/test_agents.py -v
Code Style
# Format code
black healthexpert/ agents/ pipeline/
# Lint
flake8 healthexpert/ agents/ pipeline/ --max-line-length=100
Debugging
Enable debug logging:
export LOG_LEVEL=DEBUG
python app.py
View logs:
tail -f logs/app.log
π€ Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
How to Contribute
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Setup
# Clone fork
git clone https://github.com/YOUR_USERNAME/healthexpert.git
# Create development environment
python -m venv venv_dev
source venv_dev/bin/activate
pip install -r requirements.txt
# Install dev tools
pip install pytest black flake8
# Run tests
pytest tests/
π Roadmap
- Multi-agent RAG pipeline
- Web UI with streaming responses
- Docker containerization
- Hybrid vector+graph retrieval
- Advanced metrics dashboard
- Multi-language support
- Fine-tuned domain models
- Enterprise auth (OAuth2, SAML)
- Prompt versioning
- Batch processing API
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π¨βπ» Author
Sam-max1
π Acknowledgments
- CrewAI - Multi-agent framework
- LangChain - LLM orchestration
- ChromaDB - Embedded vector database
- rank-bm25 - BM25 for BM25 hybrid search
- Kuzu - Graph database
- Qwen - LLM models
- BAAI BGE - Embedding models
π Support
- Issues: GitHub Issues
- LinkedIn DM: Sam-max1
- Documentation: See HEALTHEXPERT_ARCHITECTURE_DESIGN.md
Built with β€οΈ for AI-powered document analysis
