Spaces:
Running
Running
Déploiement automatique depuis GitLab CI
Browse files- README.md +88 -77
- vector_db/document_chunks.pkl +2 -2
- vector_db/faiss_index.idx +1 -1
README.md
CHANGED
|
@@ -23,63 +23,7 @@ Ce projet implémente un assistant virtuel basé sur le modèle Mistral, utilisa
|
|
| 23 |
- 📊 **Évaluation des performances** du RAG ou du RAG+SQL avec Ragas (Context Precision, Context Recall, Answer Relevancy, Faithfulness)
|
| 24 |
- 🧑💻 **Interface utilisateur** avec Streamlit pour une interaction facile
|
| 25 |
|
| 26 |
-
##
|
| 27 |
-
|
| 28 |
-
Cette application est déployable en un seul **Docker Space** qui embarque à la fois le serveur PostgreSQL et le dashboard Streamlit.
|
| 29 |
-
|
| 30 |
-
### Architecture du conteneur HF Spaces
|
| 31 |
-
|
| 32 |
-
```
|
| 33 |
-
┌─────────────────────────────────────────┐
|
| 34 |
-
│ HF Docker Space │
|
| 35 |
-
│ │
|
| 36 |
-
│ ┌─────────────┐ ┌─────────────────┐ │
|
| 37 |
-
│ │ PostgreSQL │ │ Streamlit │ │
|
| 38 |
-
│ │ port 5432 │◄───│ port 7860 │ │
|
| 39 |
-
│ │ (interne) │ │ (HF exposé) │ │
|
| 40 |
-
│ └─────────────┘ └─────────────────┘ │
|
| 41 |
-
│ │
|
| 42 |
-
│ start.sh : init PG → démarre PG → exec │
|
| 43 |
-
│ streamlit │
|
| 44 |
-
└─────────────────────────────────────────┘
|
| 45 |
-
```
|
| 46 |
-
|
| 47 |
-
### Fichiers ajoutés pour HF Spaces
|
| 48 |
-
|
| 49 |
-
| Fichier | Rôle |
|
| 50 |
-
|---------|------|
|
| 51 |
-
| `Dockerfile` | Image combinée PostgreSQL + Streamlit (port 7860) |
|
| 52 |
-
| `start.sh` | Init cluster PG, création schéma/utilisateurs, démarrage des services |
|
| 53 |
-
|
| 54 |
-
### Procédure de déploiement
|
| 55 |
-
|
| 56 |
-
1. **Créer un nouveau Space** sur [huggingface.co/spaces](https://huggingface.co/spaces) :
|
| 57 |
-
- SDK : **Docker**
|
| 58 |
-
- Visibilité : Public ou Private
|
| 59 |
-
|
| 60 |
-
2. **Pousser le dépôt** vers le Space HF :
|
| 61 |
-
```bash
|
| 62 |
-
# Ajouter le remote HF
|
| 63 |
-
git remote add hf https://huggingface.co/spaces/<VOTRE_USERNAME>/<NOM_DU_SPACE>
|
| 64 |
-
git push hf main
|
| 65 |
-
```
|
| 66 |
-
|
| 67 |
-
3. **Configurer les Secrets** dans *Settings → Repository secrets* :
|
| 68 |
-
|
| 69 |
-
| Secret | Description |
|
| 70 |
-
|--------|-------------|
|
| 71 |
-
| `MISTRAL_API_KEY` | Clé API Mistral (obligatoire) |
|
| 72 |
-
| `POSTGRES_PASSWORD` | Mot de passe du superutilisateur PostgreSQL `admin` |
|
| 73 |
-
| `PG_USER_1_PASSWORD` | Mot de passe de l'utilisateur read-only `user_1` |
|
| 74 |
-
| `LOGFIRE_TOKEN` | Token Logfire (optionnel) |
|
| 75 |
-
|
| 76 |
-
4. **Attendre le build** (~3-5 min) : HF Spaces construit l'image et démarre les services automatiquement.
|
| 77 |
-
|
| 78 |
-
> ⚠️ **Persistance des données** : HF Spaces (tier gratuit) ne garantit pas la persistance des volumes. Les données PostgreSQL sont recréées à chaque redémarrage du Space via `start.sh`. Pour la persistance, utilisez le [stockage persistant HF](https://huggingface.co/docs/hub/spaces-storage) ou un service PostgreSQL externe (ex. [Supabase](https://supabase.com), [Neon](https://neon.tech)).
|
| 79 |
-
|
| 80 |
-
---
|
| 81 |
-
|
| 82 |
-
## Prérequis
|
| 83 |
|
| 84 |
- Ubuntu 22.04+ ou n'importe quel système d'exploitation compatible
|
| 85 |
- Python 3.11+
|
|
@@ -87,7 +31,7 @@ Cette application est déployable en un seul **Docker Space** qui embarque à la
|
|
| 87 |
- Clé API Mistral (obtenue sur [console.mistral.ai](https://console.mistral.ai/))
|
| 88 |
- Clé API Logfire (obtenue sur [logfire.com](https://logfire.com/))
|
| 89 |
|
| 90 |
-
## Installation
|
| 91 |
|
| 92 |
1. **Cloner le dépôt**
|
| 93 |
|
|
@@ -170,24 +114,30 @@ Ce script va :
|
|
| 170 |
|
| 171 |
```
|
| 172 |
.
|
| 173 |
-
├── .gitignore
|
| 174 |
-
├── .env
|
| 175 |
-
├──
|
| 176 |
-
├──
|
| 177 |
-
├──
|
| 178 |
-
├──
|
| 179 |
-
├──
|
| 180 |
-
├──
|
| 181 |
-
├──
|
| 182 |
-
├──
|
| 183 |
-
├──
|
| 184 |
-
├──
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
|
| 192 |
```
|
| 193 |
|
|
@@ -224,6 +174,8 @@ Ce script va :
|
|
| 224 |
Exécutez le script pour charger les données Excel dans la base de données PostgreSQL :
|
| 225 |
|
| 226 |
```bash
|
|
|
|
|
|
|
| 227 |
python load_excel_to_db.py
|
| 228 |
```
|
| 229 |
|
|
@@ -240,8 +192,8 @@ et **lancez le script 'utils/indexer.py' pour indexer tous les documents**. Puis
|
|
| 240 |
|
| 241 |
```bash
|
| 242 |
sudo systemctl start postgresql
|
|
|
|
| 243 |
python evaluate_ragas.py
|
| 244 |
-
sudo systemctl stop postgresql
|
| 245 |
```
|
| 246 |
|
| 247 |
Ce script va :
|
|
@@ -263,6 +215,8 @@ et **lancez le script 'utils/indexer.py' pour indexer sans les documents Excel**
|
|
| 263 |
Puis lancez le script d'évaluation :
|
| 264 |
|
| 265 |
```bash
|
|
|
|
|
|
|
| 266 |
python evaluate_ragas.py
|
| 267 |
```
|
| 268 |
|
|
@@ -283,6 +237,8 @@ Ce script va :
|
|
| 283 |
### 5. Lancer l'application
|
| 284 |
|
| 285 |
```bash
|
|
|
|
|
|
|
| 286 |
streamlit run MistralChat.py
|
| 287 |
```
|
| 288 |
|
|
@@ -334,3 +290,58 @@ Vous pouvez personnaliser l'application en modifiant les paramètres dans `utils
|
|
| 334 |
- les prompts utilisés pour le RAG et l'agent SQL
|
| 335 |
- etc.
|
| 336 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
- 📊 **Évaluation des performances** du RAG ou du RAG+SQL avec Ragas (Context Precision, Context Recall, Answer Relevancy, Faithfulness)
|
| 24 |
- 🧑💻 **Interface utilisateur** avec Streamlit pour une interaction facile
|
| 25 |
|
| 26 |
+
## Installation en local - Prérequis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
- Ubuntu 22.04+ ou n'importe quel système d'exploitation compatible
|
| 29 |
- Python 3.11+
|
|
|
|
| 31 |
- Clé API Mistral (obtenue sur [console.mistral.ai](https://console.mistral.ai/))
|
| 32 |
- Clé API Logfire (obtenue sur [logfire.com](https://logfire.com/))
|
| 33 |
|
| 34 |
+
### Installation
|
| 35 |
|
| 36 |
1. **Cloner le dépôt**
|
| 37 |
|
|
|
|
| 114 |
|
| 115 |
```
|
| 116 |
.
|
| 117 |
+
├── .gitignore # Fichier pour ignorer les fichiers et dossiers non pertinents dans le dépôt Git
|
| 118 |
+
├── .env # Fichier pour stocker les variables d'environnement (clés API, mots de passe, etc.)
|
| 119 |
+
├── Dockerfile # Image Docker combinée PostgreSQL + Streamlit (port 7860)
|
| 120 |
+
├── evaluate_ragas.py # Script pour évaluer les performances du RAG ou du RAG+SQL avec Ragas
|
| 121 |
+
├── indexer.py # Script pour indexer les documents
|
| 122 |
+
├── load_excel_to_db.py # Script pour charger les données Excel dans la base de données PostgreSQL
|
| 123 |
+
├── MistralChat.py # Application Streamlit principale
|
| 124 |
+
├── Notebook_Eval_Ragas.ipynb # Jupyter Notebook pour l'évaluation des performances du RAG ou du RAG+SQL avec Ragas
|
| 125 |
+
├── README.md # Documentation du projet
|
| 126 |
+
├── requirements_docker.txt # Dépendances Python pour le déploiement Docker (HF Spaces)
|
| 127 |
+
├── requirements_local.txt # Dépendances Python pour l'installation locale
|
| 128 |
+
├── start.sh # Script d'initialisation PostgreSQL et de démarrage des services
|
| 129 |
+
├── Docs/ # Diagrammes fonctionnels et schéma relationnel de la base de données
|
| 130 |
+
├── inputs/ # Dossier pour les documents sources (PDF, XLSX, etc.)
|
| 131 |
+
├── Ragas_results/ # Dossier pour les résultats d'évaluation du RAG ou du RAG+SQL avec Ragas
|
| 132 |
+
├── SQL_db/ # Scripts SQL de création du schéma relationnel
|
| 133 |
+
├── vector_db/ # Dossier pour l'index FAISS et les chunks vectorisés
|
| 134 |
+
├── wheels/ # Packages Python pré-compilés (ex. mistralai)
|
| 135 |
+
└── utils/ # Modules utilitaires
|
| 136 |
+
├── config.py # Configuration de l'application
|
| 137 |
+
├── data_loader.py # Extraction et prétraitement des documents pour l'indexation
|
| 138 |
+
├── langgraph_app.py # Routeur d'aiguillage vers Rag ou agent SQL selon la requête utilisateur
|
| 139 |
+
├── sql_tool.py # Construction de l'outil de traduction de requêtes en SQL
|
| 140 |
+
└── vector_store.py # Gestion de l'index vectoriel
|
| 141 |
|
| 142 |
```
|
| 143 |
|
|
|
|
| 174 |
Exécutez le script pour charger les données Excel dans la base de données PostgreSQL :
|
| 175 |
|
| 176 |
```bash
|
| 177 |
+
sudo systemctl start postgresql
|
| 178 |
+
|
| 179 |
python load_excel_to_db.py
|
| 180 |
```
|
| 181 |
|
|
|
|
| 192 |
|
| 193 |
```bash
|
| 194 |
sudo systemctl start postgresql
|
| 195 |
+
|
| 196 |
python evaluate_ragas.py
|
|
|
|
| 197 |
```
|
| 198 |
|
| 199 |
Ce script va :
|
|
|
|
| 215 |
Puis lancez le script d'évaluation :
|
| 216 |
|
| 217 |
```bash
|
| 218 |
+
sudo systemctl start postgresql
|
| 219 |
+
|
| 220 |
python evaluate_ragas.py
|
| 221 |
```
|
| 222 |
|
|
|
|
| 237 |
### 5. Lancer l'application
|
| 238 |
|
| 239 |
```bash
|
| 240 |
+
sudo systemctl start postgresql
|
| 241 |
+
|
| 242 |
streamlit run MistralChat.py
|
| 243 |
```
|
| 244 |
|
|
|
|
| 290 |
- les prompts utilisés pour le RAG et l'agent SQL
|
| 291 |
- etc.
|
| 292 |
|
| 293 |
+
## Déploiement sur HuggingFace Spaces
|
| 294 |
+
|
| 295 |
+
Cette application est déployable en un seul **Docker Space** qui embarque à la fois le serveur PostgreSQL et le dashboard Streamlit.
|
| 296 |
+
|
| 297 |
+
### Architecture du conteneur HF Spaces
|
| 298 |
+
|
| 299 |
+
```
|
| 300 |
+
┌─────────────────────────────────────────┐
|
| 301 |
+
│ HF Docker Space │
|
| 302 |
+
│ │
|
| 303 |
+
│ ┌─────────────┐ ┌─────────────────┐ │
|
| 304 |
+
│ │ PostgreSQL │ │ Streamlit │ │
|
| 305 |
+
│ │ port 5432 │◄───│ port 7860 │ │
|
| 306 |
+
│ │ (interne) │ │ (HF exposé) │ │
|
| 307 |
+
│ └─────────────┘ └─────────────────┘ │
|
| 308 |
+
│ │
|
| 309 |
+
│ start.sh : init PG → démarre PG → exec │
|
| 310 |
+
│ streamlit │
|
| 311 |
+
└─────────────────────────────────────────┘
|
| 312 |
+
```
|
| 313 |
+
|
| 314 |
+
### Fichiers ajoutés pour HF Spaces
|
| 315 |
+
|
| 316 |
+
| Fichier | Rôle |
|
| 317 |
+
|---------|------|
|
| 318 |
+
| `Dockerfile` | Image combinée PostgreSQL + Streamlit (port 7860) |
|
| 319 |
+
| `start.sh` | Init cluster PG, création schéma/utilisateurs, démarrage des services |
|
| 320 |
+
|
| 321 |
+
### Procédure de déploiement
|
| 322 |
+
|
| 323 |
+
1. **Créer un nouveau Space** sur [huggingface.co/spaces](https://huggingface.co/spaces) :
|
| 324 |
+
- SDK : **Docker**
|
| 325 |
+
- Visibilité : Public ou Private
|
| 326 |
+
|
| 327 |
+
2. **Pousser le dépôt** vers le Space HF :
|
| 328 |
+
```bash
|
| 329 |
+
# Ajouter le remote HF
|
| 330 |
+
git remote add hf https://huggingface.co/spaces/<VOTRE_USERNAME>/<NOM_DU_SPACE>
|
| 331 |
+
git push hf main
|
| 332 |
+
```
|
| 333 |
+
|
| 334 |
+
3. **Configurer les Secrets** dans *Settings → Repository secrets* :
|
| 335 |
+
|
| 336 |
+
| Secret | Description |
|
| 337 |
+
|--------|-------------|
|
| 338 |
+
| `MISTRAL_API_KEY` | Clé API Mistral (obligatoire) |
|
| 339 |
+
| `POSTGRES_PASSWORD` | Mot de passe du superutilisateur PostgreSQL `admin` |
|
| 340 |
+
| `PG_USER_1_PASSWORD` | Mot de passe de l'utilisateur read-only `user_1` |
|
| 341 |
+
| `LOGFIRE_TOKEN` | Token Logfire (optionnel) |
|
| 342 |
+
|
| 343 |
+
4. **Attendre le build** (~3-5 min) : HF Spaces construit l'image et démarre les services automatiquement.
|
| 344 |
+
|
| 345 |
+
> ⚠️ **Persistance des données** : HF Spaces (tier gratuit) ne garantit pas la persistance des volumes. Les données PostgreSQL sont recréées à chaque redémarrage du Space via `start.sh`. Pour la persistance, utilisez le [stockage persistant HF](https://huggingface.co/docs/hub/spaces-storage) ou un service PostgreSQL externe (ex. [Supabase](https://supabase.com), [Neon](https://neon.tech)).
|
| 346 |
+
|
| 347 |
+
---
|
vector_db/document_chunks.pkl
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0e1d5abc6d26ac0be98a02a25c272e862bb401c8a289e363f765d3c882415ae3
|
| 3 |
+
size 154018
|
vector_db/faiss_index.idx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 409645
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fcb54fbcb69ef5b7ba6fb69b6026a316bdbff38b483c665035a63824733220fe
|
| 3 |
size 409645
|