Retrieval-Augmented Generation service for the TFG educational chatbot. Provides document management, semantic search, and vector storage using Qdrant and Ollama embeddings.
Overview
graph LR
subgraph "RAG Service :8081"
API[FastAPI API]
FileLoader[File Loader]
DocProcessor[Document Processor]
EmbeddingService[Embedding Service]
VectorStore[Vector Store]
end
subgraph "External Services"
Ollama[Ollama :11434]
Qdrant[(Qdrant :6333)]
end
API --> FileLoader
FileLoader --> DocProcessor
DocProcessor --> EmbeddingService
EmbeddingService --> Ollama
EmbeddingService --> VectorStore
VectorStore --> Qdrant
Key Features
📄 Document Management: Upload, list, and organize documents by subject and type
🔍 Semantic Search: Find relevant content using natural language queries
🧩 Automatic Chunking: Split documents for optimal retrieval
🔢 Embedding Generation: Convert text to vectors via Ollama (nomic-embed-text)
🗃️ Vector Storage: Efficient similarity search with Qdrant
📊 Prometheus Metrics: Built-in monitoring and instrumentation
Quick Start
Local Development
# Install dependenciescd rag_service
pip install-e".[dev]"# Set environment variablesexport QDRANT_HOST=localhost
export OLLAMA_HOST=localhost
# Start the service
uvicorn rag_service.api:app --reload--port 8081
Docker
# Start with dependencies
docker compose up -d qdrant ollama rag_service
# Initialize embedding model
docker exec ollama ollama pull nomic-embed-text