# 🔍 P20 — Recherche projets similaires (anti-doublon) > **Statut** : 🟡 partiel (Chroma déjà installé, juste à câbler) > **Priorité Vivien** : moyenne (« avant de créer, je vois ce qui existe ») --- ## ⚡ Idée centrale > **Quand tu décris une nouvelle idée, l'IA cherche dans tes projets existants ce qui ressemble. Te dit « ces 3 projets sont proches, voici leur résumé, tu veux récupérer leurs infos ? ». Évite de re-créer ce qui existe.** Pour toi (Vivien) : > *Tu tapes « j'ai l'idée d'une page météo qui parle ». L'IA répond : « Tu as déjà P11 Stack JARVIS qui fait du TTS, et apps/_sandbox/mosaic.html qui a une tuile météo. Tu veux récupérer leurs infos ? ».* --- ## 🎯 État actuel ✅ **Chroma installé** (port standard, vector DB) ✅ **Collection `vivien_memory`** existe (mémoires du hook UserPromptSubmit) ✅ **Embeddings** via Ollama nomic-embed-text (file_watcher l'utilise déjà — module scaffoldé) ❌ **Pas d'index sémantique des projets** P10-P21 ❌ **Pas d'endpoint de recherche** `/api/projets/search` ❌ **Pas d'UI** pour cette recherche --- ## 🛠️ Composants à coder ### 1. Indexer les projets dans Chroma Script `index_projets.py` : - Scan `MNEMOSYNE/06_PROJETS/OLYMPUS/P*.md` - Embed chaque fiche projet via nomic-embed-text (Ollama) - Stocker dans collection Chroma `projets_olympus` ### 2. Endpoint de recherche - `POST /api/projets/search` : - Input : `{ query: string }` - Embed la query - Cherche les K=3-5 plus similaires dans Chroma - Retourne `{ similar: [{ id, score, summary, link }] }` ### 3. UI dans atelier - Champ « Décris ton idée » - Bouton « Y a-t-il déjà ça ? » - Liste des projets similaires avec score - Bouton « Récupérer les infos » ### 4. Intégration workflow - Dans la page « case d'idée → fonction » (P22 future) - Avant de créer un nouveau projet, on cherche systématiquement - Si > 80% similarité → alerter --- ## 🚦 Phases ### Phase 1 — Indexation (1 session, 30 min) - Script Python qui scan + embed + insert - Test : recherche manuelle dans Chroma ### Phase 2 — Endpoint REST (30 min) - `POST /api/projets/search` - Test via curl ### Phase 3 — UI atelier (1 session) - Petite page de recherche - Affichage des résultats avec score ### Phase 4 — Intégration workflow (1 session) - Branchement dans la « case d'idée » (P22) - Auto-trigger lors de la création --- ## ⚖️ Limites - Ollama doit tourner pour les embeddings - Si Ollama down → fallback sur recherche keyword (basique) - Qualité dépend du modèle d'embedding --- ## 🔗 Liens - **file_watcher** scaffoldé (P5 modules projetés) utilise déjà nomic-embed-text → réutilisable - **Khoj** (mentionné mais abandonné) faisait ça → on construit notre version locale - **Plan v10.2 § Phase 5** : Auto-régénération diagrammes — synergie --- **Statut** : 🟡 Infrastructure dispo (Chroma + Ollama), juste à coder l'indexation et l'UI.