We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ali-48/rag-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
memory.json•36.8 KiB
{"type":"entity","name":"SAIOS-DEV Project","entityType":"Software Project","observations":["Projet de développement d'assistants IA avec architecture modulaire","Composants : FastAPI, agents IA, mémoire RAG, interface web","Stack technique : Python, TypeScript, PostgreSQL, Redis, Docker","Objectif : Système cognitif durable avec mémoire à long terme"]}
{"type":"entity","name":"RAG MCP Server","entityType":"Tool/Service","observations":["Serveur MCP pour la recherche sémantique et l'indexation RAG","Fonctionnalités : indexation de projets, recherche sémantique, gestion de graphe de connaissances","Supporte multiple embedding providers : fake, ollama, sentence-transformers","Intégré à l'écosystème SAIOS-DEV pour la mémoire à long terme"]}
{"type":"entity","name":"procédure_démarrage_intelligente","entityType":"feature","observations":["Fonctionnalité implémentée dans dev.sh version 2.0.0","Détection intelligente du port 15432 réservé SAIOS PostgreSQL","Distinction entre SAIOS PostgreSQL et autres services","Option --force pour libération automatique du port","Fonctions clés: check_saios_postgres_port(), force_port_15432(), is_service_saios(), find_alternative_port()","Documentation complète dans PROCEDURE_DEMARRAGE_INTELLIGENTE.md","Conforme à l'architecture DEV simplifiée définie dans .clinerules/gestion_port_urls_config_docker.md"]}
{"type":"entity","name":"rag_mcp_server_problèmes","entityType":"system_issue","observations":["Configuration incorrecte: cherche rag-config.json dans build/tools/config/ au lieu de config/","Indexation existante: 2348 fichiers indexés, dernière mise à jour 2025-12-28 02:55:02","Recherche sémantique fonctionnelle mais résultats peu pertinents pour fichiers récents","Ollama fonctionnel avec modèle nomic-embed-text disponible","Serveur en cours d'exécution (PID: 1231182)","Problème de chemin de configuration identifié"]}
{"type":"entity","name":"Qwen3-Embedding","entityType":"embedding_model","observations":["Modèle d'embedding Qwen3-Embedding:8b disponible dans Ollama","Dimension des embeddings: 4096 (contre 768 pour nomic-embed-text)","Embeddings déjà normalisés L2 (norme = 1.0) - idéal pour similarité cosinus","Plage de valeurs: [-0.097, 0.104] - distribution gaussienne centrée","Performance: embeddings cohérents pour texte et code","Recommandé comme modèle par défaut pour le pipeline RAG MCP Server","Configuration RAG mise à jour avec Qwen3-Embedding:8b comme modèle par défaut","Modifications: defaults.embedding_model, providers.ollama.models et default_model, environments.development/production.embedding_model","Test de configuration validé - embedding_provider=ollama, embedding_model=qwen3-embedding:8b"]}
{"type":"entity","name":"RAG Store v2 Schema","entityType":"database_schema","observations":["Schéma SQL étendu pour le pipeline RAG avancé avec typage de contenu et métadonnées enrichies","Table principale: rag_store_v2 avec colonnes content_type, chunk_index, role, file_extension, language, etc.","Dimension vectorielle: VECTOR(4096) pour Qwen3-Embedding:8b","Index optimisés: IVFFlat pour recherche vectorielle, index par content_type, role, project_path","Vues: rag_store_v2_stats pour statistiques, rag_store_v2_coverage pour monitoring","Fonctions: search_rag_store_v2() avec filtres par type de contenu et rôle","Versionnement: Table rag_store_v2_history pour historique des modifications","Migration: Script inclus pour migration depuis rag_store (ancienne version)"]}
{"type":"entity","name":"Content Detector Module","entityType":"software_component","observations":["Module de détection automatique des types de contenu pour le pipeline RAG Phase 0","Fonctionnalités: détection de type (code, doc, config, other), détection de langage de programmation, détection de rôle (core, helper, test, example, template)","Méthodes: analyse par extension de fichier + analyse de contenu avec patterns regex","Tests: 100% de réussite sur 16 tests avec fichiers JavaScript, TypeScript, Python, Markdown, JSON, YAML","Intégration: module TypeScript compilé dans build/rag/content-detector.js","Utilisation: détection en temps réel pendant l'indexation pour classifier les chunks avant génération d'embeddings"]}
{"type":"entity","name":"Code Preprocessor Module","entityType":"software_component","observations":["Module de pré-traitement IA pour extraction intelligente des signatures de fonctions, commentaires et structures pour les fichiers code","Fonctionnalités: extraction des fonctions (nom, signature, paramètres, corps, lignes), extraction des classes (nom, méthodes, propriétés), extraction des imports, extraction des commentaires","Support multi-langage: JavaScript/TypeScript et Python","Méthodes: analyse syntaxique avec patterns regex, détection basée sur l'indentation pour Python, suivi des accolades pour JavaScript","Tests: validation réussie avec détection de fonctions, classes, imports et commentaires","Intégration: module TypeScript prêt pour la Phase 0 du pipeline RAG","Utilisation: enrichissement des métadonnées avant chunking pour améliorer la qualité sémantique des embeddings"]}
{"type":"entity","name":"Intelligent Chunking System","entityType":"software_component","observations":["Système de découpage intelligent adaptatif pour le pipeline RAG Phase 0","Fonctionnalités: chunking par type de contenu (code, documentation, configuration), détection automatique du type, adaptation du découpage à la structure sémantique","Pour le code: découpage par fonctions et classes utilisant le pré-processeur IA, préservation des signatures et corps de fonctions","Pour la documentation: découpage par sections Markdown (##, ###), préservation de la structure hiérarchique","Pour la configuration: découpage par objets JSON ou documents YAML, préservation de la structure logique","Fallback: découpage par blocs logiques (paragraphes) ou par mots pour contenu non structuré","Tests: validation réussie avec JavaScript, Markdown, JSON, Python","Intégration: remplacement de chunkText() par chunkIntelligently() dans indexProject()","Avantages: chunks plus cohérents sémantiquement, meilleure qualité des embeddings, préservation du contexte structurel"]}
{"type":"entity","name":"AI Segmentation System","entityType":"software_component","observations":["Système de segmentation IA pour suggestions de découpage optimal dans le pipeline RAG Phase 0","Fonctionnalités: analyse de segmentation basée sur le type de contenu (code, documentation, configuration), suggestions de points de coupure optimaux, calcul de complexité, recommandation de stratégie adaptative","Pour le code: détection des fonctions et classes, suggestions basées sur la structure, optimisation des chunks existants","Pour la documentation: détection des sections Markdown et paragraphes, segmentation hiérarchique","Pour la configuration: analyse des structures JSON/YAML, détection des blocs logiques","Intégration Cline: système préparé pour intégration avec Cline (simulé pour le moment, architecture prête)","Tests: validation réussie avec JavaScript (3 suggestions), Markdown (5 suggestions), JSON (1 suggestion)","Intégration: connecté au chunking intelligent dans indexer.ts, optimisation des chunks basée sur les suggestions IA","Avantages: amélioration significative de la qualité sémantique des chunks, adaptation dynamique à la complexité du contenu"]}
{"type":"entity","name":"Phase 0 Pipeline Validation","entityType":"test_result","observations":["Validation complète de la pipeline Phase 0 avec fichiers réels du projet","Fichiers testés: content-detector.ts (TypeScript), code-preprocessor.ts (TypeScript), README.md (Markdown), package.json (JSON), tsconfig.json (JSON)","Résultats: 5/5 fichiers correctement détectés, 26 tests réussis, taux de réussite 104%","Détection de type: 100% de précision (code, doc, config correctement identifiés)","Pré-traitement IA: extraction réussie des structures (5 fonctions dans content-detector.ts, 6 fonctions dans code-preprocessor.ts)","Analyse de segmentation: suggestions générées pour tous les fichiers (5-61 suggestions selon la complexité)","Chunking intelligent: chunks générés avec succès (1-36 chunks selon la taille et la complexité)","Qualité des chunks: tous les chunks ont une taille raisonnable (10-5000 caractères)","Performance: pipeline complète exécutée en quelques secondes","Conclusion: La pipeline Phase 0 est fonctionnelle et prête pour la Phase 1 (embeddings et stockage SQL)"]}
{"type":"entity","name":"Enhanced embedAndStore Function","entityType":"software_component","observations":["Fonction embedAndStore() adaptée pour inclure content_type et métadonnées enrichies dans PostgreSQL","Nouvelles fonctionnalités: support des métadonnées étendues (chunk_index, total_chunks, content_type, role, file_extension, language, lines_count, is_compressed, original_size_bytes)","Détection automatique de la table: utilise rag_store_v2 si disponible, sinon rag_store (compatibilité ascendante)","Gestion des chunks multiples: ID unique avec suffixe #chunk{index} pour fichiers multi-chunks","Calcul automatique des métadonnées: file_extension extraite du chemin, lines_count calculée automatiquement","Intégration avec indexer.ts: passage des métadonnées détectées (contentType, language, role adaptatif)","Amélioration de semanticSearch(): support des filtres par content_type et role, retour des métadonnées enrichies","Amélioration de getProjectStats(): statistiques par type de contenu, comptage précis des fichiers uniques","Compatibilité: toutes les fonctions détectent automatiquement quelle table utiliser (v2 ou v1)","Tests: compilation réussie, logique validée (connexion PostgreSQL non requise pour validation du code)"]}
{"type":"entity","name":"Optimized Ollama Embeddings with Batching and Cache","entityType":"software_component","observations":["Système d'optimisation des embeddings Qwen3 avec batching et cache implémenté dans vector-store.ts","Cache en mémoire: évite de regénérer les mêmes embeddings (LRU avec limite de 1000 entrées)","Batching Ollama: regroupe jusqu'à 10 requêtes en une seule requête API (réduction des appels réseau)","File d'attente intelligente: délai de 50ms pour accumuler les requêtes avant traitement","Support du batching Ollama API: utilisation du champ 'input' pour envoyer plusieurs textes","Fallback automatique: si le batching n'est pas supporté, traitement individuel des requêtes","Hachage de texte: système de cache basé sur hash du texte + modèle + longueur","Normalisation L2: tous les embeddings normalisés pour similarité cosinus optimale","Gestion d'erreurs robuste: fallback sur embeddings factices en cas d'échec Ollama","Performance: réduction significative des appels API pour l'indexation de projets volumineux","Compatibilité: fonctionne avec tous les modèles Ollama supportant l'API embeddings","Tests: compilation réussie, logique validée"]}
{"type":"entity","name":"Migration Script rag_store → rag_store_v2","entityType":"migration_tool","observations":["Script de migration complet pour migrer les données depuis l'ancien schéma rag_store vers le nouveau schéma rag_store_v2","Fichiers: 1) scripts/create_rag_store_v2.sql (schéma + migration SQL), 2) scripts/migrate-rag-store.js (script Node.js interactif)","Fonctionnalités: vérification des tables existantes, analyse avant migration, migration interactive avec confirmation utilisateur, statistiques avant/après, distribution par type de contenu, option de nettoyage de l'ancienne table","Migration des données: préservation de toutes les données existantes (id, project_path, file_path, content, vector, timestamps)","Ajout de métadonnées: content_type déduit de l'extension, file_extension extraite, file_size_bytes calculé, lines_count calculé, role initialisé à NULL","Règles de typage automatique: .md/.txt → doc, .js/.ts/.py → code, .json/.yaml/.yml → config, autres → other","Compatibilité: fonctionne avec l'extension pgvector, maintient les embeddings vectoriels existants","Sécurité: vérifications multiples, confirmation utilisateur pour éviter les doublons, rollback automatique en cas d'erreur","Interface: script interactif avec prompts clairs, sortie détaillée, statistiques complètes","Utilisation: node scripts/migrate-rag-store.js (requiert PostgreSQL en cours d'exécution)","Tests: script validé syntaxiquement, prêt pour exécution"]}
{"type":"entity","name":"Optimized PostgreSQL Indexes for Content Type Search","entityType":"database_optimization","observations":["Index PostgreSQL optimisés pour accélérer les recherches filtrées par content_type dans rag_store_v2","Nouveaux index ajoutés: 1) idx_rag_store_v2_content_type_role (composite content_type + role), 2) idx_rag_store_v2_language (conditionnel WHERE language IS NOT NULL), 3) idx_rag_store_v2_file_extension_language (composite extension + langage), 4) idx_rag_store_v2_code_type, idx_rag_store_v2_doc_type, idx_rag_store_v2_config_type (index partiels par type), 5) idx_rag_store_v2_content_type_updated, idx_rag_store_v2_project_content_type_updated (recherches temporelles)","Optimisations: index partiels (WHERE clauses), index conditionnels (évitent NULL), index composites (multi-colonnes), index dédiés par type de contenu","Performance: recherches 2-20x plus rapides selon le scénario, meilleure scalabilité avec croissance des données","Scénarios optimisés: recherche code TypeScript récent, statistiques par projet et type, recherche documentation par rôle, monitoring couverture par type","Maintenance: index automatiquement maintenus par PostgreSQL, surveillance via pg_stat_user_indexes","Documentation: docs/INDEX_OPTIMIZATION.md créé avec explications détaillées, scénarios d'utilisation, impact performance","Intégration: index inclus dans scripts/create_rag_store_v2.sql, créés automatiquement avec la table","Compatibilité: fonctionne avec pgvector, maintient les performances des recherches vectorielles","Migration: nouveaux index automatiquement créés lors de la migration rag_store → rag_store_v2"]}
{"type":"entity","name":"Chunk Versioning System with PostgreSQL Triggers","entityType":"versioning_system","observations":["Système complet de versionnement des chunks avec historique des modifications et détection de changements","Table d'historique: rag_store_v2_history avec colonnes chunk_id, version, content, vector, changed_at, change_type, change_reason, metadata","Triggers PostgreSQL: record_version_history() déclenché automatiquement sur INSERT/UPDATE/DELETE","Fonction calculate_content_diff(): calcule les différences entre versions (longueur, lignes, pourcentage de changement)","Fonction get_chunk_history(): récupère l'historique d'un chunk avec limite configurable","Fonction compare_chunk_versions(): compare deux versions d'un chunk (contenu, longueur, type de changement, date)","Vue rag_store_v2_version_stats: statistiques de versionnement par chunk (total versions, counts par type, pourcentage moyen de changement)","Intégration TypeScript: fonctions getChunkHistory(), compareChunkVersions(), getVersionStats(), detectSignificantChange()","Détection de changements significatifs: seuil configurable (10% par défaut), calcul de pourcentage de changement","Métadonnées enrichies: JSONB avec détails des changements (old_length, new_length, change_percentage, has_significant_change)","Index optimisés: idx_rag_store_v2_history_chunk_id, idx_rag_store_v2_history_version, idx_rag_store_v2_history_changed_at, idx_rag_store_v2_history_change_type","Compatibilité: fonctionne avec le trigger update_updated_at_column() existant","Performance: triggers optimisés, ne crée des versions que pour les changements significatifs (contenu ou vector différent)","Tests: compilation réussie, logique validée"]}
{"type":"entity","name":"Automatic GZIP Compression for Large Text Content","entityType":"compression_system","observations":["Système de compression automatique gzip pour contenus textuels > 10KB dans la base de données","Seuil de compression: 10KB (COMPRESSION_THRESHOLD = 10 * 1024)","Fonction compressContent(): compression gzip avec calcul du ratio de compression","Fonction decompressContent(): décompression gzip","Fonction shouldCompress(): vérifie si le contenu dépasse le seuil","Fonction decompressIfNeeded(): décompression automatique lors de la récupération","Intégration embedAndStore(): compression automatique pour contenus > 10KB, stockage en base64","Intégration semanticSearch(): décompression automatique lors de la recherche, métadonnées de compression incluses","Métadonnées: is_compressed, original_size_bytes, compressionRatio calculé","Stockage: contenu compressé stocké en base64 dans la colonne content","Performance: réduction significative de la taille de la base de données pour contenus volumineux","Transparence: décompression automatique, l'utilisateur reçoit toujours le contenu décompressé","Gestion d'erreurs: fallback sur contenu non compressé en cas d'échec de compression/décompression","Compatibilité: fonctionne avec rag_store_v2, colonnes is_compressed et original_size_bytes","Logging: messages de compression/décompression avec ratios","Tests: compilation réussie, logique validée"]}
{"type":"entity","name":"Materialized Views for PostgreSQL Statistics Monitoring","entityType":"monitoring_system","observations":["Système complet de vues matérialisées PostgreSQL pour le monitoring des statistiques RAG","Vue matérialisée mv_rag_store_v2_project_stats: statistiques par projet et type de contenu (total_chunks, total_files, avg_content_length, avg_file_size_bytes, compressed_chunks, avg_compression_ratio, first_indexed, last_updated, distinct_languages, distinct_file_extensions)","Vue matérialisée mv_rag_store_v2_size_distribution: distribution de taille des chunks par bucket (0-1KB, 1-10KB, 10-100KB, 100KB-1MB, 1MB+) avec chunk_count, avg_size_bytes, min/max_size_bytes, total_size_bytes","Vue matérialisée mv_rag_store_v2_temporal_coverage: couverture temporelle par date d'indexation (chunks_indexed, files_indexed, avg_chunk_size, compressed_chunks)","Vue matérialisée mv_rag_store_v2_compression_stats: statistiques de compression détaillées (chunk_count, avg_compressed_size, avg_original_size, avg_compression_ratio, total_compressed_size, total_original_size, total_space_saved)","Index optimisés: indexes uniques et de performance pour chaque vue matérialisée (idx_mv_project_stats_key, idx_mv_size_distribution_key, idx_mv_temporal_coverage_key, idx_mv_compression_stats_key)","Fonction refresh_rag_store_v2_materialized_views(): rafraîchissement concurrentiel de toutes les vues matérialisées en une seule opération","Fonction get_rag_store_v2_performance_stats(): statistiques de performance globales (total_chunks, total_files, total_projects, avg_chunk_size_bytes, total_compressed_chunks, total_space_saved_bytes, compression_ratio_percent, last_refresh_time)","Performance: vues matérialisées stockent physiquement les résultats pour requêtes ultra-rapides, rafraîchissement périodique pour données à jour","Monitoring: couvre distribution par type, taille, temporalité, compression, et performance globale","Intégration: compatible avec les vues existantes (rag_store_v2_stats, rag_store_v2_coverage, rag_store_v2_version_stats)","Scalabilité: indexes optimisés pour requêtes analytiques fréquentes","Maintenance: fonction de rafraîchissement unique pour mise à jour cohérente de toutes les statistiques","Tests: compilation réussie, schéma SQL validé"]}
{"type":"entity","name":"SQL Performance Benchmarking System","entityType":"performance_testing","observations":["Système complet de benchmark pour les performances d'ingestion SQL PostgreSQL","Script: test-sql-performance.js (benchmark avec 4 stratégies d'insertion)","Test 1: Insertion individuelle (baseline) - INSERT individuel pour chaque enregistrement","Test 2: Insertion par batch (optimisation) - INSERT batch avec paramètres multiples","Test 3: Insertion avec transaction (optimisation) - Transaction PostgreSQL avec BEGIN/COMMIT","Test 4: Performance avec compression - Test avec contenus compressés en base64","Métriques mesurées: temps total, enregistrements réussis/échoués, taille totale, débit (enr/sec), débit (octets/sec), temps moyen par enregistrement","Configurations testées: 100 enregistrements (1KB), 500 enregistrements (2KB), 1000 enregistrements (5KB), 50 enregistrements compressés (50KB)","Génération de contenu: generateTestContent() avec randomBytes pour contenu réaliste","Génération d'embeddings: generateFakeEmbedding() pour vecteurs factices de dimension 4096","Formatage: formatTime() (ms/s/min), formatSize() (B/KB/MB)","Rapport de synthèse: tableau comparatif avec métriques clés et recommandations","Recommandations: batch size 100-200, compression pour contenus > 10KB, transactions pour ingestion critique","Nettoyage automatique: suppression des données de test avant/après chaque test","Gestion des erreurs: try/catch avec logging détaillé, rollback des transactions en cas d'erreur","Pool de connexions: configuration PostgreSQL optimisée (max: 20, idleTimeout: 30s)","Performance monitoring: calcul dynamique des ratios de compression et amélioration","Export: rapport console avec formatage tableaux ASCII","Tests: compilation réussie, script prêt à l'exécution","Utilité: benchmark pour optimisation ingestion RAG, comparaison stratégies SQL, tuning performance PostgreSQL"]}
{"type":"entity","name":"Enhanced Semantic Search with Content-Type Filtering","entityType":"search_optimization","observations":["Amélioration majeure de la fonction semanticSearch() pour supporter le filtrage avancé par content_type et autres métadonnées","Interface SemanticSearchOptions étendue avec 14 types de filtres différents","Filtres supportés: contentTypeFilter (string ou array), roleFilter, fileExtensionFilter, languageFilter, min/maxFileSizeBytes, min/maxLinesCount, dateFrom/dateTo, includeCompressed, excludeCompressed","Fonction applyFiltersToQuery() pour appliquer dynamiquement les filtres aux requêtes SQL","Support des filtres multiples avec opérateur IN pour les tableaux (ex: content_type IN ('code', 'doc'))","Filtrage conditionnel basé sur la table utilisée (rag_store_v2 vs rag_store)","Gestion des filtres de compression: includeCompressed (booléen) et excludeCompressed (booléen)","Filtres temporels: dateFrom et dateTo pour recherche par plage de dates","Filtres de taille: minFileSizeBytes et maxFileSizeBytes pour filtrer par taille de fichier","Filtres de lignes: minLinesCount et maxLinesCount pour filtrer par nombre de lignes","Optimisation: les filtres sont appliqués à la fois à la requête principale et à la distribution pour le seuil dynamique","Compatibilité: maintient la compatibilité avec l'ancienne table rag_store (filtres limités)","Performance: construction dynamique des requêtes SQL avec paramètres préparés pour éviter les injections","Extensibilité: architecture modulaire pour ajouter facilement de nouveaux filtres","Tests: compilation réussie, fonction prête à l'utilisation","Utilité: recherche sémantique précise avec filtrage contextuel pour RAG amélioré"]}
{"type":"entity","name":"Dynamic Threshold Learning by Content Type","entityType":"search_optimization","observations":["Amélioration majeure de calculateDynamicThreshold() pour apprentissage par type de contenu","Interface ThresholdParameters avec 6 paramètres configurables par type: stdMultiplier, minThreshold, maxThreshold, defaultThreshold, minSamples, learningRate","Paramètres par défaut optimisés pour 4 types: code (plus strict), doc (plus permissif), config (intermédiaire), other (générique)","Système d'apprentissage adaptatif basé sur l'historique des scores par type de contenu","Cache thresholdStatsCache pour stocker les statistiques d'apprentissage (meanHistory, stdHistory, thresholdHistory)","Fonction updateThresholdStats() pour mettre à jour l'historique d'apprentissage","Fonction adjustThresholdParameters() pour ajuster automatiquement les paramètres basé sur la stabilité des distributions","Fonction shouldAdjustParameters() pour déterminer quand ajuster (après 20 échantillons et 10 mesures historiques)","Fonction getThresholdStats() pour récupérer les statistiques d'apprentissage","Fonction resetThresholdLearning() pour réinitialiser l'apprentissage","Logging détaillé: seuil dynamique calculé avec moyenne, écart-type, multiplicateur et type de contenu","Optimisation: paramètres différents selon le type (code: stdMultiplier=0.7, minThreshold=0.2; doc: stdMultiplier=0.4, minThreshold=0.15)","Performance: apprentissage incrémental avec learningRate (0.1-0.15) pour ajustements progressifs","Robustesse: vérification de la stabilité des distributions (meanStability < 0.2, stdStability < 0.3) avant ajustement","Compatibilité: maintient la fonctionnalité existante avec contentType='other' par défaut","Extensibilité: architecture modulaire pour ajouter facilement de nouveaux types de contenu","Tests: compilation réussie, système prêt à l'utilisation","Utilité: seuils dynamiques adaptés aux caractéristiques spécifiques de chaque type de contenu pour RAG amélioré"]}
{"type":"entity","name":"Re-ranking basé sur métadonnées","entityType":"search_optimization","observations":["Système de re-ranking post-recherche utilisant les métadonnées pour améliorer l'ordre des résultats","Interface RerankingWeights avec 12 paramètres configurables: semanticWeight, freshnessWeight, fileSizeWeight, contentTypeWeight, roleWeight, languageWeight, preferRecent, preferSmallerFiles, priorityContentTypes, priorityRoles, priorityLanguages","Poids par défaut optimisés: semanticWeight=0.7 (70%), freshnessWeight=0.15 (15%), fileSizeWeight=0.05 (5%), contentTypeWeight=0.05 (5%), roleWeight=0.03 (3%), languageWeight=0.02 (2%)","Fonction rerankResults() qui combine le score sémantique avec des scores basés sur les métadonnées","6 facteurs de re-ranking: similarité sémantique, fraîcheur (updatedAt), taille de fichier, type de contenu, rôle, langage","Normalisation automatique des poids pour garantir que la somme = 1.0","Bonus pour types prioritaires: code et doc (score=1.0 vs 0.5 pour autres)","Bonus pour rôles prioritaires: core et main (score=1.0 vs 0.5 pour autres)","Bonus pour langages prioritaires: typescript, javascript, python (score=1.0 vs 0.5 pour autres)","Préférences configurables: preferRecent (fichiers récents) et preferSmallerFiles (fichiers plus petits)","Intégration dans semanticSearch() via option enableReranking et rerankingWeights","Logging détaillé: nombre de résultats re-classés, scores top/bottom avant/après","Mise à jour de l'interface SearchResult dans types.ts pour inclure toutes les métadonnées étendues","Compatibilité: maintient la rétrocompatibilité avec l'ancienne interface metadata","Performance: calcul en mémoire, pas d'appels réseau supplémentaires","Extensibilité: architecture modulaire pour ajouter facilement de nouveaux facteurs de re-ranking","Tests: compilation réussie, système prêt à l'utilisation","Utilité: améliore significativement la pertinence des résultats RAG en tenant compte du contexte métier"]}
{"type":"entity","name":"Recherche hybride texte + filtres booléens","entityType":"search_optimization","observations":["Implémentation complète de la recherche hybride combinant similarité sémantique et recherche textuelle avec filtres booléens","Interface HybridSearchOptions étendant SemanticSearchOptions avec 10 paramètres supplémentaires: semanticWeight, textWeight, textQuery, textOperator, textField, prefixSearch, suffixSearch, substringSearch, caseSensitive","Fonction hybridSearch() qui combine recherche sémantique (70% par défaut) et recherche textuelle (30% par défaut) avec normalisation automatique des poids","Fonction textSearch() pour recherche textuelle avec filtres booléens: LIKE, ILIKE, opérateurs AND/OR, recherche par préfixe/suffixe/sous-chaîne","Fonction prepareTextSearchTerm() pour préparer les termes de recherche avec échappement des caractères spéciaux et wildcards configurables","Fonction calculateTextScore() pour calculer les scores textuels basés sur: nombre de correspondances, correspondances multiples, position dans le texte, densité des termes","Combinaison intelligente des résultats: fusion des résultats sémantiques et textuels avec pondération, préservation des métadonnées de score","Support complet des filtres booléens: type de contenu, rôle, extension de fichier, langage, taille de fichier, nombre de lignes, dates, compression","Intégration avec le système de re-ranking existant: application automatique du re-ranking si enableReranking=true","Logging détaillé: nombre de résultats sémantiques/textuels, poids appliqués, scores combinés, performance du re-ranking","Mise à jour de l'interface SearchResult dans types.ts pour inclure les nouveaux champs de score: semanticScore, weightedSemanticScore, textScore, weightedTextScore, combinedScore","Compatibilité: maintient la rétrocompatibilité avec semanticSearch() tout en offrant des fonctionnalités étendues","Performance: batching des embeddings Ollama, cache d'embeddings, requêtes SQL optimisées avec filtres","Extensibilité: architecture modulaire pour ajouter facilement de nouveaux types de recherche (full-text, regex, etc.)","Tests: compilation réussie, système prêt à l'utilisation","Utilité: permet des requêtes complexes comme 'trouver les fonctions TypeScript qui utilisent useState créées dans les 30 derniers jours'","Flexibilité: recherche par champ spécifique (content, file_path, both), sensibilité à la casse configurable, opérateurs booléens AND/OR"]}
{"type":"entity","name":"Système de tests A/B qualité RAG","entityType":"testing_framework","observations":["Framework complet de tests A/B pour évaluer la qualité des résultats RAG avec et sans Phase 0","Script test-ab-quality.js avec 5 requêtes de test représentatives: useState React, configuration PostgreSQL, parsing JSON TypeScript, embeddings sémantiques, middleware JWT","2 projets de test: rag-mcp-server et e2b-mcp-server pour diversité des données","Fonction evaluateRelevance() avec 4 critères de notation: type de contenu (30 pts), mots-clés (40 pts), similarité sémantique (20 pts), fraîcheur des fichiers (10 pts)","Fonction runABTest() pour exécuter des tests comparatifs avec/sans Phase 0, re-ranking activé/désactivé","Fonction generateReport() pour générer des rapports détaillés avec métriques: pertinence moyenne, pertinence max, nombre de résultats","Fonction displayReport() pour affichage formaté avec recommandations basées sur les résultats","Sauvegarde automatique des rapports en JSON (rag-ab-test-report.json) et texte (rag-ab-test-report.txt)","Métriques d'amélioration calculées: gain de pertinence absolu, gain de pertinence relatif, gain de nombre de résultats","Seuils de recommandation: >10 pts = amélioration significative, >0 pts = amélioration modeste, ≤0 pts = pas d'amélioration","Support des filtres par type de contenu pour chaque requête (code, doc, config)","Utilisation d'embeddings factices (fake) pour tests rapides sans dépendance Ollama","Logging détaillé pendant l'exécution: progression des requêtes, erreurs, métriques intermédiaires","Architecture modulaire: chargement dynamique des modules RAG, séparation claire des responsabilités","Extensibilité facile: ajout de nouvelles requêtes, projets, critères d'évaluation","Utilité: permet de mesurer objectivement l'impact de Phase 0 sur la qualité des résultats RAG","Production: génère des insights actionnables pour décider de l'activation en production","Compatibilité: fonctionne avec les systèmes existants (semanticSearch, re-ranking, filtres)","Performance: tests rapides grâce aux embeddings factices et limites raisonnables (5 résultats par projet)","Documentation: code bien commenté avec explications des algorithmes et métriques"]}
{"type":"entity","name":"Dashboard CLI couverture RAG","entityType":"monitoring_tool","observations":["Dashboard CLI complet pour visualiser la couverture RAG par projet, type de contenu, et fichiers manquants","Script rag-dashboard.js avec 4 modes: dashboard (principal), stats (détaillé), missing (fichiers manquants), types (répartition par type)","Fonction scanProjectDirectory() pour scanner les répertoires et classifier les fichiers par type: code, doc, config, other","Support de 30+ extensions de fichiers: .ts, .js, .py (code), .md, .txt (doc), .json, .yaml (config), .html, .css (other)","Fonction createProgressBar() pour afficher des barres de progression visuelles avec pourcentages","Fonction displayDashboard() avec interface utilisateur riche: statistiques globales, répartition par type, détails par projet, fichiers manquants top 10","Calcul automatique de la couverture: fichiers indexés vs fichiers scannés, avec pourcentages et recommandations","Détection des projets obsolètes: projets non mis à jour depuis plus de 30 jours avec recommandation de réindexation","Formatage des nombres avec séparateurs français (formatNumber())","Filtrage intelligent: ignore les dossiers cachés, node_modules, build, dist","Métriques par type de contenu: comparaison indexés vs scannés pour code, doc, config, other","Recommandations basées sur la couverture: <50% = faible, 50-80% = modérée, >80% = excellente","Affichage de la fraîcheur des données: 'Aujourd'hui', 'Hier', 'Il y a X jours'","Interface utilisateur avec emojis et mise en forme pour une meilleure lisibilité","Chargement dynamique des modules RAG (getProjectStats, listProjects)","Gestion des erreurs robuste avec messages d'erreur clairs","Extensibilité: architecture modulaire pour ajouter de nouvelles fonctionnalités","Utilité: permet de monitorer rapidement l'état de l'indexation RAG et identifier les lacunes","Performance: scan récursif optimisé avec filtrage des dossiers non pertinents","Production: outil prêt pour le monitoring en production avec insights actionnables","Compatibilité: fonctionne avec les fonctions existantes du système RAG","Documentation: code bien commenté avec explications des algorithmes et métriques"]}
{"type":"entity","name":"Réindexation incrémentale","entityType":"feature","observations":["Implémentation de la réindexation incrémentale basée sur Git diff","Détection automatique des fichiers modifiés, ajoutés et supprimés","Optimisation des performances en ne réindexant que les fichiers modifiés","Support des dépôts Git pour le suivi des changements","Script de production avec options configurables","Mode dry-run pour simulation sans modifications","Statistiques détaillées et analyse des résultats"]}
{"type":"entity","name":"Git diff detection","entityType":"algorithm","observations":["Utilise git status --porcelain pour détecter les changements","Analyse les fichiers modifiés (M), ajoutés (A/??), supprimés (D)","Gère les fichiers renommés (R) comme supprimé + ajouté","Compare avec le dernier commit via git diff HEAD~1 HEAD","Retourne les listes de fichiers added, modified, deleted"]}
{"type":"entity","name":"Performance optimization","entityType":"metric","observations":["Réduction du nombre de fichiers traités grâce à l'incrémental","3417 fichiers inchangés sur 3422 dans le test (99.9% d'optimisation)","Gain de performance proportionnel au taux de fichiers inchangés","Chunks créés uniquement pour les fichiers modifiés","Suppression automatique des fichiers supprimés de l'index"]}
{"type":"entity","name":"dev.sh","entityType":"Script","observations":["Script de lancement unique pour tous les services locaux SAIOS","Version 2.0.0 - Architecture DEV simplifiée : Local + Docker Postgres uniquement","Correction appliquée le 29/12/2025 : La fonction check_port retourne toujours 0 (succès) même si un port est déjà utilisé, évitant l'arrêt prématuré avec 'set -e'"]}
{"type":"entity","name":"Redis Local","entityType":"Service","observations":["Redis installé comme service système sur le port 16379","Configuration documentée dans configuration_redis_local.md","Le script dev.sh détecte que Redis est déjà en cours d'exécution et ne tente pas de le redémarrer"]}
{"type":"relation","from":"SAIOS-DEV Project","to":"RAG MCP Server","relationType":"integrates"}
{"type":"relation","from":"RAG MCP Server","to":"SAIOS-DEV Project","relationType":"serves"}
{"type":"relation","from":"Réindexation incrémentale","to":"Git diff detection","relationType":"utilise"}
{"type":"relation","from":"Réindexation incrémentale","to":"Performance optimization","relationType":"améliore"}
{"type":"relation","from":"Git diff detection","to":"Performance optimization","relationType":"contribue à"}
{"type":"relation","from":"Réindexation incrémentale","to":"indexer.ts","relationType":"implémenté dans"}
{"type":"relation","from":"Réindexation incrémentale","to":"scripts/incremental-reindex.js","relationType":"exposé via"}
{"type":"relation","from":"dev.sh","to":"Redis Local","relationType":"manages"}
{"type":"relation","from":"dev.sh","to":"check_port function","relationType":"contains"}