Scrap-Dji / RESOURCE_ESTIMATION.md
joel
Initial deployment: Scrap-Dji with API
dfdddb1
# Estimation des Ressources : Projet "Dataset Souverain & IA"
Ce document détaille les prérequis techniques pour passer d'un simple scraper à une **usine de données pour l'IA** (LLM Fine-tuning & RAG).
---
## 1. 💾 Stockage : Le Nerf de la Guerre
Pour un dataset "conséquent" (visant le fine-tuning d'un LLM 7B ou 13B paramètres sur des contextes africains), on ne parle plus en gigaoctets mais en téraoctets.
### Estimation pour 10 Millions d'articles/documents (High Quality) :
* **Données Brutes (HTML/PDF)** : ~500 Go - 1 To (pour archives et traçabilité).
* **Données Nettoyées (Texte brut/JSON)** : ~50 Go - 100 Go (TEXT ONLY).
* **Index Vectoriel (RAG)** : C'est le plus lourd.
* Si on découpe (chunk) chaque doc en 4 segments.
* 40 millions de vecteurs (768 dimensions float32).
* **Taille RAM/Disque Qdrant/Typesense** : ~150 Go - 200 Go uniquement pour les vecteurs.
**Recommandation Disque :** **2 To NVMe SSD** minimum. Les disques durs classiques (HDD) tueront les performances de votre moteur de recherche vectoriel.
---
## 2. 🖥️ Matériel pour le Scraper (L'Usine)
Le scraping n'est pas limité par le CPU, mais par la **bande passante** et les **IOPS** (écritures disque).
### Configuration "Scraper Industriel" (Minimum)
* **CPU** : 4 - 8 vCPUs (pour gérer le parsing HTML/PDF en parallèle).
* **RAM** : 16 Go - 32 Go (Chrome/Selenium consomme énormément si utilisé, sinon Scrapy pur est léger).
* **Réseau** : 1 Gbps stable.
* **Proxies** : **CRITIQUE**. Pour scraper massivement sans être banni, il faut un pool de proxies rotatifs (frais mensuels à prévoir : 50$-500$/mois selon le volume).
---
## 3. ⏱️ Estimation du Temps (La Variable "Politesse")
Si vous êtes "poli" (1 requête/seconde par domaine) pour ne pas casser les sites cibles :
* **Vitesse Moyenne** : 1 page / 2 secondes (avec parsing).
* **Avec 1 instance** : ~43 000 pages / jour.
* **Pour atteindre 1 Million de pages** : ~23 jours avec 1 machine.
* **Accélération** : Parallélisme. Avec 10 workers en parallèle sur des domaines différents -> **2 à 3 jours pour 1 Million de pages**.
---
## 4. 🧠 Structure des Données pour l'IA (LLM & RAG)
Pour que la donnée soit utile (et pas juste du bruit), elle doit suivre ce pipeline :
### A. Pour le RAG (Recherche Sémantique)
Les données doivent être "Chunkées" (découpées) intelligemment.
* **Format** : JSON
* **Structure** :
```json
{
"id": "uuid",
"text": "Extrait de texte de 512 tokens...",
"metadata": {
"source": "url",
"date": "2024-01-01",
"pays": "Sénégal",
"langue": "wol"
},
"vector": [0.12, -0.45, ...] // Généré par modèle d'embedding (ex: Camembert, NLLB)
}
```
### B. Pour le Fine-Tuning (LLM)
Les données doivent être nettoyées et formatées en paires "Instruction/Input/Output" ou en texte brut continu de haute qualité.
* **Format** : JSONL (JSON Lines)
* **Nettoyage** : Suppression des pubs, menus, bas de pages, scripts, etc. (C'est 80% du travail).
---
## 5. ⚡ Performance du Moteur de Recherche
Pour que la recherche soit "instantanée" (< 100ms) sur des millions de documents :
1. **RAM is King** : Qdrant et Typesense doivent tenir l'index en mémoire vive (RAM).
* Pour 10M vecteurs, prévoyez **64 Go à 128 Go de RAM** sur le serveur de recherche.
2. **Disque NVMe** : Indispensable pour charger les données à froid.
3. **HNSW Index** : C'est l'algorithme utilisé par Qdrant. Il est rapide mais gourmand en RAM.
---
## 📝 Résumé du "Kit de Démarrage Sérieux"
Si vous voulez commencer demain un projet pertinent et performant :
1. **Serveur Scraper** : VPS 8 vCPU / 16 Go RAM / 1 Gbps (ex: Hetzner, OVH) + Budget Proxies.
2. **Serveur Base de Données & Recherche** : Serveur Dédié 16 vCPU / 128 Go RAM / 2x1.92 To NVMe (C'est là qu'est la valeur).
3. **Pipeline** : Scrapy (Collecte) -> Traitement Text (Spacy/Langchain) -> Vectorisation (HuggingFace) -> Qdrant (Index).