Logo Lanfrica

christo-alsa/madagascar-rag

Domaine:

natural language processing

Type de record:

software
Créateur:
chr
Hôte:
# Madagascar RAG Système de Retrieval-Augmented Generation répondant à des questions en français ou en anglais, exclusivement à partir du contenu de la page Wikipedia Madagascar. ## 1. Architecture ``` Question (FR/EN) │ ▼ ┌─────────────────┐ │ HybridRetriever │ dense (embeddings multilingues) + BM25 (lexical) └────────┬─────────┘ fusion par Reciprocal Rank Fusion (RRF) ▼ ┌─────────────────┐ │ Cross-encoder │ re-ranking du top-N sur la paire (question, chunk) │ reranker │ └────────┬─────────┘ ▼ ┌─────────────────┐ │ Générateur LLM │ LLM via OpenRouter (modèle gratuit), prompt │ │ strict "réponds uniquement à partir du │ │ contexte, cite la section, refuse si absent" └────────┬─────────┘ ▼ Réponse + sources + statut "trouvé / non trouvé" ``` **Ingestion (une fois, en amont)** : ``` API Wikipedia (action=parse) │ HTML rendu de l'article ▼ Nettoyage (BeautifulSoup) : suppression refs [1], sections hors périmètre (References, See also...), bruit CSS │ ▼ Chunking à deux voies : - Texte narratif -> découpage par section + sous-découpage par taille avec chevauchement - Tableaux -> "row-as-document" (une ligne = un chunk) + "table complète" en Markdown (pour les questions de synthèse) │ ▼ Chunks (JSONL) --> embeddings multilingues --> Chroma (persistant) ``` ### Arborescence ``` madagascar-rag/ ├── src/ │ ├── config.py # toute la configuration centralisée │ ├── models.py # dataclass Chunk / ChunkType │ ├── pipeline.py # façade RagPipeline (question -> réponse) │ ├── ingestion/ │ │ ├── fetch_wikipedia.py # appel API Wikipedia │ │ ├── cleaner.py # nettoyage HTML │ │ ├── chunker.py # découpage texte + tableaux │ │ └── pipeline.py # orchestration ingestion + sauvegarde JSONL │ ├── indexing/ │ │ ├── embeddings.py # wrapper modèle d'embeddings multilingue │ │ └── vector_store.py # wrapper Chroma │ ├── retrie …