Torna alla documentazione
Guida 00

Pipeline di sintesi — riunire i documenti, scoprire le contraddizioni

La pipeline di sintesi multi-documento prende un insieme di pagine/documenti di un archivio e produce pagine wiki riunite: ogni pagina sintetizza le fonti, segnala dove le fonti non sono d'accordo (contradiction detection), rispetta i budget di token/chi…

2 min di lettura

La pipeline di sintesi multi-documento prende un insieme di pagine/documenti di un archivio e produce pagine wiki riunite: ogni pagina sintetizza le fonti, segnala dove le fonti non sono d'accordo (contradiction detection), rispetta i budget di token/chiamate/pagine per run, e tocca il filesystem scritto solo dopo l'approvazione selettiva di ciò che si vuole inserire.

Funzione Community (la pipeline gira sulle stesse infrastrutture del chat orchestrator; i limiti di budget per-run). Fonti: docs/SERVICES.md (il domain Synthesis, synthesisPageWriter.ts), README.md:33. Righe di provenienza: FACT-CENSUS.md F-SYNTH-1.

Come gira la pipeline

La pipeline è orchestrata da runSynthesisPipeline (facade synthesisService.ts; il corpo in synthesis/synthesisStages.ts — runPipelineStages, callSynthesisLLMStage, …):

PassoCosa fa
1. Estrazione entitàdal corpus selezionato (synthesisStages.ts:569)
2. Pagina per archiviogeneratePageSummary per pagina (:282)
3-4. Fondo e decisionei blocchi finali con il system prompt (l'iniezione del blocco wiki: Pass 4 solo sul role SYSTEM, synthesisStages.ts:784-788)
ContraddizionisynthesisContradictionService.ts: candidate pairing via Jaccard (threshold 0.15) + il LLM judge per coppia (judgePairContradiction) + i marker di contraddizione sulle pagine
Orfani e wikilink rotisynthesisOrphanService.ts (detectOrphanPages, detectBrokenWikilinks)
ScritturasynthesisPageWriter.ts: applyApprovedChanges persista le modifiche approvate; la frontmatter di fonte (buildSourceFrontmatter) cita gli provenienza

Budget tracking

BudgetTracker (synthesisBudgetService.ts) vincola token / chiamate LLM / pagine per run (config via loadBudgetConfig): la pipeline si ferma quando il budget esaurisce — l'output già scritto resta valido. Il watchdog di budget è alla pari con quello del chat orchestrator.

Approvazione selettiva

Le modifiche proposte dalla sintesi NON atterrano automaticamente nel wiki: passano dal flusso di approvazione (applyApprovedChanges persista solo ciò che l'utente/approver ha confermato). La preview deterministica (la stessa macchina di wikiWriteService) precede ogni scrittura; le pagine proposte portano la frontmatter di fonte.

Contradiction detection

Le coppie candidate si formano per similarità (Jaccard, threshold 0.15) e le coppie sospette passano al LLM judge (judgePairContradiction): il risultato = i marker di contraddizione sulle pagine coinvolte (buildContradictionMarker) + il riassunto della claim (extractClaimSummary). La fidelity del processo è campionata settimanalmente (runFidelitySample, domenica 03:00 — synthesisFidelityService.ts).

Trigger e code di lavoro

  • Post-OCR: la coda synthesisTriggerService (onOcrJobCompleted) accoda i run di sintesi dopo il completamento dell'OCR, con cooldown (isCooldownActive).
  • Reaper: lo scheduler synthesisReaperJob (ogni 15 minuti) flippa le run PROCESSING orfane in FAILED.

Questa guida copre la superficie operativa della pipeline di sintesi; l'approfondimento tecnico vive nel post gemello:

Provenance

SezioneFonte
Facade / stages / budget / contraddizionidocs/SERVICES.md (§ Synthesis + i moduli synthesis*) — F-SYNTH-1
Trigger / reaperdocs/SERVICES.md (§ Schedulers & jobs — synthesisTriggerService, synthesisReaperJob)
La linea READMEREADME.md:33 (la linea del synthesis) — F-SYNTH-1
Iniezione wiki / Pass 4docs/WIKI_SCHEMA_LAYER.md (§ Injection seams — synthesisStages.ts:784-788)

---

Riferimento operativo — Simmetric Chat v0.28.1 (docs aggiornate 2026-10-02, census SHA `aca5b8ff`).