Frequently Asked Questions
Frequently Asked Questions
Section titled “Frequently Asked Questions”Common Questions About EdgeQuake
General
Section titled “General”What is EdgeQuake?
Section titled “What is EdgeQuake?”EdgeQuake is a production-grade Graph-RAG framework written in Rust. It combines:
- Knowledge Graphs for entity and relationship extraction
- Vector Search for semantic retrieval
- LLM Integration for natural language answers
Think of it as a smarter search engine that understands concepts, not just keywords.
How is EdgeQuake different from vector-only RAG?
Section titled “How is EdgeQuake different from vector-only RAG?”| Aspect | Vector-Only RAG | EdgeQuake (Graph-RAG) |
|---|---|---|
| Retrieval | Semantic similarity | Semantic + structural |
| Multi-hop | ❌ Single retrieval | ✅ Follows relationships |
| Context | Flat chunks | Connected entities |
| ”What connects X to Y?” | Cannot answer | Native query type |
What’s the relationship to LightRAG?
Section titled “What’s the relationship to LightRAG?”EdgeQuake is a Rust implementation inspired by LightRAG, a Python Graph-RAG research project.
Key differences:
- Language: Rust vs Python (10-50x faster)
- Production Ready: Multi-tenant, observability, deployment
- Storage: PostgreSQL + pgvector + Apache AGE
- API: REST with streaming support
Deployment
Section titled “Deployment”What are the minimum requirements?
Section titled “What are the minimum requirements?”Development:
- 4 GB RAM
- 2 CPU cores
- Rust 1.95+
- PostgreSQL 15+ with pgvector and AGE available
Production:
- 8+ GB RAM
- 4+ CPU cores
- PostgreSQL 15+ with pgvector + AGE
- LLM provider (OpenAI or Ollama)
Can I run EdgeQuake without PostgreSQL?
Section titled “Can I run EdgeQuake without PostgreSQL?”No — starting with v0.4.0, DATABASE_URL is required for all server modes.
In-memory storage was removed to ensure reliable, production-grade behavior. Running
without a database causes the server to exit with error code 1.
For development and testing, use the Docker-based PostgreSQL setup — it starts in seconds and requires no configuration:
# Start full stack (PostgreSQL + backend + frontend)make dev
# Start PostgreSQL only, then run testsmake postgres-startcargo testFor CI environments, use Docker Compose with the provided docker-compose.yml.
Can I run EdgeQuake without an LLM?
Section titled “Can I run EdgeQuake without an LLM?”Yes, for testing with the mock provider:
# Uses mock provider (no API key needed)cargo testFor production, you need a real LLM. Options:
- OpenAI (
OPENAI_API_KEY) - Ollama (local, free)
- LM Studio (local, free)
How much does it cost to run EdgeQuake?
Section titled “How much does it cost to run EdgeQuake?”EdgeQuake itself is free and open source. Costs come from:
| Component | Cost |
|---|---|
| EdgeQuake | Free |
| PostgreSQL | Free (self-hosted) or $15/mo (managed) |
| OpenAI | ~$0.002 per document (~500 words) |
| Ollama | Free (local GPU) |
How can I reduce LLM costs?
Section titled “How can I reduce LLM costs?”-
Use cheaper models:
Terminal window # gpt-5-nano is 10x cheaper than gpt-4oEDGEQUAKE_LLM_MODEL=gpt-5-nano -
Use local LLM (Ollama):
Terminal window EDGEQUAKE_LLM_PROVIDER=ollamaEDGEQUAKE_LLM_MODEL=gemma3:12b -
Reduce chunk size (fewer LLM calls):
- Configure smaller chunks in pipeline
Is there a free tier for OpenAI?
Section titled “Is there a free tier for OpenAI?”OpenAI offers free credits for new accounts ($5-$18 depending on promotion). After that:
- gpt-5-nano: ~$0.00015/1K input tokens
- text-embedding-3-small: ~$0.00002/1K tokens
Performance
Section titled “Performance”How fast is EdgeQuake?
Section titled “How fast is EdgeQuake?”| Operation | Typical Time |
|---|---|
| Document upload | < 1s |
| Entity extraction | 2-5s per chunk (with LLM) |
| Vector search | < 100ms |
| Graph traversal | < 50ms |
| Full query | 2-10s (depends on LLM) |
How does it scale?
Section titled “How does it scale?”EdgeQuake handles:
- Documents: 100,000+ per workspace
- Entities: 1,000,000+ per workspace
- Concurrent users: 100+ with connection pooling
- Query throughput: 50+ queries/second (without LLM bottleneck)
How can I speed up queries?
Section titled “How can I speed up queries?”- Use
naivemode for simple queries (vector-only, no graph) - Reduce
max_chunksfrom 20 to 5-10 - Use faster LLM (gpt-5-nano vs gpt-4o)
- Pre-warm embeddings with test query
- Use GPU for Ollama embedding
Multi-Tenancy
Section titled “Multi-Tenancy”Is EdgeQuake multi-tenant?
Section titled “Is EdgeQuake multi-tenant?”Yes. Each workspace is isolated:
- Separate document collections
- Separate knowledge graphs
- Per-workspace LLM configuration
- No data leakage between workspaces
Can different tenants use different LLMs?
Section titled “Can different tenants use different LLMs?”Yes. LLM is configured per-workspace:
POST /api/v1/workspaces{ "name": "tenant-a", "llm_provider": "openai", "llm_model": "gpt-4o"}
POST /api/v1/workspaces{ "name": "tenant-b", "llm_provider": "ollama", "llm_model": "llama3.2"}Security
Section titled “Security”Is my data encrypted?
Section titled “Is my data encrypted?”| Level | Status |
|---|---|
| At rest | Depends on PostgreSQL config |
| In transit | Yes (HTTPS recommended) |
| API keys | Never logged |
Does EdgeQuake send data to external services?
Section titled “Does EdgeQuake send data to external services?”Only to LLM providers you configure:
- OpenAI: Document chunks sent for extraction
- Ollama: Local, no external calls
- No telemetry sent by EdgeQuake itself
How do I secure the API?
Section titled “How do I secure the API?”EdgeQuake doesn’t include built-in authentication. Secure with:
- Reverse proxy (nginx/Caddy) with API keys
- Network isolation (private subnet)
- OAuth2 proxy (like oauth2-proxy)
Features
Section titled “Features”What document formats are supported?
Section titled “What document formats are supported?”| Format | Support |
|---|---|
| Plain text | ✅ Full |
| Markdown | ✅ Full |
| ✅ Full (with edgequake-pdf) | |
| HTML | 🔄 Planned |
| DOCX | 🔄 Planned |
What LLM providers are supported?
Section titled “What LLM providers are supported?”| Provider | Support | Notes |
|---|---|---|
| OpenAI | ✅ Full | GPT-4o, GPT-4o-mini |
| Ollama | ✅ Full | Any local model |
| LM Studio | ✅ Full | OpenAI-compatible |
| Azure OpenAI | ✅ Full | Via base_url config |
| Anthropic | 🔄 Planned | Claude models |
What query modes are available?
Section titled “What query modes are available?”| Mode | Use Case |
|---|---|
naive | Simple vector search |
local | Entity-focused queries |
global | High-level summaries |
hybrid | Best of all modes (DEFAULT) |
mix | Custom weighted blend |
bypass | Direct LLM, no retrieval (debug) |
Troubleshooting
Section titled “Troubleshooting”Why are my queries returning empty?
Section titled “Why are my queries returning empty?”-
Check documents exist:
Terminal window curl http://localhost:8080/api/v1/documents?workspace_id=... -
Check entities extracted:
Terminal window curl http://localhost:8080/api/v1/graph/entities?workspace_id=... -
Try
naivemode (vector-only):{ "query": "test", "mode": "naive" }
See Troubleshooting Guide for more.
Why is document processing stuck?
Section titled “Why is document processing stuck?”- Check LLM is running (Ollama:
ollama list) - Check API key is valid (OpenAI)
- Check logs:
tail -f /tmp/edgequake-backend.log - Restart backend and retry
How do I check if EdgeQuake is healthy?
Section titled “How do I check if EdgeQuake is healthy?”# Basic healthcurl http://localhost:8080/health
# Full readiness (checks database)curl http://localhost:8080/readyComparison
Section titled “Comparison”EdgeQuake vs LightRAG (Python)?
Section titled “EdgeQuake vs LightRAG (Python)?”| Aspect | LightRAG | EdgeQuake |
|---|---|---|
| Language | Python | Rust |
| Speed | Baseline | 10-50x faster |
| Memory | Higher | Lower (no GC) |
| Multi-tenant | No | Yes |
| Production | Research | Production |
| Algorithm | Same | Same |
EdgeQuake vs Microsoft GraphRAG?
Section titled “EdgeQuake vs Microsoft GraphRAG?”| Aspect | GraphRAG | EdgeQuake |
|---|---|---|
| Approach | Hierarchical communities | Flat entity graph |
| Cost | Very high ($$$) | Low-medium |
| Index time | Hours-days | Minutes |
| Queries | Global summaries | Hybrid modes |
| Use case | Large corpora | General purpose |
EdgeQuake vs Pinecone/Weaviate?
Section titled “EdgeQuake vs Pinecone/Weaviate?”| Aspect | Vector DBs | EdgeQuake |
|---|---|---|
| Type | Storage only | Full RAG stack |
| Retrieval | Vector similarity | Vector + Graph |
| Extraction | Not included | Built-in |
| Multi-hop | No | Yes |
Contributing
Section titled “Contributing”How can I contribute?
Section titled “How can I contribute?”- Fork the repository
- Create a feature branch
- Make changes following AGENTS.md
- Run
cargo clippy && cargo test - Submit a pull request
What’s the development workflow?
Section titled “What’s the development workflow?”# Clonegit clone https://github.com/your-fork/edgequake
# Setupmake dev
# Make changes, then testcargo testcargo clippy
# Format before commitcargo fmtVision & PDF Processing
Section titled “Vision & PDF Processing”Why is my PDF failing with “Vision extraction timed out” or “Circuit breaker tripped”?
Section titled “Why is my PDF failing with “Vision extraction timed out” or “Circuit breaker tripped”?”This almost always means the vision model does not match the vision provider.
For example, EDGEQUAKE_VISION_MODEL=gpt-4.1-nano paired with EDGEQUAKE_LLM_PROVIDER=ollama
will fail because Ollama cannot serve OpenAI models.
Diagnose — check the effective config endpoint:
curl -s http://localhost:8080/api/v1/config/effective | jq '.areas[] | select(.name == "Vision")'If has_mismatch is true, the response explains exactly which env var is wrong
and how to fix it.
Fix — pick one:
| Option | Action |
|---|---|
| A | Unset the mismatched env var so the default takes over: unset EDGEQUAKE_VISION_MODEL |
| B | Change the provider to match the model: EDGEQUAKE_VISION_PROVIDER=openai |
| C | Change the model to match the provider: EDGEQUAKE_VISION_MODEL=gemma4:latest |
Then restart the backend.
How does EdgeQuake decide which vision provider and model to use?
Section titled “How does EdgeQuake decide which vision provider and model to use?”The resolution chain (highest priority first):
- Per-request form field (
vision_provider/vision_modelin upload) EDGEQUAKE_VISION_PROVIDER/EDGEQUAKE_VISION_MODELenv varsEDGEQUAKE_VISION_LLM_PROVIDER/EDGEQUAKE_VISION_LLM_MODELenv varsEDGEQUAKE_DEFAULT_LLM_PROVIDER/EDGEQUAKE_DEFAULT_LLM_MODELenv varsEDGEQUAKE_LLM_PROVIDER/EDGEQUAKE_LLM_MODELenv vars- Built-in default:
ollama/gemma4:latest
At each step, the resolved model is checked for compatibility with the resolved
provider. Incompatible combinations (e.g. gpt-4.1-nano on ollama) are
automatically skipped with a warning log, and the next candidate is tried.
Can I use a different model for vision than for text extraction?
Section titled “Can I use a different model for vision than for text extraction?”Yes. Set the vision-specific env vars:
# Main LLM for entity extractionEDGEQUAKE_DEFAULT_LLM_PROVIDER=ollamaEDGEQUAKE_DEFAULT_LLM_MODEL=gemma4:latest
# Separate vision model for PDF OCREDGEQUAKE_VISION_PROVIDER=openaiEDGEQUAKE_VISION_MODEL=gpt-4.1-nanoOPENAI_API_KEY=sk-...Where can I see the active configuration in the UI?
Section titled “Where can I see the active configuration in the UI?”Open Settings → Configuration Explainability panel. It shows:
- The resolved provider and model for each area (LLM, Embedding, Vision)
- The full resolution chain (which env var won)
- Mismatch warnings with actionable fix instructions (auto-expanded)
The same data is available via GET /api/v1/config/effective.