#
Documentation mgrep
Bienvenue dans la documentation complète de mgrep ! 📚
#
Ordre de lecture recommandé
Si vous découvrez mgrep, lisez dans cet ordre :
- Embeddings - Comprendre comment le code est converti en vecteurs
- Modèles - Différences entre CodeBERT, Jina, MPNet, etc.
- Architecture - Vue d'ensemble du système
- Compromis - Trade-offs précision vs performance
- Cas d'usage - Configurations pratiques selon vos besoins
#
Vue d'ensemble des documents
#
1-embeddings.md
Pour qui : Tout le monde Temps de lecture : 10 min Contenu :
- Qu'est-ce qu'un embedding ?
- Comment ça marche dans mgrep ?
- Dimensions (384 vs 768)
- Le problème du "mean pooling"
Ă€ retenir :
Un embedding transforme du code en vecteur de nombres. La similarité entre vecteurs = similarité sémantique du code.
#
2-modeles.md
Pour qui : Utilisateurs qui veulent optimiser la qualité Temps de lecture : 15 min Contenu :
- 3 types de modèles (BERT+pooling, natifs génériques, spécialisés code)
- Comparaison détaillée CodeBERT vs Jina vs MPNet
- Pourquoi Jina Code est recommandé
- Tests et résultats attendus
Ă€ retenir :
Jina Code (
jinaai/jina-embeddings-v2-base-code) est le meilleur modèle pour mgrep. CodeBERT avec mean pooling est sous-optimal.
#
3-compromis.md
Pour qui : Utilisateurs avancés, optimisation Temps de lecture : 20 min Contenu :
- Taille des chunks (10 vs 20 vs 50 lignes)
- Overlap : avantages et coûts
- Modèles : vitesse vs qualité
- Configurations selon taille du projet
Ă€ retenir :
Chaque choix a un trade-off. La config actuelle (20 lignes, Jina Code, pas d'overlap) est un bon équilibre pour la plupart des cas.
#
4-architecture.md
Pour qui : Développeurs qui veulent contribuer Temps de lecture : 25 min Contenu :
- Flow complet indexation → recherche
- RĂ´le de chaque composant (Tree-sitter, Elasticsearch, etc.)
- Schémas et exemples de code
- Points d'optimisation possibles
Ă€ retenir :
mgrep = Tree-sitter (parse) + Chunking (découpe) + Sentence-transformers (embeddings) + Elasticsearch (index/search)
#
5-cas-usage.md
Pour qui : Tous les utilisateurs Temps de lecture : 15 min Contenu :
- 7 cas d'usage concrets (exploration, debug, refactoring, etc.)
- Configuration recommandée pour chaque cas
- Workflows pratiques
- Scripts d'exemple
Ă€ retenir :
Adapter la configuration selon votre besoin : debug = rapide, refactoring = overlap 50%, exploration = k=10
#
Quick Start
#
Installation
# 1. Cloner et installer
git clone <repo>
cd mgrep
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 2. Configurer
cp .env.example .env
# Éditer .env avec vos credentials Elasticsearch
# 3. Créer l'index
python recreate_index.py
# 4. Indexer votre code
python watcher.py /path/to/your/code
#
Première recherche
# Recherche simple
python sgrep.py "user authentication"
# Avec affichage du code
python sgrep.py "database connection" --show-code
# Plus de résultats
python sgrep.py "error handling" -k 10
#
FAQ
#
Quel modèle utiliser ?
- Meilleure qualité :
jinaai/jina-embeddings-v2-base-code - Compromis :
all-mpnet-base-v2 - Le plus rapide :
all-MiniLM-L6-v2
Configuration dans .env :
EMBEDDING_MODEL=jinaai/jina-embeddings-v2-base-code
#
Chunks de quelle taille ?
- Très précis : 15 lignes
- Équilibré (recommandé) : 20 lignes
- Rapide : 30-50 lignes
Modifier dans watcher.py :
MAX_CHUNK_LINES = 20 # Ligne 44
#
Faut-il de l'overlap ?
OUI si :
- Refactoring (besoin de tout trouver)
- Projet complexe avec fonctions longues
NON si :
- Projet petit/moyen
- Contraintes de stockage
- Première utilisation (tester sans d'abord)
#
Pourquoi le message "mean pooling" ?
C'est un avertissement que CodeBERT n'est pas optimal. Utilisez Jina Code ou MPNet Ă la place.
Voir : 2-modeles.md pour l'explication complète.
#
Les résultats ne sont pas pertinents ?
Checklist :
- ✅ Modèle utilisĂ© : Jina Code ou MPNet ? (pas CodeBERT)
- ✅ Chunks : 20 lignes max ?
- ✅ Index rĂ©cent :
python watcher.pya tournĂ© ? - ✅ RequĂŞte : assez spĂ©cifique ? ("auth" vs "user authentication")
Voir : 5-cas-usage.md pour des exemples de requĂŞtes efficaces.
#
Fichiers de référence
En plus de cette documentation :
- ../CLAUDE.md - Guide pour Claude Code (commandes, architecture)
- ../todo.txt - Roadmap et améliorations futures
- ../limitations.txt - Limitations actuelles du chunking
- ../.env.example - Template de configuration
#
Contribuer
Pour améliorer cette documentation :
- Les docs sont en Markdown dans
docs/ - Chaque fichier = 1 sujet
- Garder un ton pédagogique avec exemples concrets
- Ajouter des schémas ASCII quand utile
#
Support
- 📖 Lire cette documentation
- 🐛 Issues : problèmes techniques
- 💡 Discussions : questions, suggestions
Bonne lecture ! 🚀