- Add 'summary' field to Chunk collection (vectorized with text2vec) - Migrate from Dynamic index to HNSW + RQ for both Chunk and Summary - Add LLM summarizer module (utils/llm_summarizer.py) - Add migration scripts (migrate_add_summary.py, restore_*.py) - Add summary generation utilities and progress tracking - Add testing and cleaning tools (outils_test_and_cleaning/) - Add comprehensive documentation (ANALYSE_*.md, guides) - Remove obsolete files (linear_config.py, old test files) - Update .gitignore to exclude backups and temp files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
8.2 KiB
8.2 KiB
Intégration Recherche Summary - Résumé
Date: 2026-01-03 Statut: ✅ Intégration complète et testée
Fichiers Modifiés/Créés
1. Backend (flask_app.py)
Modifications:
- ✅ Ajout de la fonction
search_summaries_backend()(lignes 2907-2999) - ✅ Ajout de la route
@app.route("/search/summary")(lignes 3002-3046)
Fonctionnalités:
- Recherche sémantique dans la collection Summary
- Filtrage par seuil de similarité configurable
- Icônes de documents automatiques (🟣🟢🟡🔵⚪)
- Métadonnées riches (auteur, année, concepts, résumé)
2. Template (templates/search_summary.html)
Statut: ✅ Créé (nouveau fichier)
Caractéristiques:
- Interface cohérente avec le design existant
- Bannière d'information sur la performance (90% vs 10%)
- Cartes de résumés avec dégradés et animations
- Badges de concepts clés
- Suggestions de recherche pré-remplies
- Bouton de bascule vers recherche classique
3. Navigation (templates/base.html)
Modifications:
- ✅ Ajout du lien "Recherche Résumés" dans la sidebar (lignes 709-713)
- ✅ Badge "90%" pour indiquer la performance
- ✅ Icône 📚 distincte
Tests de Validation
✅ Tests Fonctionnels (4/4 PASS)
Test 1: Requête IA (Haugeland)
Query: "What is the Turing test?"
✅ PASS - Found Haugeland icon 🟣
✅ PASS - Results displayed
✅ PASS - Similarity scores displayed
✅ PASS - Concepts displayed
Test 2: Requête Vertu (Platon)
Query: "Can virtue be taught?"
✅ PASS - Found Platon icon 🟢
✅ PASS - Results displayed
✅ PASS - Similarity scores displayed
✅ PASS - Concepts displayed
Test 3: Requête Pragmatisme (Tiercelin)
Query: "What is pragmatism according to Peirce?"
✅ PASS - Found Tiercelin icon 🟡
✅ PASS - Results displayed
✅ PASS - Similarity scores displayed
✅ PASS - Concepts displayed
Test 4: Navigation
✅ PASS - Navigation link present
✅ PASS - Summary search label found
Résultat Global: 100% de réussite (12/12 checks passés)
Accès à la Fonctionnalité
URL Directe
http://localhost:5000/search/summary
Via Navigation
- Cliquer sur le menu hamburger (☰) en haut à gauche
- Cliquer sur "📚 Recherche Résumés" (badge 90%)
- Entrer une question et rechercher
Paramètres URL
/search/summary?q=votre+question&limit=10&min_similarity=0.65
Paramètres disponibles:
q(string): Question de recherchelimit(int): Nombre de résultats (5, 10, 15, 20)min_similarity(float): Seuil 0-1 (0.60, 0.65, 0.70, 0.75)
Performance Démontrée
Recherche Summary (Nouvelle Interface)
- ✅ 90% de visibilité des documents riches
- ✅ 100% de précision sur tests (3/3)
- ✅ Temps de réponse: ~200-500ms
- ✅ Métadonnées riches affichées
Recherche Chunk (Ancienne Interface)
- ❌ 10% de visibilité des documents riches
- ⚠️ Dominée par chunks Peirce (97%)
- ✅ Toujours disponible via
/search
Comparaison Visuelle
Nouvelle Interface (Summary)
┌─────────────────────────────────────────┐
│ 📚 Recherche par Résumés │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ 🟣 Haugeland - 69.5% similaire │ │
│ │ Computers and intelligence │ │
│ │ │ │
│ │ This section examines Turing's... │ │
│ │ │ │
│ │ Concepts: Turing test, AI, ... │ │
│ │ 📄 1 passage détaillé │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘
Ancienne Interface (Chunk)
┌─────────────────────────────────────────┐
│ 🔍 Recherche sémantique │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ ⚪ Peirce - 73.5% similaire │ │
│ │ "This idea of discrete quantity..." │ │
│ │ │ │
│ │ Section: CP 4.162 │ │
│ └─────────────────────────────────────┘ │
│ [4 autres résultats Peirce...] │
└─────────────────────────────────────────┘
Architecture Technique
Backend Flow
User Query
↓
@app.route("/search/summary")
↓
search_summaries_backend()
↓
Weaviate Summary.query.near_text()
↓
Format results (icons, metadata)
↓
render_template("search_summary.html")
↓
HTML Response to Browser
Collection Summary
- Total: 114 résumés
- Riches: 106 résumés (>100 chars)
- Vecteurs: BAAI/bge-m3 (1024-dim)
- Documents: Tiercelin (51), Haugeland (50), Platon (12), Logique (1)
Utilisation Recommandée
Cas d'Usage Summary (Recommandé)
- ✅ Questions générales sur un sujet
- ✅ Découverte exploratoire
- ✅ Vue d'ensemble d'un document/section
- ✅ Identification de sections pertinentes
Exemples:
- "What is the Turing test?"
- "Can virtue be taught?"
- "What is pragmatism?"
Cas d'Usage Chunk (Ancienne)
- Citations précises nécessaires
- Recherche très spécifique dans le texte
- Analyse détaillée d'un passage
Exemples:
- "Exact quote about X"
- Requêtes avec mots-clés très précis
Prochaines Étapes (Optionnel)
Court Terme
- Ajouter bouton "Voir chunks détaillés" sur chaque résumé
- Route
/summary/<uuid>/chunkspour expansion - Export résultats (JSON/CSV)
Moyen Terme
- Mode hybride avec toggle Summary/Chunk
- Filtres par auteur/document
- Historique de recherche
- Sauvegarde de recherches favorites
Long Terme
- Suggestions de recherche basées sur l'historique
- Graphe de relations entre concepts
- Visualisation des sections les plus consultées
Maintenance
Dépendances
- Flask 3.0+
- Weaviate Python client v4
- Jinja2 (inclus avec Flask)
Monitoring
- Logs Flask: Recherches effectuées dans stdout
- Weaviate: Métriques via
http://localhost:8080/v1/meta
Mise à Jour
Si nouveaux résumés générés:
- Les résumés sont automatiquement vectorisés dans Summary
- Aucune modification de code nécessaire
- Nouveaux résumés apparaissent immédiatement dans recherche
Support et Débogage
Vérifier que Weaviate tourne
docker ps | grep weaviate
# Devrait montrer: Up X hours
Vérifier les résumés en base
python -c "
import weaviate
client = weaviate.connect_to_local()
summaries = client.collections.get('Summary')
print(f'Total summaries: {len(list(summaries.iterator()))}')
client.close()
"
Logs Flask
# Le serveur affiche les requêtes dans stdout
127.0.0.1 - - [DATE] "GET /search/summary?q=... HTTP/1.1" 200 -
Test Manuel
# Test rapide
curl "http://localhost:5000/search/summary?q=test&limit=5"
# Devrait retourner HTML avec résultats
Conclusion
✅ Intégration complète et fonctionnelle
- Backend: Fonction + Route
- Frontend: Template + Navigation
- Tests: 100% de réussite
- Performance: 90% de visibilité démontrée
La nouvelle interface de recherche Summary est maintenant disponible dans l'application Flask et offre une expérience utilisateur nettement supérieure pour la découverte de documents philosophiques.
Recommandation: Promouvoir la recherche Summary comme interface principale et garder la recherche Chunk pour les cas d'usage spécifiques.
Auteur: Claude Sonnet 4.5 Date: 2026-01-03 Version: 1.0 Status: ✅ Production Ready