How puj-nlp/cev-rag works
This repository implements a cultural-context-aware RAG system for asking questions over the Colombian Truth Commission archive. A user asks through the web chat; the frontend calls backend routes, where question answering retrieves documents, builds context, and generates an answer with references. Separate chat-session operations persist conversation history, and admin routes provide storage statistics, search, and data import/export. The graph reflects shown calls and wiring; unsampled capabilities are represented only where documented, without inferred internal links.
Main entry points: use_cases.py Question answering · dependencies.py Dependency wiring · frontend_controller.py Frontend routes · main.py FastAPI setup
Components 26
Web interface
- Web app routes
rag-ui/src/App.js - Chat interface
rag-ui/src/pages/UnifiedChatInterface.js - API client
rag-ui/src/services/api.js
API and application
- FastAPI setup
rag-api/src/main.py - Frontend routes
rag-api/src/adapters/controllers/frontend_controller.py - Chat and question routes
rag-api/src/adapters/controllers/controllers.py - Chat sessions
rag-api/src/application/use_cases.py - RAG domain
rag-api/src/domain/entities.py - Service contracts
rag-api/src/domain/ports.py - Dependency wiring
rag-api/src/infrastructure/dependencies.py - API authentication
rag-api/src/infrastructure/auth.py - Runtime configuration
rag-api/src/infrastructure/config.py
Retrieval and generation
- Question answering
rag-api/src/application/use_cases.py - Context builder
rag-api/src/infrastructure/services.py - Document retrieval
rag-api/src/adapters/repositories/milvus_vector_db.py - Embedding service
rag-api/src/adapters/external/openai_services.py - Answer generation
rag-api/src/adapters/external/openai_services.py - LLM tools
rag-api/src/adapters/external/openai_tools.py
Chat and archive storage
- SQLite chat store
rag-api/src/adapters/repositories/sqlite_chat_repository.py - Memory chat store
rag-api/src/adapters/repositories/memory_chat_repository.py - Chat data migration
rag-api/src/adapters/repositories/migration.py - Database initialization
rag-api/src/infrastructure/database_setup.py
Administration
- Admin routes
rag-api/src/adapters/controllers/admin_controller.py
Other components
- Researcher
- OpenAI service
- Milvus vector store
Connections 38
- Researcher → Web app routes: uses
- Web app routes → Chat interface: routes to
rag-ui/src/App.js - Chat interface → API client: calls
rag-ui/src/pages/UnifiedChatInterface.js - API client → Frontend routes: requests
rag-ui/src/services/api.js - FastAPI setup → Frontend routes: registers
rag-api/src/main.py - FastAPI setup → Chat and question routes: registers
rag-api/src/main.py - FastAPI setup → Admin routes: registers
rag-api/src/main.py - Frontend routes → Chat sessions: invokes
rag-api/src/adapters/controllers/frontend_controller.py - Frontend routes → Question answering: invokes
rag-api/src/adapters/controllers/frontend_controller.py - Chat and question routes → Chat sessions: invokes
rag-api/src/adapters/controllers/controllers.py - Chat and question routes → Question answering: invokes
rag-api/src/adapters/controllers/controllers.py - Question answering → RAG domain: uses
rag-api/src/application/use_cases.py - Chat sessions → RAG domain: uses
rag-api/src/application/use_cases.py - Question answering → Dependency wiring: services wired by
rag-api/src/infrastructure/dependencies.py - Dependency wiring → Document retrieval: constructs
rag-api/src/infrastructure/dependencies.py - Dependency wiring → Embedding service: constructs
rag-api/src/infrastructure/dependencies.py - Dependency wiring → Answer generation: constructs
rag-api/src/infrastructure/dependencies.py - Dependency wiring → Context builder: constructs
rag-api/src/infrastructure/dependencies.py - Dependency wiring → SQLite chat store: constructs
rag-api/src/infrastructure/dependencies.py - Dependency wiring → Memory chat store: constructs
rag-api/src/infrastructure/dependencies.py - Question answering → Document retrieval: searches documents
rag-api/src/infrastructure/dependencies.py - Question answering → Embedding service: embeds questions
rag-api/src/infrastructure/dependencies.py - Question answering → Context builder: builds context
rag-api/src/infrastructure/dependencies.py - Question answering → Answer generation: generates answers
rag-api/src/infrastructure/dependencies.py - Embedding service → OpenAI service: calls
- Answer generation → OpenAI service: calls
- Chat sessions → SQLite chat store: persists chats
- Chat sessions → Memory chat store: stores chats
- Admin routes → SQLite chat store: queries and exports
rag-api/src/adapters/controllers/admin_controller.py - Admin routes → Chat data migration: imports data
rag-api/src/adapters/controllers/admin_controller.py - FastAPI setup → Database initialization: initializes
rag-api/src/main.py - Database initialization → Chat data migration: imports legacy data
rag-api/src/infrastructure/database_setup.py - Database initialization → SQLite chat store: checks storage
rag-api/src/infrastructure/database_setup.py - Runtime configuration → Milvus vector store: configures
- Answer generation → LLM tools: tool support
rag-api/src/adapters/external/openai_services.py - Frontend routes → API authentication: validates requests
rag-api/src/adapters/controllers/frontend_controller.py - Chat and question routes → API authentication: requires key
rag-api/src/adapters/controllers/controllers.py - RAG domain → Service contracts: defines contracts
rag-api/src/domain/ports.py