Automatiser les ingestions RAG CPU/GPU #1

Merged
david merged 3 commits from feat/automatiser-embeddings-gpu into main 2026-08-30 21:41:21 +00:00
Owner

Objectif

Faire évoluer le workflow RAG réutilisable afin de gérer :

  • les ingestions normales sur CPU ;
  • les ingestions lourdes sur Radeon 7900 XTX ;
  • les synchronisations incrémentales ;
  • les reconstructions complètes des Knowledge Bases ;
  • la restauration automatique du backend CPU après une ingestion GPU.

Le workflow reste centralisé dans rag/rag-workflows afin que les dépôts consommateurs ne contiennent qu'une configuration minimale.

Runner RAG dédié

Le workflow utilise désormais :

runs-on: rag-ingestion

Le runner rag-ingestion est un runner Forgejo global dédié aux synchronisations RAG.

Il possède :

capacity: 1

et un seul runner actif doit exposer ce label.

Cette contrainte sérialise les ingestions entre les différents dépôts et évite plusieurs modifications simultanées de la configuration globale d'embedding Open WebUI.

Paramètres d'ingestion

Ajout de deux paramètres au reusable workflow :

ingestion_compute:
  cpu
  gpu

mode:
  incremental
  rebuild

Valeurs par défaut :

ingestion_compute = cpu
mode              = incremental

Les valeurs invalides sont refusées avant l'ingestion.

Synchronisation incrémentale

Avec :

mode: incremental

le workflow exécute :

oikb sync

Reconstruction complète

Avec :

mode: rebuild

le workflow exécute :

oikb reset --yes
oikb sync

Git reste la source de vérité du corpus documentaire.

Ingestion GPU

Avec :

ingestion_compute: gpu

le workflow :

  1. lit la configuration d'embedding actuelle dans Open WebUI ;
  2. vérifie que le backend initial est le CPU ;
  3. sauvegarde la configuration existante ;
  4. remplace temporairement l'endpoint Ollama par :
https://ollama-7900xtx.davipro.fr
  1. vérifie que la bascule a été appliquée ;
  2. exécute l'ingestion avec oikb ;
  3. restaure la configuration initiale dans une étape :
if: ${{ always() && inputs.ingestion_compute == 'gpu' }}
  1. vérifie que le backend est revenu à :
https://ollama-cpu.davipro.fr

Le workflow ne définit pas le modèle d'embedding.

Le moteur, le modèle, le batch et les autres paramètres restent administrés dans Open WebUI. Seul l'endpoint Ollama est temporairement changé pour la fenêtre GPU.

Validation réelle

Le workflow a été testé avec le dépôt :

docs-vehicules/bmw-e36-320i-m52-conver

sur une nouvelle Knowledge Base Open WebUI.

Résultat :

2678 fichiers ajoutés
619 répertoires créés

L'ingestion GPU complète a duré environ :

11 min 14 s

La séquence suivante a été validée :

backend CPU
    ↓
bascule 7900 XTX
    ↓
synchronisation oikb
    ↓
restauration CPU

Après la fin du workflow, l'API Open WebUI confirmait :

model = qwen3-embedding:4b
url   = https://ollama-cpu.davipro.fr

Documentation

Ajout d'une documentation complète :

README.md
docs/architecture.md
docs/exploitation.md
docs/ajouter-depot.md

Architecture

Documente notamment :

  • Forgejo ;
  • run233 ;
  • le runner rag-ingestion ;
  • Open WebUI ;
  • Ollama CPU ;
  • Ollama 7900 XTX ;
  • oikb ;
  • les flux CPU et GPU ;
  • la sérialisation inter-dépôts ;
  • la source de vérité Git.

Exploitation / MCO

Documente notamment :

  • l'état nominal ;
  • le contrôle de l'endpoint d'embedding ;
  • le choix CPU/GPU ;
  • le choix incremental/rebuild ;
  • les secrets ;
  • les incidents courants ;
  • les limites de la restauration automatique ;
  • l'évolution du modèle d'embedding ;
  • la mise à jour de oikb ;
  • la procédure d'évolution du reusable workflow.

Ajout d'un dépôt RAG

Une procédure dédiée décrit comment raccorder simplement un nouveau dépôt ou un dépôt existant :

  1. créer la KB Open WebUI ;
  2. récupérer son UUID ;
  3. choisir le répertoire documentaire ;
  4. vérifier OPEN_WEBUI_API_KEY ;
  5. ajouter .forgejo/workflows/rag.yml ;
  6. choisir CPU ou GPU ;
  7. choisir incremental ou rebuild ;
  8. merger puis vérifier la première ingestion.

Version oikb

La version reste volontairement épinglée :

ghcr.io/open-webui/oikb:0.4.0

Commits

1858be3 feat: ajouter les modes d'ingestion RAG
267a512 feat: automatiser les embeddings GPU
b802b1b docs: documenter les workflows RAG

Contrôles

git diff --check main...HEAD    OK
working tree                   propre
branche distante               synchronisée
test réel GPU                  OK
restauration CPU               OK
## Objectif Faire évoluer le workflow RAG réutilisable afin de gérer : - les ingestions normales sur CPU ; - les ingestions lourdes sur Radeon 7900 XTX ; - les synchronisations incrémentales ; - les reconstructions complètes des Knowledge Bases ; - la restauration automatique du backend CPU après une ingestion GPU. Le workflow reste centralisé dans `rag/rag-workflows` afin que les dépôts consommateurs ne contiennent qu'une configuration minimale. ## Runner RAG dédié Le workflow utilise désormais : ```yaml runs-on: rag-ingestion ``` Le runner `rag-ingestion` est un runner Forgejo global dédié aux synchronisations RAG. Il possède : ```text capacity: 1 ``` et un seul runner actif doit exposer ce label. Cette contrainte sérialise les ingestions entre les différents dépôts et évite plusieurs modifications simultanées de la configuration globale d'embedding Open WebUI. ## Paramètres d'ingestion Ajout de deux paramètres au reusable workflow : ```yaml ingestion_compute: cpu gpu mode: incremental rebuild ``` Valeurs par défaut : ```text ingestion_compute = cpu mode = incremental ``` Les valeurs invalides sont refusées avant l'ingestion. ## Synchronisation incrémentale Avec : ```yaml mode: incremental ``` le workflow exécute : ```text oikb sync ``` ## Reconstruction complète Avec : ```yaml mode: rebuild ``` le workflow exécute : ```text oikb reset --yes oikb sync ``` Git reste la source de vérité du corpus documentaire. ## Ingestion GPU Avec : ```yaml ingestion_compute: gpu ``` le workflow : 1. lit la configuration d'embedding actuelle dans Open WebUI ; 2. vérifie que le backend initial est le CPU ; 3. sauvegarde la configuration existante ; 4. remplace temporairement l'endpoint Ollama par : ```text https://ollama-7900xtx.davipro.fr ``` 5. vérifie que la bascule a été appliquée ; 6. exécute l'ingestion avec `oikb` ; 7. restaure la configuration initiale dans une étape : ```yaml if: ${{ always() && inputs.ingestion_compute == 'gpu' }} ``` 8. vérifie que le backend est revenu à : ```text https://ollama-cpu.davipro.fr ``` Le workflow ne définit pas le modèle d'embedding. Le moteur, le modèle, le batch et les autres paramètres restent administrés dans Open WebUI. Seul l'endpoint Ollama est temporairement changé pour la fenêtre GPU. ## Validation réelle Le workflow a été testé avec le dépôt : ```text docs-vehicules/bmw-e36-320i-m52-conver ``` sur une nouvelle Knowledge Base Open WebUI. Résultat : ```text 2678 fichiers ajoutés 619 répertoires créés ``` L'ingestion GPU complète a duré environ : ```text 11 min 14 s ``` La séquence suivante a été validée : ```text backend CPU ↓ bascule 7900 XTX ↓ synchronisation oikb ↓ restauration CPU ``` Après la fin du workflow, l'API Open WebUI confirmait : ```text model = qwen3-embedding:4b url = https://ollama-cpu.davipro.fr ``` ## Documentation Ajout d'une documentation complète : ```text README.md docs/architecture.md docs/exploitation.md docs/ajouter-depot.md ``` ### Architecture Documente notamment : - Forgejo ; - `run233` ; - le runner `rag-ingestion` ; - Open WebUI ; - Ollama CPU ; - Ollama 7900 XTX ; - `oikb` ; - les flux CPU et GPU ; - la sérialisation inter-dépôts ; - la source de vérité Git. ### Exploitation / MCO Documente notamment : - l'état nominal ; - le contrôle de l'endpoint d'embedding ; - le choix CPU/GPU ; - le choix `incremental/rebuild` ; - les secrets ; - les incidents courants ; - les limites de la restauration automatique ; - l'évolution du modèle d'embedding ; - la mise à jour de `oikb` ; - la procédure d'évolution du reusable workflow. ### Ajout d'un dépôt RAG Une procédure dédiée décrit comment raccorder simplement un nouveau dépôt ou un dépôt existant : 1. créer la KB Open WebUI ; 2. récupérer son UUID ; 3. choisir le répertoire documentaire ; 4. vérifier `OPEN_WEBUI_API_KEY` ; 5. ajouter `.forgejo/workflows/rag.yml` ; 6. choisir CPU ou GPU ; 7. choisir incremental ou rebuild ; 8. merger puis vérifier la première ingestion. ## Version oikb La version reste volontairement épinglée : ```text ghcr.io/open-webui/oikb:0.4.0 ``` ## Commits ```text 1858be3 feat: ajouter les modes d'ingestion RAG 267a512 feat: automatiser les embeddings GPU b802b1b docs: documenter les workflows RAG ``` ## Contrôles ```text git diff --check main...HEAD OK working tree propre branche distante synchronisée test réel GPU OK restauration CPU OK ```
feat: automatiser les embeddings GPU
Some checks failed
sync-openwebui.yml / feat: automatiser les embeddings GPU (push) Failing after 0s
267a5125e2
docs: documenter les workflows RAG
Some checks failed
sync-openwebui.yml / docs: documenter les workflows RAG (push) Failing after 0s
sync-openwebui.yml / docs: documenter les workflows RAG (pull_request) Failing after 0s
sync-openwebui.yml / Merge pull request 'Automatiser les ingestions RAG CPU/GPU' (#1) from feat/automatiser-embeddings-gpu into main (pull_request) Failing after 0s
b802b1b975
david merged commit 503a5ee260 into main 2026-08-30 21:41:21 +00:00
david deleted branch feat/automatiser-embeddings-gpu 2026-08-30 21:41:21 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rag/rag-workflows!1
No description provided.