How anilch963/research-intelligence-platform works
Research Intelligence is a document-grounded RAG platform: users submit a question, choose vector or hybrid retrieval, and receive an answer with inline citations and source snippets. Documents are loaded and chunked into a persistent Chroma collection; query handling checks index availability, retrieves context, and calls the chat model. The repository also includes a RAGAS evaluation workflow and draft-testset generation. The README documents these capabilities, but evaluation internals beyond the sampled runner and draft generator are not represented in detail.
Main entry points: retrievers.py Retriever Selection · rag.py RAG Answering · run_ragas.py RAGAS Runner · ingest.py Document Ingestion
Components 19
Question Interface
- Research UI
frontend/src/App.jsx - API Client
frontend/src/api.js
Query Answering
- FastAPI API
backend/app/main.py - RAG Answering
backend/app/rag.py - Retriever Selection
backend/app/retrievers.py - BM25 Search
backend/app/retrievers.py - Vector Search
backend/app/retrievers.py - OpenAI Chat Model
- Runtime Settings
backend/app/config.py
Document Indexing
- Chroma Chunk Store
backend/app/retrievers.py - OpenAI Embeddings
backend/app/retrievers.py - Document Ingestion
backend/app/ingest.py - Source Documents
backend/data/docs
RAG Evaluation
- RAGAS Runner
backend/eval/run_ragas.py - Testset Drafter
backend/eval/draft_testset.py - Evaluation Testset
backend/eval/testset.json - Evaluation Results
backend/eval/results - Results Comparison
backend/eval/compare.py
Other components
- Researcher
Connections 24
- Researcher → Research UI: asks questions
frontend/src/App.jsx - Research UI → API Client: calls
frontend/src/App.jsx - API Client → FastAPI API: sends query
README.md - FastAPI API → RAG Answering: answers with
backend/app/main.py - FastAPI API → Retriever Selection: checks chunks
backend/app/main.py - RAG Answering → Retriever Selection: retrieves context
backend/app/rag.py - Retriever Selection → BM25 Search: selects hybrid
backend/app/retrievers.py - Retriever Selection → Vector Search: selects mode
backend/app/retrievers.py - BM25 Search → Chroma Chunk Store: reads chunks
backend/app/retrievers.py - Vector Search → Chroma Chunk Store: searches vectors
README.md - Chroma Chunk Store → OpenAI Embeddings: embeds queries
backend/app/retrievers.py - RAG Answering → OpenAI Chat Model: generates answer
backend/app/rag.py - Document Ingestion → Source Documents: loads files
backend/app/ingest.py - Document Ingestion → Chroma Chunk Store: writes chunks
backend/app/ingest.py - Document Ingestion → Retriever Selection: resets caches
backend/app/ingest.py - Runtime Settings → Document Ingestion: configures
backend/app/ingest.py - Runtime Settings → Retriever Selection: configures
backend/app/retrievers.py - Runtime Settings → RAG Answering: configures
backend/app/rag.py - RAGAS Runner → Evaluation Testset: reads cases
- RAGAS Runner → RAG Answering: runs questions
backend/eval/run_ragas.py - RAGAS Runner → Retriever Selection: checks index
backend/eval/run_ragas.py - RAGAS Runner → Evaluation Results: writes report
backend/eval/run_ragas.py - Testset Drafter → Retriever Selection: loads chunks
backend/eval/draft_testset.py - Results Comparison → Evaluation Results: compares reports