Plugin Discourse RAG (grain post, rerank cross-encoder, citations whitelistées, gate déterministe, réécriture de requête multi-tour) + documentation du chantier (design, éval, sécurité, pipeline). Export sanitisé depuis le monorepo privé via scripts/export_rag_public.py (aucun endpoint interne, IP, compte démo ou chemin d'infrastructure). WIP : agent en test sur groupe restreint, pas encore public sur le forum. |
||
|---|---|---|
| .. | ||
| eval | ||
| local | ||
| prod_snapshots | ||
| DESIGN.md | ||
| EVAL.md | ||
| LOCAL_DEV.md | ||
| PIPELINE.md | ||
| README.md | ||
| REFERENCES.md | ||
| SAFETY.md | ||
Chantier RAG — granularité post, retrieval avancé, évaluation
Statut (15/09/2026) : déploiement prod en cours, flags encore OFF (comportement live inchangé). Code v2 déployé, reranker en service, backfill natif posts en cours sur le VPS. Reprise / prochaine étape exacte :
PLAN_RAG_PROD_VPS.md§ « Reprise session » (tout en haut). Éval locale : config gagnante mesurée (posts+rerank, Hit@5 0.97), sécurité testée (red-team + gate + clause) —EVAL.md/SAFETY.md.
Pourquoi ce chantier
Le RAG actuel indexe un vecteur par topic (~22 340). Sur les megathreads
(300+ messages), un seul vecteur = centroïde sémantique dilué + troncature
à 4096 tokens d'entrée → les passages précis en page 12 sont invisibles.
Objectif : retrieval au grain post avec citations /t/slug/id/post_number,
en gardant le principe produit — le bot oriente vers les fils, il ne répond
pas à la place des membres.
C'est aussi un chantier d'apprentissage : on teste les techniques standard de
l'industrie (voir REFERENCES.md), on mesure sur notre corpus, on documente.
Documents
| Fichier | Contenu |
|---|---|
DESIGN.md |
Architecture, options à tester (matrice de configs), décisions |
REFERENCES.md |
Notes de littérature RAG — techniques éprouvées + sources |
EVAL.md |
Jeu d'éval, métriques, protocole, résultats retrieval + génération |
SAFETY.md |
Red-team, gate d'entrée, clause de refus, injection-evidence |
PIPELINE.md |
Architecture bout-en-bout question→réponse + latences mesurées |
LOCAL_DEV.md |
Recette : redéployer le forum en local sur n'importe quelle machine |
prod_snapshots/ |
État prod sauvegardé avant déploiement (prompt, settings, rollback) |
../PLAN_RAG_PROD_VPS.md |
Plan de déploiement + reprise de session — à lire en premier pour continuer |
Workflow dev (nouveau)
Machine de dev (laptop / PC fixe) Mini PC IA (prod)
┌────────────────────────────┐ ┌──────────────────────┐
│ Discourse local = réplique │ │ k3s rag-depiedencap │
│ exacte du VPS (.tar.gz) │ │ Ollama :32134 │
│ + pgvector locale │──Tailscale──►│ qwen3:30b (chat) │
│ + bge-m3 LOCAL (CPU) │ │ bge-m3 (embeddings │
│ pour les tests │ │ prod) │
└────────────────────────────┘ └──────────────────────┘
- Vecteurs dev → pgvector locale (zéro risque prod).
- LLM chat dev → mini PC (le laptop ne porte pas un 30B).
- Embeddings dev → bge-m3 local CPU (ne pas encombrer la file prod).
- Une fois la solution validée : le bge-m3 du mini PC génère les vecteurs prod (même modèle = vecteurs compatibles).
Règles
- Jamais de test de retrieval/embedding contre la base prod.
- Le forum local n'envoie aucun e-mail (
disable_emails, voirLOCAL_DEV.md). - Toute décision de design → ADR dans
DESIGN.md§ Décisions. - Résultats de benchs →
EVAL.md(pas de feeling, des chiffres).