Files
linear-coding-agent/generations/library_rag/situation.md
David Blanc Brioir 04ee3f9e39 feat: Add data quality verification & cleanup scripts
## Data Quality & Cleanup (Priorities 1-6)

Added comprehensive data quality verification and cleanup system:

**Scripts créés**:
- verify_data_quality.py: Analyse qualité complète œuvre par œuvre
- clean_duplicate_documents.py: Nettoyage doublons Documents
- populate_work_collection.py/clean.py: Peuplement Work collection
- fix_chunks_count.py: Correction chunksCount incohérents
- manage_orphan_chunks.py: Gestion chunks orphelins (3 options)
- clean_orphan_works.py: Suppression Works sans chunks
- add_missing_work.py: Création Work manquant
- generate_schema_stats.py: Génération stats auto
- migrate_add_work_collection.py: Migration sûre Work collection

**Documentation**:
- WEAVIATE_GUIDE_COMPLET.md: Guide consolidé complet (600+ lignes)
- WEAVIATE_SCHEMA.md: Référence schéma rapide
- NETTOYAGE_COMPLETE_RAPPORT.md: Rapport nettoyage session
- ANALYSE_QUALITE_DONNEES.md: Analyse qualité initiale
- rapport_qualite_donnees.txt: Output brut vérification

**Résultats nettoyage**:
- Documents: 16 → 9 (7 doublons supprimés)
- Works: 0 → 9 (peuplé + nettoyé)
- Chunks: 5,404 → 5,230 (174 orphelins supprimés)
- chunksCount: Corrigés (231 → 5,230 déclaré = réel)
- Cohérence parfaite: 9 Works = 9 Documents = 9 œuvres

**Modifications code**:
- schema.py: Ajout Work collection avec vectorisation
- utils/weaviate_ingest.py: Support Work ingestion
- utils/word_pipeline.py: Désactivation concepts (problème .lower())
- utils/word_toc_extractor.py: Métadonnées Word correctes
- .gitignore: Exclusion fichiers temporaires (*.wav, output/*, NUL)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-01 11:57:26 +01:00

56 lines
2.3 KiB
Markdown

✅ CE QUI A ÉTÉ FAIT
1. TOC extraction - CORRIGÉE
- Fichier modifié : utils/word_toc_extractor.py
- Ajout de 2 fonctions :
- _roman_to_int() : Convertit chiffres romains (I, II, VII) en entiers
- extract_toc_from_chapter_summaries() : Extrait TOC depuis "RESUME DES CHAPITRES"
- Résultat : 7 chapitres correctement extraits (au lieu de 2)
2. Weaviate - Investigation complète
- Total chunks dans Weaviate : 5433 chunks (5068 de Peirce)
- "On the origin - 10 pages" : 38 chunks supprimés (tous avaient sectionPath=1)
3. Documentation créée
- Fichier : WEAVIATE_SCHEMA.md (schéma complet de la base)
🚨 PROBLÈME BLOQUANT
text2vec-transformers tué par le système (OOM - Out Of Memory)
Symptômes :
Killed
INFO: Started server process
INFO: Application startup complete
Killed
Le conteneur Docker n'a pas assez de RAM pour vectoriser les chunks → ingestion échoue avec 0/7 chunks insérés.
📋 CE QUI RESTE À FAIRE (après redémarrage)
Option A - Simple (recommandée) :
1. Modifier word_pipeline.py ligne 356-387 pour que le simple text splitting utilise la TOC
2. Re-traiter avec use_llm=False (pas besoin de vectorisation intensive)
3. Vérifier que les chunks ont les bons sectionPath (1, 2, 3... 7)
Option B - Complexe :
1. Augmenter RAM allouée à Docker (Settings → Resources)
2. Redémarrer Docker
3. Re-traiter avec use_llm=True et llm_provider='mistral'
📂 FICHIERS MODIFIÉS
- utils/word_toc_extractor.py (nouvelles fonctions TOC)
- utils/word_pipeline.py (utilise nouvelle fonction TOC)
- WEAVIATE_SCHEMA.md (nouveau fichier de documentation)
🔧 COMMANDES APRÈS REDÉMARRAGE
cd C:\GitHub\linear_coding_library_rag\generations\library_rag
# Vérifier Docker
docker ps
# Option A (simple) - modifier le code puis :
python -c "from pathlib import Path; from utils.word_pipeline import process_word; process_word(Path('input/On the origin - 10 pages.docx'), use_llm=False, ingest_to_weaviate=True)"
# Vérifier résultat
python -c "import weaviate; client=weaviate.connect_to_local(); coll=client.collections.get('Chunk'); resp=coll.query.fetch_objects(limit=100); origin=[o for o in resp.objects if 'origin - 10' in o.properties.get('work',{}).get('title','').lower()]; print(f'{len(origin)} chunks'); client.close()"