Article

EdgeQuake : un Graph-RAG en Rust prêt pour la production

Fiche de lecture : ce qu'apporte EdgeQuake (LightRAG en Rust sur Postgres), ses modes de requête, ses chiffres face à LightRAG et comment l'essayer en 5 minutes.

Intermediate 4 min read

This content is not translated yet. Showing the original version.

Le problème qu'il résout

La recherche vectorielle trouve des passages qui ressemblent à la question. Elle peine dès que la réponse dépend de relations : « quels fournisseurs sont liés aux incidents du T3 ? », « qui travaille avec qui sur ce sujet ? ». Le Graph-RAG ajoute un graphe d'entités et de relations extrait des documents, puis combine graphe et vecteurs au moment de la question.

EdgeQuake implémente l'algorithme LightRAG en Rust, avec une promesse simple : un binaire, un Postgres, n'importe quel LLM, dans le cloud ou 100 % en local.

Comment ça marche

flowchart LR
  D["Documents"] --> C["Découpage"]
  C --> X["LLM : extraction entités + relations"]
  X --> G[("Postgres<br/>pgvector + Apache AGE")]
  Q["Question"] --> K["Mots-clés"]
  K --> V["Recherche vectorielle"]
  K --> W["Parcours du graphe"]
  G --> V
  G --> W
  V --> A["LLM : réponse sourcée"]
  W --> A
  • Stockage unique : PostgreSQL 16 à 18, pgvector pour les embeddings, Apache AGE pour le graphe. Pas de base vectorielle ni de base graphe à opérer en plus.
  • Interfaces : interface web (port 3000), API REST avec Swagger (/swagger-ui, port 8080), /health, CLI (edgequake migrate, edgequake doctor), serveur MCP et SDK (Python, TypeScript, Rust, Go, Java, Kotlin, C#, PHP, Ruby, Swift).
  • Modèles : OpenAI, Anthropic, Gemini, Mistral ; en local Ollama, LM Studio, llama.cpp, MLX… ; tout serveur compatible OpenAI ou Anthropic. Un modèle peut être choisi par rôle (extraction, requête, mots-clés, résumé, embeddings, vision).

Les modes de requête

ModeIdéal pour
naiveRecherches proches du mot-clé
localUne entité précise et ses voisines
globalThèmes et questions de haut niveau
hybrid (défaut)Réponses équilibrées et complètes
mixMélange pondéré vecteurs + graphe
bypassLLM direct, sans recherche

Face à LightRAG (Python)

Mesures du projet sur GraphRAG-Bench (médical, n = 200, même corpus, mêmes modèles) :

xychart-beta
  title "Latence médiane d'une requête (ms)"
  x-axis ["Froid EdgeQuake", "Froid LightRAG", "Cache EdgeQuake", "Cache LightRAG"]
  y-axis "ms" 0 --> 5000
  bar [4447, 4359, 82, 993]
MesureEdgeQuakeLightRAGLecture
Exactitude des réponses0,7920,786Égalité statistique
Requête à froid (p50)4 447 ms4 359 msÉquivalent
Requête en cache (p50)82 ms993 msEdgeQuake ~12× plus rapide
Rappel des preuves0,9320,949LightRAG devant

Ce qui le rend « production »

  • Migrations explicites : l'API ne migre jamais la base ; edgequake migrate est rejoué depuis chaque version publiée.
  • Sécurité par défaut : écoute sur loopback au démarrage rapide, secrets générés, clés de connexion chiffrées (AES-256-GCM, en écriture seule).
  • Multi-tenant fermé par défaut (requête, suppression, reprise), authentification intégrée, SSO Keycloak/OIDC, journal d'audit.
  • PDF : mode texte par défaut, mode vision pour les tableaux et scans, avec repli automatique.
  • /health interroge réellement les fournisseurs ; edgequake doctor vérifie ce qui est joignable.

L'essayer en 5 minutes

Il suffit de Docker, puis d'ouvrir http://localhost:3000 :

curl -fsSL https://raw.githubusercontent.com/raphaelmansuy/edgequake/edgequake-main/quickstart.sh | sh

Sans interface, par l'API :

curl -X POST http://localhost:8080/api/v1/documents/upload -F "file=@mon-document.pdf"

curl -X POST http://localhost:8080/api/v1/query \
  -H "Content-Type: application/json" \
  -d '{"query": "Quels sont les concepts principaux ?", "mode": "hybrid"}'

Version figée : EDGEQUAKE_VERSION=0.34.0 sh quickstart.sh. Mode CI : quickstart.sh --yes --provider ollama.

Où ça se place par rapport à mes kits RAG

BesoinOption
Documents Drive / SharePoint, managé GoogleRAG sur vos documents Google Drive
Questions sur des relations entre entitésEdgeQuake (graphe + vecteurs)
Tout en local, sans cloudEdgeQuake + Ollama, ou le kit RAG local avec Claude

Pistes d'essai : brancher EdgeQuake comme serveur MCP dans un agent ADK ou Gemini Enterprise (voir le parcours Serveurs MCP), et comparer hybrid vs RAG Engine sur le même corpus.

Resources

    Download all (.zip)

    References