Files
lightrag/AGENTS.md

3.1 KiB

Repository Guidelines

LightRAG is an advanced Retrieval-Augmented Generation (RAG) framework designed to enhance information retrieval and generation through graph-based knowledge representation.

Project Structure & Module Organization

  • lightrag/: Core Python package with orchestrators (lightrag/lightrag.py), storage adapters in kg/, LLM bindings in llm/, and helpers such as operate.py and utils_*.py.
  • lightrag-api/: FastAPI service (lightrag_server.py) with routers under routers/ and Gunicorn launcher run_with_gunicorn.py.
  • lightrag_webui/: React 19 + TypeScript client driven by Bun + Vite; UI components live in src/.
  • Tests live in tests/ and root-level test_*.py. Working datasets stay in inputs/, rag_storage/, temp/; deployment collateral lives in docs/, k8s-deploy/, and docker-compose.yml.

Build, Test, and Development Commands

  • python -m venv .venv && source .venv/bin/activate: set up the Python runtime.
  • pip install -e . / pip install -e .[api]: install the package and API extras in editable mode.
  • lightrag-server or uvicorn lightrag.api.lightrag_server:app --reload: start the API locally; ensure .env is present.
  • python -m pytest tests or python test_graph_storage.py: run the full suite or a targeted script.
  • ruff check .: lint Python sources before committing.
  • bun install, bun run dev, bun run build, bun test: manage the web UI workflow (Bun is mandatory).

Coding Style & Naming Conventions

  • Backend code follow PEP 8 with four-space indentation, annotate functions, and reach for dataclasses when modelling state.
  • Use lightrag.utils.logger instead of print; respect logger configuration flags.
  • Extend storage or pipeline abstractions via lightrag.base and keep reusable helpers in the existing utils_*.py.
  • Python modules remain lowercase with underscores; React components use PascalCase.tsx and hooks-first patterns.
  • Front-end code should remain in TypeScript with two-space indentation, rely on functional React components with hooks, and follow Tailwind utility style.

Testing Guidelines

  • Add pytest cases beside the affected module or the relevant test_*.py; functions should start with test_.
  • Export required LIGHTRAG_* environment variables before running integration or storage tests.
  • For UI updates, pair code with Vitest specs and run bun test.

Commit & Pull Request Guidelines

  • Use concise, imperative commit subjects (e.g., Fix lock key normalization) and add body context only when necessary.
  • PRs should include a summary, operational impact, linked issues, and screenshots or API samples for user-facing work.
  • Verify ruff check ., python -m pytest, and affected Bun commands succeed before requesting review; note the runs in the PR text.

Security & Configuration Tips

  • Copy .env.example and config.ini.example; never commit secrets or real connection strings.
  • Configure storage backends through LIGHTRAG_* variables and validate them with docker-compose services when needed.
  • Treat lightrag.log* as local artefacts; purge sensitive information before sharing logs or outputs.