How rimil11/legal-rag works
Legal RAG AI Assistant lets users ask natural-language questions about Indian legal documents and returns streamed, document-grounded answers with source/page references and PDF links. The documented flow covers loading PDF/TXT files, chunking, embedding and indexing, then query retrieval, reranking, context construction, and LLM generation. The graph uses the README for the documented pipeline and capabilities; omitted source excerpts limit certainty about some internal wiring.
Main entry points: retrieval_pipeline.py Question orchestration · app.py Streamlit chat · ingestion_pipeline.py Passage embedding · chroma_db Chroma vector store
Components 19
User interface
- Streamlit chat
app.py
Document ingestion
- Legal PDF/TXT
docs - Document loading
ingestion_pipeline.py - Text chunking
ingestion_pipeline.py - Passage embedding
ingestion_pipeline.py - Vector indexing
ingestion_pipeline.py
RAG retrieval
- Chroma vector store
db/chroma_db - Question orchestration
retrieval_pipeline.py - Query embedding
retrieval_pipeline.py - Similarity search
retrieval_pipeline.py - Result reranking
retrieval_pipeline.py - Context and citations
retrieval_pipeline.py - Answer generation
retrieval_pipeline.py
External services
- Jina embeddings
- Jina reranker
- Groq LLM
- PDF.js viewer
- GitHub raw PDFs
Other components
- Legal questioner
Connections 20
- Legal questioner → Streamlit chat: asks question
- Streamlit chat → Question orchestration: calls
- Legal PDF/TXT → Document loading: loads files
- Document loading → Text chunking: returns documents
- Text chunking → Passage embedding: embeds chunks
- Passage embedding → Jina embeddings: requests embeddings
- Passage embedding → Vector indexing: returns vectors
- Vector indexing → Chroma vector store: writes vectors
- Question orchestration → Query embedding: embeds query
- Query embedding → Jina embeddings: requests embedding
- Question orchestration → Similarity search: searches store
- Similarity search → Chroma vector store: reads top 20
- Question orchestration → Result reranking: reranks results
- Result reranking → Jina reranker: requests ranking
- Question orchestration → Context and citations: builds context
- Question orchestration → Answer generation: generates answer
- Answer generation → Groq LLM: streams completion
- Question orchestration → Streamlit chat: returns stream and sources
- Streamlit chat → PDF.js viewer: opens source page
- PDF.js viewer → GitHub raw PDFs: loads PDF