Quick start¶
Get Eagle-RAG running locally in about three minutes. This guide is the shortest path from zero to a working stack; deeper theory lives in Architecture and the learning path.
Theory and foundations¶
What you are starting¶
Eagle-RAG is a multimodal RAG data layer — not a chat wrapper around a single LLM. It implements the retrieve-then-generate pattern from Lewis et al., 2020 with two vector indexes (text 1536-d, visual 2048-d) and dual ingest pipelines.
| Tier | Role | Technology |
|---|---|---|
| Client | QA, ingest, health UI | Next.js 16 + React 19 |
| API | REST, SSE, MCP | FastAPI on :8000 |
| Workers | Async ingest | Celery — 3 queues |
| Parsers | Document → chunks | Knowhere HTTP :5005 + PixelRAG library |
| Storage | Vectors + metadata + files | Milvus, PostgreSQL, MinIO, Redis |
A single Taskfile.yml orchestrates setup; docker-compose.yml bundles infrastructure when you prefer containers.
Eagle-RAG implementation¶
Bootstrap sequence¶
task setup performs:
- Copy
.env.example→.env(without overwriting existing) uv sync— Python dependencies frompyproject.tomlbun installinfrontend/
task up then:
knowhere:up— self-hosted Knowhere onknowhere-netdocker compose --profile dev up -d— infra + API + workers + frontend- Services wire via Compose DNS (
milvus,postgres,redis,minio,knowhere)
First-request path¶
sequenceDiagram
participant U as Browser :3000
participant API as FastAPI :8000
participant PG as PostgreSQL
participant M as Milvus
U->>API: GET /health
API->>PG: probe
API->>M: probe
API-->>U: 200 JSON
U->>API: POST /ingest (file)
API->>API: ingest.runner → Celery ingest_router
Note over API: Returns job_id immediately
Configuration singleton: get_settings() in eagle_rag/config.py — loaded once per process via @lru_cache. Default deploy profile is core (EAGLE_RAG_PROFILE=core or unset); domain plugins activate via profile overlays — see configuration.
Local development modes¶
| Mode | When to use | Practical note |
|---|---|---|
task up (Docker) |
First-time bring-up, demo, CI-like parity | Worker code changes need container restart unless bind-mounted |
task dev (host API + frontend) |
Fast API/--reload iteration |
You run Milvus, Postgres, Redis, MinIO, Knowhere yourself |
Idempotent task setup |
Fresh clone | Does not overwrite existing .env — merge new keys manually |
Auth is off by default — acceptable on localhost; enable auth.enabled before any non-trusted network exposure.
Prerequisites (one-liner)¶
If any command fails, install the missing tool:
- Python ≥ 3.12 +
uv— backend dependencies - Node.js + Bun — frontend
- Docker + Docker Compose — full-stack bring-up
See installation for the full matrix.
The 3-minute path¶
# 1. Bootstrap: copy .env, install dependencies
task setup
# 2. Edit .env — set API keys and database credentials
$EDITOR .env
# 3a. Full stack in Docker (recommended)
task up
task db:migrate # first run only
# 3b. OR hot-reload on host (you start infra yourself)
task dev
After task up, open:
| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| API | http://localhost:8000/health |
| API docs | http://localhost:8000/docs |
| MkDocs | http://localhost:8001 (task docs:serve) |
API keys required
Set at minimum LLM_API_KEY, VLM_API_KEY, and DASHSCOPE_API_KEY before querying. See installation — Model API keys.
Configuration (minimal)¶
| Variable | Purpose |
|---|---|
KB_NAME |
Default KB inside the bound domain (default) |
EAGLE_RAG_PROFILE |
Deploy domain overlay (core default) |
LLM_API_KEY |
DeepSeek routing + text |
VLM_API_KEY |
Qwen-VL generation |
DASHSCOPE_API_KEY |
Text embedding + rerank |
KNOWHERE_BASE_URL |
Parser service (http://localhost:5005 on host) |
Full layering: configuration.
Verify it works¶
task health # API /health JSON
task knowhere:health # Knowhere parser at :5005
task ps # docker compose ps — services healthy
Expected /health shape: per-dependency status (up / down / unknown). A single dependency reporting down degrades that feature rather than crashing the API — by design. See Reliability.
Smoke-test ingest + query¶
# Upload via API (replace with your file)
curl -F "file=@README.md" -F "kb_name=default" http://localhost:8000/ingest
# Poll task status, then query
curl -s http://localhost:8000/query -H 'Content-Type: application/json' \
-d '{"query":"What is Eagle-RAG?","kb_name":"default"}' | jq .answer
Failure modes and operations¶
| Symptom | Likely cause | Fix |
|---|---|---|
task up fails on Knowhere |
Missing docker/knowhere-self-hosted/.env |
Copy example env; set DS_KEY |
/health shows milvus down |
Milvus still starting (~60s) | Wait; task ps |
| Query returns API error | Missing LLM_API_KEY / VLM_API_KEY |
Edit .env; restart API |
Ingest task FAILED |
Knowhere unreachable | task knowhere:health |
| Frontend cannot reach API | Wrong NEXT_PUBLIC_API_BASE |
Set to http://localhost:8000 |
Dev workflow¶
flowchart TD
SETUP["task setup<br/>uv sync + bun install"] --> EDIT["edit .env<br/>API keys + DB creds"]
EDIT --> MIGRATE["task db:migrate"]
MIGRATE --> DECIDE{Infra in Docker?}
DECIDE -->|yes| UP["task up<br/>full compose stack"]
DECIDE -->|no| DEV["task dev<br/>be:api + fe:dev on host"]
UP --> HEALTH["task health"]
DEV --> HEALTH
HEALTH --> OPEN["localhost:3000<br/>API :8000"]
Infrastructure, API, workers, and frontend HMR run in Compose. Worker code reload requires container restart.
Uvicorn and Next.js hot-reload on the host. You must run Milvus, PostgreSQL, Redis, MinIO, and Knowhere separately and point .env at localhost.
Knowhere is external to the Python package
Knowhere (Ontos-AI/knowhere, HTTP :5005) is bundled in the Compose stack as a self-hosted service. For task dev, set KNOWHERE_BASE_URL to your running instance and probe with task knowhere:health.
Worker processes (host dev)¶
task be:worker QUEUES=router_queue CONCURRENCY=4
task be:worker QUEUES=knowhere_queue CONCURRENCY=8
task be:worker QUEUES=pixelrag_queue CONCURRENCY=1 # keep at 1
Where to go next¶
| Goal | Doc |
|---|---|
| Full install matrix | Installation |
| Settings deep dive | Configuration |
| Dev vs prod deploy | Deployment |
| System design | Architecture overview |
| RAG theory path | Learning path |
References¶
- Lewis et al., 2020 — RAG foundation
- Knowhere — parser service
- uv documentation
- Taskfile — project automation