RagRuntime Architecture v200

, par Bertrand Degoy

`RagRuntime` est un orchestrateur minimal, stateless, thread‑safe.
Il pilote le pipeline RAG complet, mais délègue toutes les opérations lourdes au daemon Pyro5.
Le design garantit une séparation stricte des responsabilités et une compatibilité totale avec n’importe quel backend d’indexation ou modèle de langage.

RagRuntime — Présentation

RagRuntime est un orchestrateur RAG client‑side.
Il ne contient aucun objet lourd (embedding, index, LLM).
Il délègue toutes les opérations coûteuses au daemon Pyro5.

Il implémente un pipeline strict :

condense_query → retrieve → rerank → synthesize → render → generate

Chaque étape est isolée, testable, et remplaçable.

1. Rôle général

RagRuntime :

  • normalise l’historique ;

  • reformule la question via le LLM du daemon ;

  • interroge le service rag.reader du daemon RAG pour récupérer les passages ;

  • applique un reranker local (optionnel) ;

  • construit un contexte RAG structuré selon le mode ;

  • rend ce contexte dans un format compact ;

  • génère la réponse finale via le LLM du daemon.

Il est LLM‑agnostique, index‑agnostique, embedding‑agnostique.

2. Structure interne

Composants principaux

  • condense_query() : réécriture de la question via llm.server.

  • retrieve() : appel Pyro5 vers rag.reader.

  • _apply_rerank() : reranker CPU local.

  • synthesize() : construction du contexte (tree, node, tool, condense).

  • render() : formatage compact du contexte.

  • generate() : génération finale via llm.server.

PNG - 894.5 ko

3. Modes de synthèse

Mode Description
condense concatène le texte brut
tree_summarize résumé hiérarchique multi‑niveaux
node_summarize résumé par chunk
tool résumé compact pour ReAct

Voir : Les modes de synthèse