Spaces:
Sleeping
Sleeping
File size: 6,452 Bytes
9844436 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# Legal RAG Analysis API
## Overview
This is a FastAPI-based legal case analysis system that combines multiple AI technologies to provide comprehensive legal verdict predictions. The system uses a Retrieval-Augmented Generation (RAG) approach with LegalBERT for initial predictions and Gemini AI for final evaluation and explanation.
## User Preferences
Preferred communication style: Simple, everyday language.
Coding style: camelCase for function names, clear variable names, efficiency over boilerplate, no comments unless asked.
Prefers to add model files and dependencies later after basic structure is ready.
## System Architecture
The application follows a microservices-inspired architecture with clear separation of concerns:
### Backend Framework
- **FastAPI** - Chosen for its high performance, automatic API documentation, and excellent type hinting support
- **Python 3.x** - Primary language for ML/AI integration and legal domain processing
- **Uvicorn** - ASGI server for production-ready deployment
### AI/ML Pipeline Architecture
The system implements a three-stage analysis pipeline:
1. **Initial Prediction** - LegalBERT model for binary classification (guilty/not guilty)
2. **Knowledge Retrieval** - RAG system using FAISS for retrieving relevant legal documents
3. **Final Evaluation** - Gemini AI for contextual analysis and explanation generation
## Key Components
### 1. LegalBERT Service (`app/services/legal_bert.py`)
- **Purpose**: Provides initial verdict predictions using a fine-tuned BERT model for legal texts
- **Technology**: Transformers library with PyTorch backend
- **Input**: Raw case text
- **Output**: Binary verdict (guilty/not guilty) with confidence scores
### 2. RAG Service (`app/services/rag_service.py`)
- **Purpose**: Retrieves relevant legal documents to support case analysis
- **Technology**:
- FAISS for vector similarity search
- Sentence-BERT (BGE-Large) for text embeddings
- Multiple legal document indexes (Constitution, IPC, case law, statutes)
- **Features**: Parallel index querying, chunk deduplication, relevance filtering
### 3. Gemini Service (`app/services/gemini_service.py`)
- **Purpose**: Generates search queries and provides final legal analysis
- **Technology**: Google Gemini AI API
- **Functions**:
- Query generation from case facts
- Final verdict evaluation with legal reasoning
- Explanation generation in natural language
### 4. API Layer (`app/api/routes.py`)
- **Endpoints**:
- `POST /api/v1/analyze-case` - Main analysis endpoint
- `GET /api/v1/health` - Service health monitoring
- **Features**: Error handling, logging, service orchestration
## Data Flow
1. **Request Processing**: Case text received via POST request
2. **Initial Analysis**: LegalBERT processes text and returns preliminary verdict
3. **Query Generation**: Gemini generates optimized search query from case facts
4. **Knowledge Retrieval**: RAG system searches multiple legal document indexes
5. **Final Evaluation**: Gemini analyzes initial verdict against retrieved legal context
6. **Response Assembly**: Combined results with explanations returned to client
## External Dependencies
### AI/ML Models
- **LegalBERT Model**: Custom fine-tuned model for legal verdict prediction
- **Sentence Transformer**: BAAI/bge-large-en-v1.5 for text embeddings
- **Gemini AI**: Google's generative AI for natural language processing
### Vector Databases
- **FAISS Indexes**: Multiple pre-built indexes for different legal document types:
- Constitution documents
- Indian Penal Code (IPC)
- Case law precedents
- Statutes and regulations
- Q&A legal content
### Python Libraries
- FastAPI, Uvicorn (web framework)
- Transformers, PyTorch (ML models)
- Sentence-Transformers (embeddings)
- FAISS (vector search)
- Google GenAI (external API)
## Deployment Strategy
### Development Setup
- Local development with hot reload enabled
- Model files and indexes loaded from configurable paths
- Environment-based configuration management
### Configuration Management
- Centralized settings in `app/core/config.py`
- Environment variable support for sensitive data (API keys)
- Flexible path configuration for model and index files
### Health Monitoring
- Service-level health checks for all components
- Graceful degradation when external services are unavailable
- Comprehensive logging for debugging and monitoring
### CORS Configuration
- Permissive CORS setup for development
- Can be restricted for production deployment
## Current Development Status (January 2025)
### β
Completed
- FastAPI backend structure with proper routing and middleware
- Placeholder implementations for all services (LegalBERT, RAG, Gemini)
- Full Gemini AI integration for query generation and case evaluation
- Health monitoring endpoints for all components
- CORS configuration for frontend integration
- API documentation with comprehensive endpoints
- Camel case naming conventions as per user preference
### π Ready for Model Integration
- LegalBERT service structure ready for torch/transformers integration
- RAG service prepared for FAISS indexes and sentence-transformers
- Configuration paths set for model files and indexes
- Graceful degradation when model files are missing
### π Directory Structure for Model Files
- `./models/legalbert_model/` - LegalBERT model files (to be added)
- `./faiss_indexes/` - FAISS vector indexes and chunks (to be added)
### π API Endpoints Working
- `POST /api/v1/analyze-case` - Full case analysis with Gemini evaluation
- `GET /api/v1/health` - Service health monitoring
- `GET /api/v1/models/status` - Model loading status
- `GET /` - Basic API info
## Next Steps for Full Functionality
1. Add LegalBERT model files to `./models/legalbert_model/`
2. Install ML dependencies: `torch`, `transformers`, `sentence-transformers`, `faiss-cpu`
3. Add FAISS indexes and chunk files to `./faiss_indexes/`
4. All placeholder implementations will automatically switch to real ML models
## Notes
- The system gracefully handles missing model files during development
- All services include health check mechanisms for monitoring
- The RAG system supports parallel querying of multiple legal document indexes
- Query generation is optimized for Indian criminal law terminology
- The architecture supports easy addition of new legal document indexes
- API follows camelCase conventions and clean code principles as requested |