Retour à la documentation
Guide 00

Pipeline de synthèse — réunir les documents, déceler les contradictions

La pipeline de synthèse multi-documents prend un ensemble de pages/documents d'une archive et produit des pages wiki réunies : chaque page synthétise les sources, signale où les sources ne sont pas d'accord (contradiction detection), respecte les budgets…

2 min de lecture

La pipeline de synthèse multi-documents prend un ensemble de pages/documents d'une archive et produit des pages wiki réunies : chaque page synthétise les sources, signale où les sources ne sont pas d'accord (contradiction detection), respecte les budgets de tokens/appels/pages par run, et ne touche le système de fichiers qu'après l'approbation sélective de ce qu'on veut insérer.

Fonctionnalité Community (la pipeline tourne sur les mêmes infrastructures du chat orchestrator ; les limites de budget par run). Sources : docs/SERVICES.md (le domaine Synthesis, synthesisPageWriter.ts), README.md:33. Lignes de provenance : FACT-CENSUS.md F-SYNTH-1.

Comment tourne la pipeline

La pipeline est orchestrée par runSynthesisPipeline (façade synthesisService.ts ; le corps dans synthesis/synthesisStages.ts — runPipelineStages, callSynthesisLLMStage, …) :

ÉtapeCe qu'elle fait
1. Extraction d'entitésdepuis le corpus sélectionné (synthesisStages.ts:569)
2. Une page par archivegeneratePageSummary par page (:282)
3-4. Le fond et la décisionles blocs fins avec le system prompt (l'injection du bloc wiki : Pass 4 seulement sur le rôle SYSTEM, synthesisStages.ts:784-788)
ContradictionssynthesisContradictionService.ts : l'appariement des candidates via Jaccard (seuil 0.15) + le juge LLM par paire (judgePairContradiction) + les marqueurs de contradiction sur les pages
Orphelines et wikilinks casséssynthesisOrphanService.ts (detectOrphanPages, detectBrokenWikilinks)
ÉcrituresynthesisPageWriter.ts : applyApprovedChanges persiste les modifications approuvées ; le frontmatter de source (buildSourceFrontmatter) cite les provenance

Le suivi du budget

BudgetTracker (synthesisBudgetService.ts) borne tokens / appels LLM / pages par run (la configuration via loadBudgetConfig) : la pipeline s'arrête quand le budget épuise — la sortie déjà écrite reste valide. Le chien de garde du budget est à l'égal de celui du chat orchestrator.

L'approbation sélective

Les modifications proposées par la synthèse N'atterrissent pas automatiquement dans le wiki : elles passent par le flux d'approbation (applyApprovedChanges ne persiste que ce que l'approbateur a confirmé). L'aperçu déterministe (la même machine de wikiWriteService) précède toute écriture ; les pages proposées portent le frontmatter de source.

La détection de contradictions

Les paires candidates se forment par similarité (Jaccard, seuil 0.15) et les paires suspectes passent au juge LLM (judgePairContradiction) : le résultat = les marqueurs de contradiction sur les pages impliquées (buildContradictionMarker) + le résumé de l'affirmation (extractClaimSummary). La fidélité du processus est échantillonnée hebdomadairement (runFidelitySample, dimanche 03:00 — synthesisFidelityService.ts).

Déclencheurs et files de travail

  • Post-OCR : la file synthesisTriggerService (onOcrJobCompleted) met en file les runs de synthèse après le tour de l'OCR, avec un temps de refroidissement (isCooldownActive).
  • Reaper : le scheduler synthesisReaperJob (toutes les 15 minutes) bascule les runs PROCESSING orphelins en FAILED.

Ce guide couvre la surface opérationnelle du pipeline de synthèse; l'approfondissement technique vit dans la publication jumelle :

Provenance

SectionSource
Façade / étapes / budget / contradictionsdocs/SERVICES.md (§ Synthesis + les modules synthesis*) — F-SYNTH-1
Déclencheurs / reaperdocs/SERVICES.md (§ Schedulers & jobs — synthesisTriggerService, synthesisReaperJob)
La ligne du READMEREADME.md:33 (la ligne du synthesis) — F-SYNTH-1
L'injection wiki / Pass 4docs/WIKI_SCHEMA_LAYER.md (§ Injection seams — synthesisStages.ts:784-788)

---

Référence opérateur — Simmetric Chat v0.28.1 (docs actualisées le 2026-10-02, SHA du census `aca5b8ff`).