SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
2.7 KB

# Ingestion du matériel de cours

Architecture détaillée : rag-architecture.md. Dernier rapport d'exécution : ingestion-report.md.

# Exécution

bash
pnpm ingest     # incrémentale (sommes de contrôle SHA-256 — seuls les fichiers modifiés sont retraités)
pnpm reindex    # complète (--force)

Ou depuis l'admin : Cours & contenu → « Relancer l'ingestion ».

# Ce qui est ingéré

Source Type Espace Fragmentation
slides/seanceNN*.tex Diapositives beamer official-* 1 frame = 1 fragment, numéroté comme le PDF (frames noframenumbering exclues), boîtes sémantiques étiquetées (Définition/Important/Exemple/Note/Question éclair), tableaux aplatis
plan_de_cours.tex Plan official-* Par section/sous-section (+ redécoupage > 1 800 caractères avec chevauchement)
exercices/enonce_*.tex, solution_*.tex Ateliers official-* Par section/exercice
aide_memoire.tex, glossaire.tex Références official-* Par section (entrées de glossaire en lignes de tableau)
README.md, description_moodle.md Infos official-* Par titre
examen*, *_exam*, *solutionnaire*, *blueprint*, *grille_correction*, output/course-analysis/*.md Matériel d'évaluation instructor-private (invisible aux étudiants) Par section
Téléversements étudiants (chat) PDF/DOCX/XLSX/CSV/TXT student-temporary-upload (lié à la conversation et au propriétaire) Par page/bloc

Exclus : artefacts LaTeX (.aux, .log…), images, scripts Python/JS, plateforme_ateliers/ (contient submissions.db avec données étudiantes), .git.

# Métadonnées par fragment

cours, espace, document, type de référence (slide/section/exercise/glossary/page), numéro (diapositive/page), libellé (« Séance 4 — Diapositive 18 »), section courante, titre, types de boîtes, semaine, somme de contrôle du document parent, date d'ingestion, propriétaire éventuel.

# Indexation

  1. FTS5 (unicode61 remove_diacritics 2) — « depreciation » trouve « dépréciation ».
  2. Embeddings locaux Xenova/multilingual-e5-small (384 d, préfixes E5 passage:/query:), stockés en blob ; premier lancement : téléchargement ~120 Mo dans data/models/, ensuite hors-ligne.

Mesuré sur le corpus réel : 52 fichiers → 2 065 fragments en ~70 s (Apple Silicon).

# Rapport et erreurs

Chaque exécution est journalisée (ingestion_runs) avec rapport détaillé par fichier (✓/⚠/✗), consultable dans l'admin, et écrite dans docs/ingestion-report.md par le script CLI. Un fichier en erreur n'interrompt pas le lot ; il apparaît en statut error avec son message.