# LightRAG Multi-Tenant Docker - Quick Start Guide ## 🚀 Get Started in 2 Minutes ### Step 1: Start Services ```bash cd /Users/raphaelmansuy/Github/03-working/LightRAG/starter docker compose -f docker-compose.yml -p lightrag-multitenant up -d ``` ### Step 2: Wait for Services to Be Ready ```bash # Check status (all should show "healthy" or "Up") docker compose -f docker-compose.yml -p lightrag-multitenant ps # Or wait a few seconds and visit: # Web UI: http://localhost:3001 # API Docs: http://localhost:8000/docs ``` ### Step 3: Stop Services ```bash docker compose -f docker-compose.yml -p lightrag-multitenant down ``` ## 📋 Service Endpoints | Service | URL | Purpose | |---------|-----|---------| | Web UI | http://localhost:3001 | User interface | | API Docs | http://localhost:8000/docs | Interactive API documentation | | API Redoc | http://localhost:8000/redoc | Alternative API docs | | PostgreSQL | internal-only (container network) | Database (not exposed to host by default) | | Redis | localhost:6379 | Cache (internal use) | ## 🔐 Demo database credentials (local/dev only) Use these defaults for local development or demos. Change `POSTGRES_PASSWORD` in `starter/.env` before running any shared/production systems. ```text User: lightrag Password: lightrag_secure_password Database: lightrag_multitenant Host: postgres (inside Docker) Port: 5432 (internal-only; not forwarded to localhost by default) ``` ## 📊 Database Tables The following tables are automatically created: - `lightrag_doc_full` - Full documents - `lightrag_doc_chunks` - Document chunks - `lightrag_vdb_chunks` - Vector embeddings for chunks - `lightrag_vdb_entity` - Entity embeddings - `lightrag_vdb_relation` - Relationship embeddings - `lightrag_llm_cache` - LLM response cache - `lightrag_doc_status` - Document processing status - `lightrag_full_entities` - Complete entity records - `lightrag_full_relations` - Complete relationship records ## 🛠️ Useful Commands ### View Logs ```bash # All services docker compose -f docker-compose.yml -p lightrag-multitenant logs -f # Specific service docker compose -f docker-compose.yml -p lightrag-multitenant logs -f lightrag-api docker compose -f docker-compose.yml -p lightrag-multitenant logs -f lightrag-postgres docker compose -f docker-compose.yml -p lightrag-multitenant logs -f lightrag-redis ``` ### Database Operations ```bash # Connect to PostgreSQL docker compose -f docker-compose.yml -p lightrag-multitenant exec -T postgres \ psql -U lightrag -d lightrag_multitenant # List all databases docker compose -f docker-compose.yml -p lightrag-multitenant exec -T postgres \ psql -U lightrag -l # Check extensions docker compose -f docker-compose.yml -p lightrag-multitenant exec -T postgres \ psql -U lightrag -d lightrag_multitenant -c "\dx" # Test vector operations docker compose -f docker-compose.yml -p lightrag-multitenant exec -T postgres \ psql -U lightrag -d lightrag_multitenant -c \ "SELECT '(1,2,3)'::vector <=> '(2,3,4)'::vector as cosine_distance;" ``` ### Redis Operations ```bash # Connect to Redis docker compose -f docker-compose.yml -p lightrag-multitenant exec redis redis-cli # Check Redis info docker compose -f docker-compose.yml -p lightrag-multitenant exec -T redis redis-cli info ``` ### Container Management ```bash # Restart a service docker compose -f docker-compose.yml -p lightrag-multitenant restart lightrag-api # View service status docker compose -f docker-compose.yml -p lightrag-multitenant ps # Clean up everything (WARNING: deletes data!) docker compose -f docker-compose.yml -p lightrag-multitenant down -v ``` ## 📈 Extensions Installed ### pgvector (v0.8.1) - **Purpose**: Vector embeddings and similarity search - **Use Case**: Store and search document embeddings - **Index Type**: HNSW (Hierarchical Navigable Small World) - **Dimensions**: Supports up to 2000 dimensions ### Apache AGE (v1.5.0) - **Purpose**: Graph database capabilities - **Use Case**: Store and query entity relationships - **Features**: Cypher query support - **Status**: Ready for use (optional) ## 🔍 Troubleshooting ### Services Won't Start ```bash # If you previously published ports to the host, check if they're in use. For the default # compose setup PostgreSQL is internal-only and not bound to host interfaces. lsof -i :6379 # Redis (if published) lsof -i :9621 # API (if published) # Kill processes if needed kill -9 # Then try starting again docker compose up -d ``` ### Database Connection Issues ```bash # Check PostgreSQL is running docker compose ps | grep postgres # Check logs docker compose logs lightrag-postgres # Verify network connectivity docker network inspect lightrag-multitenant_lightrag-network ``` ### API Not Responding ```bash # Check API logs docker compose logs lightrag-api # Verify API is listening curl http://localhost:9621/docs # Check database connection in logs docker compose logs lightrag-api | grep "Connected" ``` ### Reset Everything ```bash # Stop all services docker compose down # Remove volumes (WARNING: deletes all data) docker volume rm lightrag-multitenant_postgres_data lightrag-multitenant_redis_data # Restart docker compose up -d ``` ## 📚 Documentation Files 1. **IMPLEMENTATION_SUMMARY.md** - Complete technical overview 2. **DOCKER_BUILD_COMPLETION_REPORT.md** - Detailed build report 3. **QUICK_REFERENCE.md** - Command reference 4. **README.md** - Original project README ## 🎯 Multi-Tenant Features The system supports multiple independent tenants with: - **Workspace Isolation**: Each workspace is completely isolated - **Composite Keys**: (workspace_id, id) for all records - **Cross-Tenant Prevention**: Database constraints prevent data leakage - **Tenant-Aware Queries**: API automatically filters by workspace ### Create Multiple Workspaces Each workspace has its own: - Documents and chunks - Vector embeddings - Entity graph - Cache entries - Processing status tracking ## ⚙️ Configuration ### Environment Variables (in docker-compose.yml) ```yaml POSTGRES_USER: lightrag POSTGRES_PASSWORD: lightrag_secure_password POSTGRES_DB: lightrag_multitenant PGTZ: UTC ``` ### PostgreSQL Performance Tuning Current settings: - `max_connections: 100` - `shared_buffers: 256MB` - `effective_cache_size: 1GB` - `work_mem: 16MB` Adjust in `docker-compose.yml` if needed for your workload. ## 🔗 API Integration Example ```bash # Get API documentation curl http://localhost:9621/docs # Example API endpoint (check swagger for actual endpoints) curl -X GET http://localhost:9621/api/endpoints ``` ## 📱 Web UI Access 1. Open browser: http://localhost:9621 2. Configure your LLM provider (OpenAI, Azure, etc.) 3. Upload documents 4. Create knowledge base 5. Query the system ## 🔑 Key Points ✅ **Production Ready**: Fully tested and verified ✅ **Multi-Tenant**: Complete workspace isolation ✅ **Fast Search**: Vector and full-text search capability ✅ **Graph Support**: Entity relationship management ✅ **Persistent**: All data saved across restarts ✅ **Monitored**: Health checks on all services ## 🆘 Need Help? 1. Check the troubleshooting section above 2. Review logs: `docker compose logs lightrag-api` 3. Consult `DOCKER_BUILD_COMPLETION_REPORT.md` for detailed info 4. Check service status: `docker compose ps` ## ⚡ Performance Tips ### For Better Search Performance ```sql -- Check vector index usage SELECT * FROM pg_indexes WHERE tablename = 'lightrag_vdb_chunks'; -- Analyze query performance EXPLAIN ANALYZE SELECT * FROM lightrag_vdb_chunks WHERE vector <#> '[0,1,0]'::vector LIMIT 10; ``` ### For Better Caching - Ensure Redis volume is mounted - Monitor Redis memory: `redis-cli INFO memory` - Set appropriate TTL for cache entries ### For Better Multi-Tenant Performance - Use workspace_id in queries - Leverage composite indexes - Monitor slow queries: `log_min_duration_statement = 1000` --- **Last Updated**: November 20, 2024 **Status**: ✅ Ready to Use **Platform**: macOS/Linux/Windows (with Docker Desktop)