# Fonctionnalités IA — Momento ## Architecture Trois fournisseurs IA indépendants, chacun configurable séparément : | Tier | Usage | Variables | |---|---|---| | **Tags** | Tags, labels, reformulation, suggestions de titre | `AI_PROVIDER_TAGS`, `AI_MODEL_TAGS` | | **Embedding** | Recherche sémantique, Memory Echo, similarité | `AI_PROVIDER_EMBEDDING`, `AI_MODEL_EMBEDDING` | | **Chat** | Chat RAG, agents, résumés, vision, brainstorm | `AI_PROVIDER_CHAT`, `AI_MODEL_CHAT` | **13 fournisseurs supportés** : OpenAI, Google Gemini, Anthropic, DeepSeek, OpenRouter, Mistral, Ollama, ZAI, LM Studio, Custom OpenAI, MiniMax, GLM, Anthropic Custom. Hiérarchie de fallback : Config spécifique → Tags → Embedding → Général → Env. --- ## 1. Notes — Écriture intelligente ### Suggestions de titre - 3 propositions (Direct, Question, Créatif) en 3-8 mots - Détection automatique de la langue du contenu - Toggle utilisateur `titleSuggestions` ### Tags contextuels automatiques (IA2) - Suggestions parmi les labels existants du carnet OU création de nouveaux - Confiance > 0.5 (labels existants), > 0.3 (nouveaux) - Toggle utilisateur `autoLabeling` ### Création auto de labels (IA4) - Analyse un carnet (15+ notes) et détecte les thèmes récurrents - Un thème doit apparaître dans 5+ notes, confiance > 0.60 - Max 5 suggestions, labels marqués `type='ai'` ### Reformulation de paragraphe — 6 modes - **Clarifier** : élimine l'ambiguïté - **Raccourcir** : condense 30-50% - **Améliorer le style** : vocabulaire, structure - **Corriger la grammaire** : corrections minimales - **Traduire** : vers langue cible - **Améliorer tous les modes** : les 3 principaux en un appel ### Traduction - Traduction vers n'importe quelle langue cible ### Description d'images (Vision) - Mode **description** : décrit le contenu (max 100 mots) - Mode **titre** : 3 titres descriptifs de 3-7 mots - Supporte images locales et distantes ### Suggestion de carnet - Suggère le carnet le plus approprié lors de la création d'une note - Analyse contenu + labels existants --- ## 2. Recherche sémantique ### Recherche hybride (FTS + Vectorielle) - **Phase 1** : PostgreSQL FTS (`tsvector` / `plainto_ts_query`, index GIN) → 50 candidats - **Phase 2** : pgvector recherche cosinus-distance (index HNSW) → 50 candidats, seuil 0.3 - **Phase 3** : Reciprocal Rank Fusion (RRF, k=60) pour le classement final - Filtrage par carnet optionnel - Fallback FTS-only si vectorielle échoue ### Embeddings - pgvector(1536) dans PostgreSQL - Régénération automatique après 7 jours - Génération par lot avec `Promise.all` --- ## 3. Memory Echo — Connexions proactives ### Insights automatiques - Détecte les connexions sémantiques entre notes via similarité cosinus - Seuil de similarité : 0.75 (normal), 0.50 (démo) - Génère une explication en 1 phrase (max 15 mots) via IA - Fréquence configurable : daily / weekly / custom (3/jour) ### Feedback adaptatif - **Thumbs up** → baisse le seuil de 0.05 (plus de suggestions) - **Thumbs down** → monte le seuil de 0.15 (moins de suggestions) ### Fusion de notes - Fusion intelligente de plusieurs notes en une seule structurée - Consolidation, suppression des doublons, organisation logique ### Connexions par note - Liste toutes les connexions sémantiques pour une note avec pagination --- ## 4. Chat IA — RAG avec outils ### Chat contextuel (streaming) - Retrieval-Augmented Generation avec notes de l'utilisateur - Recherche sémantique (seuil 0.5, 0.3 pour carnet spécifique) - Prompt système en français - **Outils disponibles** : `note_search`, `note_read`, `web_search`, `web_scrape` - Max 5 steps d'outils - Supporte contexte de carnet, contexte Copilot (note en cours), images (vision) - Conversations persistées, historique 10 derniers messages - Prompts localisés (en, fr, fa, es) ### Insights de chat - Résumé synthétique ou 3 insights à partir des 5 notes les plus récentes --- ## 5. Organisation automatique ### Organisation par lot (IA3) - Classe les notes sans carnet dans les carnets existants - Guide de classification thématique (sport → Personnel, travail → Travail, etc.) - Confiance > 0.60, max 50 notes analysées - Prompts localisés en 12 langues ### Résumé de carnet (IA6) - 5 sections : Thèmes Principaux, Statistiques, Éléments Temporels, Points d'Attention, Insights Clés - Analyse jusqu'à 100 notes récentes - Prompts localisés en 5 langues --- ## 6. Agents IA — 6 types ### Scraper - Scrape des URLs (Jina Reader), détecte et parse les flux RSS - Synthèse IA, extraction d'images (Cheerio + Sharp) - Placement intelligent d'images via IA - Titre généré par IA, notification par email ### Researcher - Génère des requêtes de recherche, scrape les sources - Crée une note de recherche structurée ### Monitor - Analyse les notes récentes d'un carnet - Produit des insights et connexions récurrents ### Custom - Rôle personnalisé libre avec URLs source optionnelles ### Slide Generator - Crée des présentations via `pptx_create` (PowerPoint) ou `slides_create` (HTML Reveal.js) ### Excalidraw Generator - Crée des diagrammes Excalidraw à partir d'un format simplifié - 7 types : flowchart, mindmap, architecture-cloud, org-chart, timeline, process-map, auto - Auto-layout via Dagre ### Ordonnancement - Fréquences : manual, hourly, daily, weekly, monthly - Fuseaux horaires IANA supportés --- ## 7. Génération de contenu ### PowerPoint (PptxGenJS) - 20 thèmes de couleur, 4 styles (sharp/soft/rounded/pill) - 15 layouts de slides - Pré-fetch d'images en base64 ### Slides HTML (Reveal.js) - Mêmes thèmes et layouts que PPTX - Interactif, speaker notes, cadre décoratif optionnel ### Excalidraw - Format simplifié (nodes + edges) → auto-layout Dagre - Calcul de qualité (overlaps, croisements) - Sauvegarde en DB --- ## 8. Brainstorm — Vagues de pensée ### Génération de vagues IA - 3 vagues successives : Variations → Analogies → Disruptions - Chaque vague enrichie avec contexte des notes existantes - Connexions aux notes existantes via embeddings (derived_from, opposes, extends, synthesizes, transposes) ### Enrichissement d'idées manuelles - LLM enrichit titre, description, connectionToSeed, noveltyScore - Placement sémantique auto : embedding → similarité cosinus → meilleur parent ### Canvas D3 interactif - Graphe radial avec 3 anneaux (vagues 1-2-3) - Drag & drop, zoom, sélection, création inline - Curseur fantôme AI pendant la génération ### Collaboration temps réel - Socket.io : curseurs live, déplacement de nœuds, activité - Partage via modèle NoteShare (email → notification → accepter/refuser) - Avatars avec présence émeraude ### Export → Note - Crée une note structurée avec résumé, vagues, connexions, notes sollicitées - Ouvre directement la note créée --- ## 9. Outils disponibles pour les agents | Outil | Description | |---|---| | `web_search` | Recherche web via SearXNG ou Brave Search | | `web_scrape` | Scraping via Jina Reader (markdown) + RSS auto-détection | | `note_search` | Recherche hybride dans les notes (sémantique + mots-clés) | | `note_read` | Lit une note par ID | | `note_create` | Crée une note (markdown, images optionnelles) | | `note_update` | Modifie titre/contenu d'une note | | `url_fetch` | Fetch d'URL avec parsing JSON/CSV/texte | | `memory_search` | Recherche dans l'historique des exécutions d'agent | | `pptx_create` | Génère un PowerPoint | | `slides_create` | Génère des slides HTML Reveal.js | | `excalidraw_create` | Génère un diagramme Excalidraw | --- ## 10. Détection de langue - Hybride : TinyLD pour notes courtes (<50 mots, ~8ms), IA pour notes longues - Mapping TinyLD → ISO 639-1, 62 langues dont le persan - 19 codes explicitement mappés + fallback --- ## Toggles utilisateur (UserAISettings) | Toggle | Fonctionnalité | |---|---| | `autoLabeling` | Tags contextuels automatiques | | `paragraphRefactor` | Reformulation de paragraphe | | `titleSuggestions` | Suggestions de titre | | `memoryEcho` | Memory Echo proactif | | `memoryEchoFrequency` | daily / weekly / custom | | `demoMode` | Seuils abaissés pour démo | | `preferredLanguage` | Langue préférée pour les agents | --- ## Chiffres - **46 fichiers IA** - **~10 500+ lignes de code** - **26 routes API IA** - **12 outils enregistrés** - **6 types d'agents** - **13 fournisseurs supportés** - **Prompts localisés** : fr, en, fa, es, de, it, pt, nl, pl, ru, ja, ko, zh, ar, hi