EdgeQuake Documentation

April 27, 2026 · View on GitHub

High-Performance Graph-Enhanced RAG in Rust

Welcome to EdgeQuake — an advanced Retrieval-Augmented Generation (RAG) framework that combines knowledge graphs with vector search for superior context retrieval. The current stack is pinned for deterministic development and CI behavior, with PostgreSQL as the required storage backend and fail-closed workspace isolation on destructive and query flows.

┌────────────────────────────────────────────────────────────────────┐
│                         EdgeQuake                                  │
│                                                                    │
│    Document ──▶ [Pipeline] ──▶ Knowledge Graph ──▶ Query Engine    │
│                     │              │                    │          │
│                     ▼              ▼                    ▼          │
│               ┌─────────┐    ┌─────────┐         ┌─────────┐       │
│               │ Chunks  │    │ Entities│         │ Hybrid  │       │
│               │ + Embed │    │ + Rels  │         │ Results │       │
│               └─────────┘    └─────────┘         └─────────┘       │
│                                                                    │
│    [REST API]  [Next.js WebUI]  [Rust SDK]  [PostgreSQL + AGE]     │
└────────────────────────────────────────────────────────────────────┘

📚 Documentation Index

🚀 Getting Started

GuideDescriptionTime
InstallationPrerequisites and setup5 min
Quick StartFirst ingestion and query10 min
First IngestionUnderstanding the pipeline15 min

🏗️ Architecture

DocumentDescription
OverviewSystem design and components
Data FlowHow documents flow through the system
Crate Reference11 Rust crates explained

💡 Core Concepts

ConceptDescription
Graph-RAGWhy knowledge graphs enhance RAG
Entity ExtractionLLM-based entity recognition
Knowledge GraphNodes, edges, and communities
Hybrid RetrievalCombining vector and graph search

🔬 Deep Dives

ArticleDescription
LightRAG AlgorithmCore algorithm: extraction, graph, retrieval
Query Modes6 modes with trade-offs explained
Entity NormalizationDeduplication and description merging
GleaningMulti-pass extraction for completeness
Entity ExtractionLLM-based extraction pipeline
Community DetectionLouvain clustering for global queries
Chunking StrategiesToken-based segmentation with overlap
Embedding ModelsModel selection and dimension trade-offs
Graph StorageApache AGE property graph backend
Vector Storagepgvector HNSW indexing and search
PDF ProcessingVision and EdgeParse extraction pipeline
Cost TrackingLLM cost monitoring per operation
Pipeline ProgressReal-time progress tracking

📊 Comparisons

ComparisonKey Insights
vs LightRAG (Python)Performance and design differences
vs GraphRAGMicrosoft's approach comparison
vs Traditional RAGWhy graphs matter

📖 Tutorials

TutorialDescription
Building Your First RAG AppEnd-to-end tutorial
PDF IngestionPDF upload and configuration
Multi-Tenant SetupWorkspace isolation
Document IngestionUpload and processing workflows
Migration from LightRAGPython to Rust migration guide

🔌 Integrations

IntegrationDescription
OpenWebUIChat interface with Ollama emulation
LangChainRetriever and agent integration
Custom ClientsPython, TypeScript, Rust, Go clients

📦 SDKs (by language)

GuideDescription
SDK indexRust, Python, TypeScript, Kotlin, Swift, Go, Java, C#, Ruby
Brutal SDK assessmentParity gaps and tiering (honest)

📖 API Reference

APIDescription
REST APIHTTP endpoints
Extended APIAdvanced API features

📓 Reference

ResourceDescription
CookbookPractical recipes for common tasks
FAQFrequently asked questions

🛠️ Operations

GuideDescription
DeploymentProduction deployment
ConfigurationAll config options
MonitoringObservability setup
Performance TuningOptimization guide
Operations OverviewReliable local and CI/CD operating model

🔒 Security & Troubleshooting

GuideDescription
Security Best PracticesSecurity guidelines
Common IssuesDebugging guide

I want to...

GoalGo To
Get running in 5 minutesQuick Start
Understand the architectureOverview
Learn how the algorithm worksLightRAG Algorithm
See API endpointsREST API
Use an official SDKSDKs
Deploy to productionDeployment

🔧 Technology Stack

┌─────────────────────────────────────────────────────────────┐
│                        Backend (Rust)                       │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌───────────┐ │
│  │ Rust 1.95 │  │   Axum    │  │   SQLx    │  │ Tokio +   │ │
│  │ + Cargo   │  │  (HTTP)   │  │ (database)│  │ tracing   │ │
│  └───────────┘  └───────────┘  └───────────┘  └───────────┘ │
├─────────────────────────────────────────────────────────────┤
│                       Frontend (TypeScript)                 │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌───────────┐ │
│  │ Next.js   │  │  React 19 │  │ Sigma.js  │  │  Zustand  │ │
│  │  16.2.x   │  │   19.2.x  │  │  (graph)  │  │  (state)  │ │
│  └───────────┘  └───────────┘  └───────────┘  └───────────┘ │
├─────────────────────────────────────────────────────────────┤
│                         Storage                             │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ PostgreSQL 15+ with pgvector + Apache AGE            │  │
│  │ Required for server mode; no in-memory fallback      │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

📈 Key Metrics

MetricValueNotes
Lines of Rust~130,000Across 11 crates
Query Modes6naive, local, global, hybrid, mix, bypass
Entity Types7 defaultPERSON, ORGANIZATION, LOCATION, CONCEPT, EVENT, TECHNOLOGY, PRODUCT
Embedding DimsConfigurable1536 (OpenAI), 768 (Ollama/LM Studio)

🏃 One-Liner Start

# Clone and run with Ollama (free, local LLM)
git clone https://github.com/raphaelmansuy/edgequake.git && cd edgequake && make dev

📄 License

Apache-2.0