How rk0297/legal-chatbot works
Kanoon is an Indian-law RAG assistant. Citizens, advocates, and researchers submit questions through the web UI or API; the API delegates consultation to RAG, which reformulates queries, retrieves and reranks legal context, applies emergency and disclaimer guardrails, and generates a response through Groq. Separate routes support direct search, document lookup, uploads, and evaluation. The README documents further ingestion and retrieval capabilities; sampled excerpts do not expose every route’s wiring, so only supported relationships are drawn.
Main entry points: routes.py API routes · rag_service.py RAG orchestration · evaluator.py RAG evaluator · groq_service.py Inference client
Components 18
Client
- Web interface
server/static/index.html
API
- App runtime
server/main.py - API routes
server/api/routes.py - API schemas
server/api/schemas.py
Consultation
- RAG orchestration
server/services/rag_service.py - Query reformulation
server/services/self_query_service.py - Legal guardrails
server/services/guardrails.py - Inference client
server/services/groq_service.py
Legal Knowledge
- Hybrid retrieval
server/db/hybrid_search.py - Vector store
server/db/vector_store.py - Corpus loading
server/ingestion/dataset_loader.py - Document parsing
server/ingestion/document_parser.py - Legal chunking
server/ingestion/chunking.py
Evaluation
- RAG evaluator
server/evaluation/evaluator.py - IR metrics
server/evaluation/metrics.py - LLM judge
server/evaluation/llm_judge.py
Other components
- Legal user
- Groq Cloud
Connections 21
- Legal user → Web interface: asks question
- Web interface → API routes: sends requests
- App runtime → API routes: mounts API
- App runtime → Web interface: serves UI
- API routes → RAG orchestration: delegates chat
- RAG orchestration → Query reformulation: reformulates
- RAG orchestration → Hybrid retrieval: retrieves context
- RAG orchestration → Legal guardrails: checks distress
- RAG orchestration → Inference client: generates answer
- Query reformulation → Inference client: requests reformulation
- Inference client → Groq Cloud: calls inference
- Hybrid retrieval → Vector store: searches dense index
- Corpus loading → Vector store: loads corpus
- API routes → Document parsing: parses uploads
- Document parsing → Legal chunking: provides text
- API routes → Vector store: indexes uploads
- API routes → RAG evaluator: runs evaluation
- RAG evaluator → RAG orchestration: evaluates queries
- RAG evaluator → IR metrics: computes scores
- RAG evaluator → LLM judge: judges answers
- LLM judge → Inference client: requests assessment