Vue d'ensemble
Rôle du RAG Agent, ses deux services et leur lancement en local.
RAG Agent
Le RAG Agent répond aux questions à partir des documents du bot. Il est fourni par apps/rag-agent et tourne en deux services, construits depuis le même arbre de sources :
| Service | Module ASGI | Port | Rôle |
|---|---|---|---|
rag-agent | rag_agent.interfaces.agent.app:app | 8000 (AGENT_PORT) | POST /chat : réponse en flux SSE |
| Index API | src.rag_agent.interfaces.index.index_api:app | 8502 (INDEX_API_PORT) | POST /regenerate-index : reconstruit les index FAISS |
Place dans la plateforme
- Chat : l'interface de discussion est
ia/chainlit-base, un dépôt séparé. Elle envoie chaque message àrag-agent(POST /chat) avec l'historique de la conversation, l'identifiant du thread et les métadonnées de l'utilisateur (dont ses rôles). Elle lit le flux SSE et l'affiche. - Back-office :
apps/serverappelle l'Index API après une régénération demandée depuis l'interface d'administration. - Base de données : PostgreSQL principal. Le RAG Agent lit les chunks, les paires question/réponse, les tags, les rôles et les index sérialisés (tables
indexesetindex_chunks). Il y écrit aussi les embeddings calculés à la volée. - Modèles : embeddings et génération passent par LiteLLM (voir Configuration). Le reranker CrossEncoder tourne en local, sur CPU.
Le détail du traitement d'une question est dans Pipeline RAG.
Lancer en local
Prérequis : Python 3.13, uv, une base PostgreSQL avec le schéma à jour (migrations du serveur) et une clé LiteLLM.
cd apps/rag-agent
uv sync
# Terminal 1 : service de chat
uv run uvicorn rag_agent.interfaces.agent.app:app --host 0.0.0.0 --port 8000
# Terminal 2 : Index API
uv run uvicorn src.rag_agent.interfaces.index.index_api:app --host 0.0.0.0 --port 8502Les variables (DATABASE_URL, LITELLM_API_BASE, LITELLM_API_KEY, BOT_SYSTEM_PROMPT, etc.) sont lues depuis l'environnement ou un fichier .env. La liste complète est dans Configuration.
Au démarrage, rag-agent précharge le reranker. Au premier message, il charge l'index du rôle de l'utilisateur. Si aucun index n'existe encore, lancez une régénération depuis le back-office (ou POST http://localhost:8502/regenerate-index).
Tests du service :
cd apps/rag-agent
uv run pytestLes tests de visibilité par rôle sur PostgreSQL demandent RUN_POSTGRES_TESTS=1 et DATABASE_URL.
Contrôles de santé
rag-agent:GET /healthz(sondes Kubernetes etHEALTHCHECKde l'image).- Index API :
GET /.