Revert "Integrated the GraphML Visualizer as an optional component of LightRAG"

This commit is contained in:
zrguo 2025-02-05 01:30:57 +08:00 committed by GitHub
parent 0e162b25aa
commit b2bc7770fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 92 additions and 177 deletions

View File

@ -1058,12 +1058,6 @@ LightRag can be installed with API support to serve a Fast api interface to perf
The documentation can be found [here](lightrag/api/README.md)
## Graph viewer
LightRag can be installed with Tools support to add extra tools like the graphml 3d visualizer.
The documentation can be found [here](lightrag/tools/lightrag_visualizer/README.md)
## Star History
<a href="https://star-history.com/#HKUDS/LightRAG&Date">

View File

@ -0,0 +1,88 @@
# 3D GraphML Viewer
An interactive 3D graph visualization tool based on Dear ImGui and ModernGL.
## Features
- **3D Interactive Visualization**: High-performance 3D graphics rendering using ModernGL
- **Multiple Layout Algorithms**: Support for various graph layouts
- Spring layout
- Circular layout
- Shell layout
- Random layout
- **Community Detection**: Automatic detection and visualization of graph community structures
- **Interactive Controls**:
- WASD + QE keys for camera movement
- Right mouse drag for view angle control
- Node selection and highlighting
- Adjustable node size and edge width
- Configurable label display
- Quick navigation between node connections
## Tech Stack
- **imgui_bundle**: User interface
- **ModernGL**: OpenGL graphics rendering
- **NetworkX**: Graph data structures and algorithms
- **NumPy**: Numerical computations
- **community**: Community detection
## Usage
1. **Launch the Program**:
```bash
python -m pip install -r requirements.txt
python graph_visualizer.py
```
2. **Load Font**:
- Place the font file `font.ttf` in the `assets` directory
- Or modify the `CUSTOM_FONT` constant to use a different font file
3. **Load Graph File**:
- Click the "Load GraphML" button in the interface
- Select a graph file in GraphML format
4. **Interactive Controls**:
- **Camera Movement**:
- W: Move forward
- S: Move backward
- A: Move left
- D: Move right
- Q: Move up
- E: Move down
- **View Control**:
- Hold right mouse button and drag to rotate view
- **Node Interaction**:
- Hover mouse to highlight nodes
- Click to select nodes
5. **Visualization Settings**:
- Adjustable via UI control panel:
- Layout type
- Node size
- Edge width
- Label visibility
- Label size
- Background color
## Customization Options
- **Node Scaling**: Adjust node size via `node_scale` parameter
- **Edge Width**: Modify edge width using `edge_width` parameter
- **Label Display**: Toggle label visibility with `show_labels`
- **Label Size**: Adjust label size using `label_size`
- **Label Color**: Set label color through `label_color`
- **View Distance**: Control maximum label display distance with `label_culling_distance`
## Performance Optimizations
- Efficient graphics rendering using ModernGL
- View distance culling for label display optimization
- Community detection algorithms for optimized visualization of large-scale graphs
## System Requirements
- Python 3.10+
- Graphics card with OpenGL 3.3+ support
- Supported Operating Systems: Windows/Linux/MacOS

View File

@ -1,6 +1,6 @@
"""
3D GraphML Viewer using Dear ImGui and ModernGL
Author: ParisNeo, ArnoChen
Author: LoLLMs, ArnoChen
Description: An interactive 3D GraphML viewer using imgui_bundle and ModernGL
Version: 2.0
"""
@ -8,18 +8,6 @@ Version: 2.0
from typing import Optional, Tuple, Dict, List
import numpy as np
import networkx as nx
import pipmaster as pm
# Added automatic libraries install using pipmaster
if not pm.is_installed("moderngl"):
pm.install("moderngl")
if not pm.is_installed("imgui_bundle"):
pm.install("imgui_bundle")
if not pm.is_installed("pyglm"):
pm.install("pyglm")
if not pm.is_installed("python-louvain"):
pm.install("python-louvain")
import moderngl
from imgui_bundle import imgui, immapp, hello_imgui
import community

View File

@ -1,5 +1,5 @@
from .lightrag import LightRAG as LightRAG, QueryParam as QueryParam
__version__ = "1.1.5"
__version__ = "1.1.4"
__author__ = "Zirui Guo"
__url__ = "https://github.com/HKUDS/LightRAG"

View File

@ -1 +1 @@
__api_version__ = "1.0.4"
__api_version__ = "1.0.3"

View File

@ -557,14 +557,7 @@ class DocumentManager:
def __init__(
self,
input_dir: str,
supported_extensions: tuple = (
".txt",
".md",
".pdf",
".docx",
".pptx",
".xlsx",
),
supported_extensions: tuple = (".txt", ".md", ".pdf", ".docx", ".pptx", "xlsx"),
):
self.input_dir = Path(input_dir)
self.supported_extensions = supported_extensions

View File

@ -1,136 +0,0 @@
# LightRAG 3D Graph Viewer
An interactive 3D graph visualization tool included in the LightRAG package for visualizing and analyzing RAG (Retrieval-Augmented Generation) graphs and other graph structures.
![image](https://github.com/user-attachments/assets/b0d86184-99fc-468c-96ed-c611f14292bf)
## Installation
### Quick Install
```bash
pip install lightrag-hku[tools] # Install with visualization tool only
# or
pip install lightrag-hku[api,tools] # Install with both API and visualization tools
```
## Launch the Viewer
```bash
lightrag-viewer
```
## Features
- **3D Interactive Visualization**: High-performance 3D graphics rendering using ModernGL
- **Multiple Layout Algorithms**: Support for various graph layouts
- Spring layout
- Circular layout
- Shell layout
- Random layout
- **Community Detection**: Automatic detection and visualization of graph community structures
- **Interactive Controls**:
- WASD + QE keys for camera movement
- Right mouse drag for view angle control
- Node selection and highlighting
- Adjustable node size and edge width
- Configurable label display
- Quick navigation between node connections
## Tech Stack
- **imgui_bundle**: User interface
- **ModernGL**: OpenGL graphics rendering
- **NetworkX**: Graph data structures and algorithms
- **NumPy**: Numerical computations
- **community**: Community detection
## Interactive Controls
### Camera Movement
- W: Move forward
- S: Move backward
- A: Move left
- D: Move right
- Q: Move up
- E: Move down
### View Control
- Hold right mouse button and drag to rotate view
### Node Interaction
- Hover mouse to highlight nodes
- Click to select nodes
## Visualization Settings
Adjustable via UI control panel:
- Layout type
- Node size
- Edge width
- Label visibility
- Label size
- Background color
## Customization Options
- **Node Scaling**: Adjust node size via `node_scale` parameter
- **Edge Width**: Modify edge width using `edge_width` parameter
- **Label Display**: Toggle label visibility with `show_labels`
- **Label Size**: Adjust label size using `label_size`
- **Label Color**: Set label color through `label_color`
- **View Distance**: Control maximum label display distance with `label_culling_distance`
## System Requirements
- Python 3.9+
- Graphics card with OpenGL 3.3+ support
- Supported Operating Systems: Windows/Linux/MacOS
## Troubleshooting
### Common Issues
1. **Command Not Found**
```bash
# Make sure you installed with the 'tools' option
pip install lightrag-hku[tools]
# Verify installation
pip list | grep lightrag-hku
```
2. **ModernGL Initialization Failed**
```bash
# Check OpenGL version
glxinfo | grep "OpenGL version"
# Update graphics drivers if needed
```
3. **Font Loading Issues**
- The required fonts are included in the package
- If issues persist, check your graphics drivers
## Usage with LightRAG
The viewer is particularly useful for:
- Visualizing RAG knowledge graphs
- Analyzing document relationships
- Exploring semantic connections
- Debugging retrieval patterns
## Performance Optimizations
- Efficient graphics rendering using ModernGL
- View distance culling for label display optimization
- Community detection algorithms for optimized visualization of large-scale graphs
## Support
- GitHub Issues: [LightRAG Repository](https://github.com/URL-to-lightrag)
- Documentation: [LightRAG Docs](https://URL-to-docs)
## License
This tool is part of LightRAG and is distributed under the MIT License. See `LICENSE` for more information.
Note: This visualization tool is an optional component of the LightRAG package. Install with the [tools] option to access the viewer functionality.

View File

@ -62,16 +62,6 @@ def read_api_requirements():
return api_deps
def read_extra_requirements():
api_deps = []
try:
with open("./lightrag/extra/VisualizationTool/requirements.txt") as f:
api_deps = [line.strip() for line in f if line.strip()]
except FileNotFoundError:
print("Warning: API requirements.txt not found.")
return api_deps
metadata = retrieve_metadata()
long_description = read_long_description()
requirements = read_requirements()
@ -107,12 +97,10 @@ setuptools.setup(
},
extras_require={
"api": read_api_requirements(), # API requirements as optional
"tools": read_extra_requirements(), # API requirements as optional
},
entry_points={
"console_scripts": [
"lightrag-server=lightrag.api.lightrag_server:main [api]",
"lightrag-viewer=lightrag.tools.lightrag_visualizer:main [tools]",
],
},
)