# RAGS Private learning tool. Ingest study materials → knowledge graph → query → export Anki flashcards. Two systems: - **LightRAG** (`lightrag/`) — graph-based RAG server (primary interface) - **Graphiti** (`graphiti/`) — temporal knowledge graph library (Python library only, needs Neo4j) ## Quick Start ```sh # Ollama must be running first on :11434 with: # qwen3:0.6b (LLM) # qwen3-embedding:0.6b (embeddings) # Start LightRAG only (LLM + embeddings handled externally by Ollama) nix run .#start # → http://localhost:9621/webui (React frontend) # → http://localhost:9621/docs (Swagger API) # Graphiti needs Neo4j running first nix run .#neo4j-start # separate terminal nix develop .#graphiti ``` **Always enter via `nix develop` from repo root** — never activate venvs directly. The shellHook sources `.env.lightrag` and sets `LD_LIBRARY_PATH`. ## Configuration ### `.env.lightrag` **Restart LightRAG after changes.** | Var | Value | |-----|-------| | `LLM_BINDING` | `ollama` | | `LLM_MODEL` | `qwen3:0.6b` | | `LLM_BINDING_HOST` | `http://localhost:11434` | | `EMBEDDING_BINDING` | `ollama` | | `EMBEDDING_MODEL` | `qwen3-embedding:0.6b` | | `EMBEDDING_DIM` | `1024` | Verify embedding works: ```sh curl -s http://localhost:11434/api/embed \ -H "Content-Type: application/json" \ -d '{"model":"qwen3-embedding:0.6b","input":"test"}' ``` **Critical:** If `EMBEDDING_DIM` changes, delete `rag_storage/` before restarting — old vectors are incompatible. ## LightRAG Storage File-based by default (`JsonKVStorage`, `NanoVectorDBStorage`, `NetworkXStorage`). All data in `rag_storage/` (gitignored). Safe to delete to reset. ## Nix / NixOS Notes - `UV_PYTHON` pinned to nix-provided Python 3.12 (system has 3.14) - `LD_LIBRARY_PATH` set in shellHook for native wheels - LightRAG installs with `--extra api --extra offline-llm` - WebUI (React/Bun) built on first shell entry if `lightrag/lightrag/api/webui/` missing ## Known Issue: Pipeline Stuck After config changes, pipeline may show `busy: true` with pending async locks. Symptoms: - `GET /documents/pipeline_status` returns `busy: true`, `request_pending: true` - New inserts stay at `status: pending` Fix: delete `rag_storage/`, restart. Or `POST /documents/cancel_pipeline`.