How rameshucs06/subtitle_rag works
Bilingual Subtitle Search & Q&A is a Streamlit front end over a FastAPI service for English/Telugu subtitle search, cited answers, episode summaries, and monitoring. The main path is user → UI → API → retrieval and (for answers) RAG generation; Telugu questions are translated for English retrieval. Cleaning and chunking, evaluation, and monitoring are distinct supporting capabilities. The README documents the index and product capabilities; links not shown in the excerpts or source references are omitted rather than inferred.
Main entry points: main.py HTTP API · search.py Hybrid retriever · rag.py RAG workflow · llm.py Gemini wrapper
Components 24
User experience
- Ask UI
ui/app.py - Inspect page
ui/pages/1_Inspect.py - Summarize page
ui/pages/2_Summarize.py - Monitor page
ui/pages/3_Monitor.py - HTTP client
ui/api_client.py
API orchestration
- HTTP API
api/main.py - Configuration
src/subtitle_rag/config.py
Search and corpus
- Hybrid retriever
src/subtitle_rag/retrieval/search.py - BM25 index
src/subtitle_rag/indexing/bm25.py - Chroma index
artifacts - Subtitle chunks
data/processed - Subtitle cleaning
src/subtitle_rag/ingestion/cleaning.py - Chunk creation
src/subtitle_rag/ingestion/chunking.py
Answer generation
- RAG workflow
src/subtitle_rag/generation/rag.py - Prompt templates
src/subtitle_rag/generation/prompts.py - Episode summarizer
src/subtitle_rag/generation/summarizer.py - Gemini wrapper
src/subtitle_rag/generation/llm.py
Monitoring and evaluation
- Request monitoring
src/subtitle_rag/monitoring.py - Request log
logs - Retrieval metrics
src/subtitle_rag/evaluation/metrics.py - Answer evaluation
src/subtitle_rag/evaluation/answer_eval.py - Evaluation questions
data/eval/eval_questions.csv
Other components
- User
- Gemini service
Connections 26
- User → Ask UI: asks or browses
README.md - Ask UI → HTTP client: calls
ui/app.py - Inspect page → HTTP client: calls
ui/pages/1_Inspect.py - Summarize page → HTTP client: calls
ui/pages/2_Summarize.py - Monitor page → HTTP client: calls
ui/pages/3_Monitor.py - HTTP client → HTTP API: sends HTTP requests
ui/api_client.py - HTTP API → Hybrid retriever: searches
api/main.py - HTTP API → RAG workflow: asks
api/main.py - HTTP API → Episode summarizer: summarizes
api/main.py - HTTP API → Request monitoring: records and reads events
api/main.py - Hybrid retriever → BM25 index: scores keywords
src/subtitle_rag/retrieval/search.py - Hybrid retriever → Chroma index: queries and fetches
README.md - Hybrid retriever → Subtitle chunks: loads chunk data
README.md - RAG workflow → Hybrid retriever: retrieves passages
src/subtitle_rag/generation/rag.py - RAG workflow → Prompt templates: builds prompts
src/subtitle_rag/generation/rag.py - RAG workflow → Gemini wrapper: generates and translates
src/subtitle_rag/generation/rag.py - Episode summarizer → Prompt templates: builds summary prompts
src/subtitle_rag/generation/summarizer.py - Episode summarizer → Gemini wrapper: requests summaries
src/subtitle_rag/generation/summarizer.py - Gemini wrapper → Gemini service: calls
src/subtitle_rag/generation/llm.py - Gemini wrapper → Request monitoring: updates counters
src/subtitle_rag/generation/llm.py - Request monitoring → Request log: writes and reads
src/subtitle_rag/monitoring.py - Monitor page → HTTP API: requests metrics
README.md - Answer evaluation → Retrieval metrics: uses hit ranking
src/subtitle_rag/evaluation/answer_eval.py - Answer evaluation → RAG workflow: checks citations
src/subtitle_rag/evaluation/answer_eval.py - Answer evaluation → Gemini wrapper: judges answers
src/subtitle_rag/evaluation/answer_eval.py - Evaluation questions → Answer evaluation: evaluates against