- Introduced a new session history feature that tracks and manages conversation history across multiple chat sessions. - Implemented REST API endpoints for creating, listing, retrieving, and deleting chat sessions. - Enhanced error handling and logging for session management operations. - Updated README.md to include documentation for the new session history feature and its usage.
259 lines
7.3 KiB
Markdown
259 lines
7.3 KiB
Markdown
# Session History Integration Summary
|
|
|
|
## Overview
|
|
|
|
The session history feature has been successfully integrated from the standalone `service/` folder into the main LightRAG codebase. This document provides a summary of all changes made.
|
|
|
|
## Changes Made
|
|
|
|
### 1. New Files Created
|
|
|
|
#### Core Session History Modules (`lightrag/api/`)
|
|
- `session_models.py` - SQLAlchemy database models for sessions, messages, and citations
|
|
- `session_schemas.py` - Pydantic schemas for API request/response validation
|
|
- `session_database.py` - Database configuration and connection management
|
|
- `session_manager.py` - Business logic for session operations
|
|
|
|
#### Updated Files
|
|
- `lightrag/api/routers/history_routes.py` - Updated to use new integrated modules
|
|
- `lightrag/api/lightrag_server.py` - Added session database initialization
|
|
|
|
### 2. Configuration Files Updated
|
|
|
|
#### `docker-compose.yml`
|
|
- Added `session-db` service (PostgreSQL 16)
|
|
- Configured volume for persistent session data
|
|
- Added health checks for database availability
|
|
- Set up proper service dependencies
|
|
|
|
#### `env.example`
|
|
- Added `SESSION_HISTORY_ENABLED` flag
|
|
- Added `SESSION_POSTGRES_*` configuration variables
|
|
- Included fallback to main `POSTGRES_*` settings
|
|
|
|
#### `README.md`
|
|
- Added comprehensive "Session History Feature" section
|
|
- Documented configuration options
|
|
- Provided Docker deployment instructions
|
|
- Added API endpoint examples
|
|
- Included usage examples
|
|
|
|
### 3. Documentation
|
|
|
|
#### New Documents
|
|
- `docs/SessionHistoryMigration.md` - Complete migration guide
|
|
- Step-by-step migration instructions
|
|
- Configuration reference
|
|
- Troubleshooting section
|
|
- API examples
|
|
|
|
- `scripts/migrate_session_history.sh` - Automated migration script
|
|
- Checks and updates `.env` configuration
|
|
- Handles backup of old `service/` folder
|
|
- Tests database connectivity
|
|
- Provides next steps
|
|
|
|
## Architecture Changes
|
|
|
|
### Before (Standalone Service)
|
|
```
|
|
service/
|
|
├── main.py # Separate FastAPI app
|
|
├── app/
|
|
│ ├── core/
|
|
│ │ ├── config.py # Separate configuration
|
|
│ │ └── database.py # Separate DB management
|
|
│ ├── models/
|
|
│ │ ├── models.py # SQLAlchemy models
|
|
│ │ └── schemas.py # Pydantic schemas
|
|
│ ├── services/
|
|
│ │ ├── history_manager.py # Business logic
|
|
│ │ └── lightrag_wrapper.py
|
|
│ └── api/
|
|
│ └── routes.py # API endpoints
|
|
```
|
|
|
|
### After (Integrated)
|
|
```
|
|
lightrag/
|
|
└── api/
|
|
├── session_models.py # SQLAlchemy models
|
|
├── session_schemas.py # Pydantic schemas
|
|
├── session_database.py # DB management
|
|
├── session_manager.py # Business logic
|
|
├── lightrag_server.py # Main server (updated)
|
|
└── routers/
|
|
└── history_routes.py # API endpoints (updated)
|
|
```
|
|
|
|
## Key Features
|
|
|
|
### 1. Automatic Initialization
|
|
- Session database is automatically initialized when LightRAG Server starts
|
|
- Graceful degradation if database is unavailable
|
|
- Tables are created automatically on first run
|
|
|
|
### 2. Unified Configuration
|
|
- All configuration through main `.env` file
|
|
- Fallback to main PostgreSQL settings if session-specific settings not provided
|
|
- Easy enable/disable via `SESSION_HISTORY_ENABLED` flag
|
|
|
|
### 3. Docker Integration
|
|
- PostgreSQL container automatically configured in `docker-compose.yml`
|
|
- Persistent volumes for data retention
|
|
- Health checks for reliability
|
|
- Proper service dependencies
|
|
|
|
### 4. API Consistency
|
|
- Session endpoints follow LightRAG API conventions
|
|
- Proper authentication headers (`X-User-ID`)
|
|
- RESTful endpoint design
|
|
- Comprehensive error handling
|
|
|
|
## API Endpoints
|
|
|
|
All session history endpoints are now under the `/history` prefix:
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| POST | `/history/sessions` | Create a new chat session |
|
|
| GET | `/history/sessions` | List all sessions for user |
|
|
| GET | `/history/sessions/{id}/history` | Get message history |
|
|
| DELETE | `/history/sessions/{id}` | Delete session and messages |
|
|
|
|
## Migration Path
|
|
|
|
### For New Installations
|
|
1. Copy `env.example` to `.env`
|
|
2. Configure `SESSION_POSTGRES_*` variables
|
|
3. Run `docker compose up -d` (if using Docker)
|
|
4. Start LightRAG server: `lightrag-server`
|
|
|
|
### For Existing Installations with service/
|
|
1. Run migration script: `bash scripts/migrate_session_history.sh`
|
|
2. Update `.env` with session configuration
|
|
3. Restart LightRAG server
|
|
4. Test session endpoints
|
|
5. Backup and remove old `service/` folder (optional)
|
|
|
|
## Configuration Examples
|
|
|
|
### Minimal Configuration (Uses Defaults)
|
|
```bash
|
|
SESSION_HISTORY_ENABLED=true
|
|
```
|
|
|
|
### Full Configuration
|
|
```bash
|
|
SESSION_HISTORY_ENABLED=true
|
|
SESSION_POSTGRES_HOST=localhost
|
|
SESSION_POSTGRES_PORT=5433
|
|
SESSION_POSTGRES_USER=lightrag
|
|
SESSION_POSTGRES_PASSWORD=secure_password
|
|
SESSION_POSTGRES_DATABASE=lightrag_sessions
|
|
```
|
|
|
|
### Using Main PostgreSQL Instance
|
|
```bash
|
|
SESSION_HISTORY_ENABLED=true
|
|
# Session will use main POSTGRES_* settings
|
|
POSTGRES_HOST=localhost
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_USER=postgres
|
|
POSTGRES_PASSWORD=password
|
|
POSTGRES_DATABASE=lightrag_db
|
|
```
|
|
|
|
### Disabled Session History
|
|
```bash
|
|
SESSION_HISTORY_ENABLED=false
|
|
# No PostgreSQL required for session history
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Manual Testing
|
|
```bash
|
|
# Create a session
|
|
curl -X POST http://localhost:9621/history/sessions \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-User-ID: test@example.com" \
|
|
-d '{"title": "Test Session"}'
|
|
|
|
# List sessions
|
|
curl http://localhost:9621/history/sessions \
|
|
-H "X-User-ID: test@example.com"
|
|
|
|
# Get session history
|
|
curl http://localhost:9621/history/sessions/{session_id}/history
|
|
```
|
|
|
|
### Docker Testing
|
|
```bash
|
|
# Start all services
|
|
docker compose up -d
|
|
|
|
# Check logs
|
|
docker compose logs -f lightrag session-db
|
|
|
|
# Verify database
|
|
docker exec -it lightrag-session-db psql -U lightrag -d lightrag_sessions -c '\dt'
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
All required dependencies are already included in `pyproject.toml`:
|
|
- `sqlalchemy` - ORM for database operations
|
|
- `psycopg2-binary` - PostgreSQL driver
|
|
- `fastapi` - Web framework
|
|
- `pydantic` - Data validation
|
|
|
|
## Next Steps
|
|
|
|
### Cleanup (Optional)
|
|
After successful migration and testing:
|
|
```bash
|
|
# Backup old service folder
|
|
mv service service.backup.$(date +%Y%m%d)
|
|
|
|
# Or remove completely
|
|
rm -rf service
|
|
```
|
|
|
|
### Monitoring
|
|
- Check server logs for session initialization messages
|
|
- Monitor PostgreSQL connections
|
|
- Review session creation and query performance
|
|
|
|
### Customization
|
|
- Modify session models in `session_models.py`
|
|
- Extend API endpoints in `routers/history_routes.py`
|
|
- Add custom business logic in `session_manager.py`
|
|
|
|
## Rollback Plan
|
|
|
|
If needed, to rollback to standalone service:
|
|
1. Restore `service/` folder from backup
|
|
2. Remove session configuration from `.env`
|
|
3. Revert changes to `docker-compose.yml`
|
|
4. Restart services
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
- Review `docs/SessionHistoryMigration.md`
|
|
- Check LightRAG documentation
|
|
- Open an issue on GitHub
|
|
|
|
## Conclusion
|
|
|
|
The session history feature is now fully integrated into LightRAG as a first-class feature. The integration provides:
|
|
- ✅ Easier setup and configuration
|
|
- ✅ Better maintainability
|
|
- ✅ Unified Docker deployment
|
|
- ✅ Consistent API design
|
|
- ✅ Comprehensive documentation
|
|
- ✅ Automated migration tools
|
|
|
|
The old `service/` folder can now be safely removed or kept as backup.
|
|
|