CedM commited on
Commit
cf7f075
·
verified ·
1 Parent(s): 273e30f

Déploiement automatique depuis GitLab CI

Browse files
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
- ## Déploiement sur HuggingFace Spaces
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 # Fichier pour ignorer les fichiers et dossiers non pertinents dans le dépôt Git
174
- ├── .env # Fichier pour stocker les variables d'environnement (clés API, mots de passe, etc.)
175
- ├── evaluate_ragas.py # Script pour évaluer les performances du RAG ou du RAG+SQL avec Ragas
176
- ├── indexer.py # Script pour indexer les documents
177
- ├── load_excel_to_db.py # Script pour charger les données Excel dans la base de données PostgreSQL
178
- ├── MistralChat.py # Application Streamlit principale
179
- ├── Notebook_Eval_Ragas.ipynb # Jupyter Notebook pour l'évaluation des performances du RAG ou du RAG+SQL avec Ragas
180
- ├── requirements.txt # Fichier listant les dépendances Python du projet
181
- ├── Docs/ # Dossier du Diagramme fonctionnel de l'application et du schema relationnel de la base de données
182
- ├── inputs/ # Dossier pour les documents sources
183
- ├── Ragas_results/ # Dossier pour les résultats d'évaluation du RAG ou du RAG+SQL avec Ragas
184
- ├── vector_db/ # Dossier pour l'index FAISS et les chunks vectorisés
185
- ── utils/ # Modules utilitaires
186
- ├── config.py # Configuration de l'application
187
- ├── data_loader.py # Extraction et prétraitement des documents pour l'indexation
188
- ├── langgraph_app.py # Routeur d'aiguillage vers Rag ou agent SQL selon la requête utilisateur
189
- ├── sql_tool.py # Construction de l'outil de traduction de requêtes en SQL
190
- ── vector_store.py # Gestion de l'index vectoriel
 
 
 
 
 
 
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:4d446a3046b825f93d5776bf2a809f00f18cebcb4cc1131e39a8ef201b800c6f
3
- size 153990
 
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:9c69557ec9e7cb7a6a8613dcb9713d8d8603f972178fefb1d9a8884df5825cd5
3
  size 409645
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fcb54fbcb69ef5b7ba6fb69b6026a316bdbff38b483c665035a63824733220fe
3
  size 409645