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:ANTHROPIC_API_KEY=your_anthropic_api_key_here
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
This project uses Black for consistent Python code formatting with a line length of 88 characters.
Check formatting:
./format.sh checkApply formatting:
./format.sh formatShow formatting diff:
./format.sh diffPre-commit hooks are configured to automatically format code and run checks before each commit:
Install hooks (one-time setup):
uv run pre-commit installOnce installed, the hooks will automatically run on git commit and:
- Format Python code with Black
- Remove trailing whitespace
- Fix end-of-file newlines
- Validate YAML files
- Check for large files
- Detect merge conflicts
Run comprehensive quality checks (formatting + tests):
./quality-check.shThis script:
- Checks code formatting with Black
- Runs the full test suite with pytest
Use this before pushing code or in CI/CD pipelines.