# Project Configuration

## Project Overview
- Project name: RAGlens
- Goal: Implement different RAG techniques and evaluate results using curated evaluation datasets

## Project Structure
- Package manager: `uv`; add dependencies via `uv add` or `uv pip install`
- Codebase location: `src/` folder
- Unit tests location: `tests/` folder; execute with `pytest`
- Specifications and LLM indexes: `memory/` folder

## Code Style Rules
- Avoid code duplication; reuse existing functions/methods where possible
- Minimize wrappers for classes/methods; use them only when necessary; prefer library classes/methods
- Follow PEP 8 Python Style Guide
- Apply clean code principles; organize code in modules for separated functionality that can evolve
- Use descriptive variable names (e.g., `question` instead of `q`; `answers_count` instead of `cnt`)
- Never print keys or secrets (e.g., API keys, authorization secrets) to logs or console
- Configuration values as single source of truth; avoid function argument defaults for config values
- Create new classes/functions in matching modules; create new modules if none exist
- Always use `parse_model_id` from `src/raglens/utils.py` to split provider/model identifiers, as model names may contain '/' characters

## Project Specification
- Use `memory/` folder for implementation specs and LLM indexes as reference for tasks
- Update `memory/` after changes
- Maintain minimal architecture changes in `memory/` for LLM guidance; full documentation in `docs/`

### LLM Indexes
- Location: `memory/llms/` (mirrors `src/` structure)
- Scope: One `llms.txt` per folder
- Purpose: Lightweight index of modules/source files (not full documentation)
- Format per `llms.txt`:
  - First line: `# Location: <src path>`
  - Headers: `##` (e.g., `## Modules:`, `## Source files:`)
  - List modules only if folder contains modules/submodules
  - Bullet points: `*` for items
- Access: Open `memory/llms/<scope>/llms.txt` (e.g., `memory/llms/core/llms.txt` or `memory/llms/llms.txt` for repo-level)
