A Retrieval-Augmented Generation (RAG) system designed to answer questions about course materials using semantic search and AI-powered responses.
This application is a full-stack web application that enables users to query course materials and receive intelligent, context-aware responses. It uses ChromaDB for vector storage, Anthropic's Claude for AI generation, and provides a web interface for interaction.
- Python 3.13 or higher
- uv (Python package manager)
- An Anthropic API key (for Claude AI)
- For Windows: Use Git Bash to run the application commands - Download Git for Windows
-
Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh -
Install Python dependencies
uv sync
-
Set up environment variables
Create a
.envfile in the root directory pointing at your OpenAI-compatible endpoint (e.g. a LiteLLM proxy):LLM_BASE_URL=http://localhost:4000 LLM_API_KEY=your_proxy_key_here LLM_MODEL=qwen-opencoder-128b
Use the provided shell script:
chmod +x run.sh
./run.shcd backend
uv run uvicorn app:app --reload --port 8000The application will be available at:
- Web Interface:
http://localhost:8000 - API Documentation:
http://localhost:8000/docs
Code quality tooling (black, isort, ruff) is installed with the dev dependency
group (uv sync pulls it in) and configured in pyproject.toml. Helper scripts:
./scripts/format.sh # isort + black, rewrites files in place
./scripts/lint.sh # ruff check + black --check + isort --check-only, no writes
./scripts/test.sh # pytest, excluding the network-dependent integration tests
./scripts/check.sh # lint + test in one go, stops at the first failureRun ./scripts/check.sh before committing. test.sh and check.sh forward extra
arguments to pytest, e.g. ./scripts/test.sh -k search -vv.