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 automated code quality tools to maintain consistent code style and catch potential issues.
- Black: Code formatter for consistent Python code style
- isort: Import statement organizer
- ruff: Fast Python linter for catching errors and style issues
- pytest: Testing framework
Run all quality checks without modifying files:
./scripts/check-quality.shThis script checks:
- Code formatting with Black
- Import ordering with isort
- Linting with ruff
- Test suite with pytest
Automatically fix formatting and import issues:
./scripts/format.shThis script will:
- Format code with Black
- Organize imports with isort
- Fix auto-fixable ruff issues
You can also run individual tools:
# Check formatting
uv run black --check backend/*.py backend/tests/*.py main.py
# Format code
uv run black backend/*.py backend/tests/*.py main.py
# Check imports
uv run isort --check-only backend/*.py backend/tests/*.py main.py
# Fix imports
uv run isort backend/*.py backend/tests/*.py main.py
# Run linter
uv run ruff check backend/*.py backend/tests/*.py main.py
# Fix linter issues
uv run ruff check --fix backend/*.py backend/tests/*.py main.py
# Run tests
uv run pytest backend/tests/ -vCode quality tools are configured in pyproject.toml:
- Line length: 100 characters
- Python version: 3.13
- Black, isort, and ruff profiles are coordinated for consistency