Everything you need to run your first RAG parameter sweep experiment.
Shortest path: QUICKSTART.md — install and first sweep. This guide adds step-by-step detail.
Documentation map: docs/README.md
| Requirement | Version | Notes |
|---|---|---|
| Python | 3.12+ | Install via python.org or pyenv install 3.12.2 |
| Node.js | 22+ | Install via nodejs.org or nvm install 22 |
| MongoDB Atlas | Free tier (M0) | Required — see Cloud Account Setup |
| Voyage AI | Optional | Only for Voyage models — see Cloud Account Setup |
| Docker Desktop + HF_TOKEN | Optional | Self-hosted SIE only — remote gateway needs no Docker; see SIE Provider Setup |
New to Atlas or Voyage? Start with Cloud Account Setup — account creation, connection string, search indexes, API key, and Tier 1 billing (~15 min).
Using SIE (open-source BGE-M3 embeddings)? See SIE Provider Setup — set SIE_ENABLED=true (on/off), then SIE_ENDPOINT (+ SIE_API_KEY if needed) for a remote gateway, or optional local Docker.
git clone https://github.com/neomatrix369/rag-params-finder.git
cd rag-params-finder
# Python environment
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -e .
# Frontend
cd frontend && npm install && cd ..cp .env.example .envEdit .env — minimum for sweeps:
# Required (both sweeps)
MONGODB_URI=mongodb+srv://<user>:<pass>@<cluster>.mongodb.net/rag_params_finder?retryWrites=true&w=majority
# Required for Voyage sweep only — see cloud-setup.md checklist
VOYAGE_API_KEY=vo-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Uncomment Tier 1 limits in .env.example (comment out free-tier defaults first)
VOYAGE_RPM_LIMIT=2000
VOYAGE_TPM_LIMIT=16000000
SERVER_URL=http://localhost:8001Full variable reference: Troubleshooting → Environment Variables. Optional Atlas Admin API keys enable cluster tier + storage quota in the dashboard — see .env.example.
Both example configs use dense + sparse + hybrid — create vector_index_384 (local) or vector_index_1024 (Voyage or SIE) and text_search_index on the chunks collection.
M0 free tier: do this manually in Atlas UI before running a sweep — see Cloud Account Setup → step 6. M0 allows 3 search indexes cluster-wide; unknown indexes from other projects consume quota.
M10+ paid tier: server creates indexes on startup — check uvicorn logs.
Verify and fix quota issues (any tier):
rag-params-finder indexes list # known vs unknown; count vs M0 limit
rag-params-finder indexes reset # drop unknown indexes + ensure required
rag-params-finder indexes reset --all # drop all chunks indexes + recreateThe server preflights search indexes when you submit a sweep: it derives required index names from your YAML (embedding dimensions + sparse/hybrid retrieval), checks cluster capacity, and rejects the experiment with HTTP 422 if indexes are missing or quota is exhausted — before any embedding work starts.
Place source documents in input_data/ (gitignored):
mkdir -p input_data/pdfs
cp /path/to/my-document.pdf input_data/pdfs/Supported formats: .pdf, .txt, .md, .csv
Reference files or directories in your config YAML:
data_paths:
- ./input_data/pdfs/my-document.pdf # individual file
- ./input_data/papers/ # directory — scanned recursively# Terminal 1: FastAPI server
uvicorn server.main:app --reload --port 8001
# Terminal 2: React dashboard (optional)
cd frontend && npm run devRequires Docker Desktop and uv pip install -e . on the host for the CLI.
./start-services.sh- Server:
http://localhost:8001(OpenAPI docs at/docs) - Dashboard:
http://localhost:5374 - Dev hot reload:
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
See Troubleshooting → Docker if startup fails.
Complete the checklist for your sweep path in Cloud Account Setup → Before you run a sweep first.
# Local sweep — checklist items 1–5 (no Voyage)
rag-params-finder run --config configs/example-mongodb-local.yaml
# Voyage sweep — checklist items 1–9
rag-params-finder run --config configs/example-mongodb-voyage.yaml
# SIE sweep — SIE_ENABLED=true + SIE_ENDPOINT (+ SIE_API_KEY if remote); see sie-setup.md
rag-params-finder run --config configs/example-mongodb-sie.yaml
# Submit and detach (check dashboard for status instead)
rag-params-finder run --config configs/example-mongodb-local.yaml --detachThe CLI will:
- Submit the config to the server (experiment name gets a timestamp suffix automatically)
- Display the experiment ID and generated run IDs
- Poll run progress live unless
--detachis used
Open http://localhost:5374 to watch live progress and explore results.
Long sweeps: pause and resume without losing completed runs:
rag-params-finder pause <experiment-id> # stop after current phase
rag-params-finder resume <experiment-id> # continue remaining combosOr use the Pause / Resume buttons on the experiment detail screen in the dashboard.
When using provider: local, sentence-transformers downloads models from HuggingFace on first use (~23 MB each). To avoid startup delay on your first run:
python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')"
python -c "from sentence_transformers import CrossEncoder; CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')"Models are cached in ~/.cache/huggingface/hub/ after the first download.
- Cloud Account Setup — Atlas account, Voyage billing, search indexes
- SIE Provider Setup — remote gateway (preferred) or optional self-hosted Docker
- Configuration reference — all YAML fields, sweep expansion, queries format
- CLI reference — all commands and flags
- Dashboard guide — reading the experiments list, detail screen, and search explorer
- Troubleshooting — common errors and fixes