---
title: RAG by OpenWebUi
author: Frederic AOUSTIN
version: 1.O
---

# RAG by OpenWebUi

![category](developpement)
![tag](python)
![tag](ia)

Nous avons vu dans un précédent [article](./?md=20260121194900) comment construire un RAG complet allant de l'extraction des données à la création d'une interface web utilisant un LLM et une base vectoriel.

Pour rappel le RAG à pour principe

```mermaid
flowchart TD
    STEP1["Extraction de donnée"]
    STEP2["Chunking: découpage en element autonome"]
    STEP3["Vectorisation par un modèle spécifique"]
    STEP4["Intégration en BDD"]
    STEP5["Prompt Utilisateur"]
    STEP6["Ranking: identification vectoriel des chunks répondant au prompt"]
    STEP7["Re-Ranking: optimisation du filtre"]
    STEP8["Intégration des chunck avec le LLM"]
    STEP9["Réponse du LLM"]
    STEP1 --> STEP2
    STEP2 --> STEP3
    STEP3 --> STEP4
    STEP4 --> STEP6
    STEP5 --> STEP6
    STEP6 --> STEP7
    STEP7 --> STEP8
    STEP8 --> STEP9
```

Nous  allons voir comment OpenWebUi propose la mse en place d'un RAG de façon simple

## Le principe

Le principe est de pouvoir créer une **base de connaissance** au niveau d'OpenWebUi qui pourra être relié à un modèle.

OpenWebUi prendra donc en charge les étapes *3* à *9*

```mermaid
flowchart TD
    STEP1["Extraction de donnée"]
    STEP2["Chunking: découpage en element autonome"]
    subgraph OpenWebUi
        STEP3["Vectorisation par un modèle spécifique"]
        STEP4["Intégration en BDD"]
        STEP5["Prompt Utilisateur"]
        STEP6["Ranking: identification vectoriel des chunks répondant au prompt"]
        STEP7["Re-Ranking: optimisation du filtre"]
        STEP8["Intégration des chunck avec le LLM"]
        STEP9["Réponse du LLM"]
    end
    STEP1 --> STEP2
    STEP2 --> STEP3
    STEP3 --> STEP4
    STEP4 --> STEP6
    STEP5 --> STEP6
    STEP6 --> STEP7
    STEP7 --> STEP8
    STEP8 --> STEP9
```

## Mise en oeuvre

Une fois connecté il faut aller dans *user* / **Espace de travail**, puis dans **Connaissance**

![img](./upload/20260620162501.png)

Vous allez alors pourvoir créer une base de connaissance via le boutton *Nouvelle Connaissance*.

Une fois créer il faudra identifier les accès et ajouter vos documents.

Vous devez maintenant créer ou modifier un de vos modèles pour y connecter votre Base de connaissance fraichement crée.

Allez dans *user* / **Espace de travail**, puis dans **Modèle** , créer votre modèle et sélectionner votre base de connaisance

![img](./upload/20260620162502.png)

Au niveau de votre modèle, perso j'utilise un prompt systèeme qui va l'aider à utiliser la base ... exemple de prompt à adpater à vos besoins

```markdown
Tu es un assistant spécialisé dans le <ton objectif>, basé exclusivement sur la base de connaissance <nom de ta base>.

## Règles absolues

1. **Tu n'utilises QUE les documents de la base <nom de ta base> pour répondre. Tu n'utilises jamais tes connaissances générales, même si tu penses connaître la réponse.

2. **Tu n'inventes jamais.** Si une information n'est pas explicitement présente dans les documents récupérés, tu ne la devines pas, tu ne la déduis pas, tu ne la complètes pas.

3. **Si tu ne sais pas, tu le dis clairement**, avec cette formulation :
   > "Je n'ai pas trouvé cette information dans la base <nom de ta base>."

4. **Si tu as une réponse partielle**, tu indiques ce que tu as trouvé et ce qui manque :
   > "La base <nom de ta base> indique que [...] mais ne précise pas [...]."

## Format de réponse

- Réponds en français.
- Cite toujours la source (nom du document, <element spécifique> tel qu'il apparaît dans le document).
- Sois concis et factuel.
- N'ajoute pas d'introduction ou de conclusion inutile.
```

## Optimisation

Comme OpenWebUi reprend beaucoup d'étape du RAG on pourrait avoir l'impression qu'on perd de la souplesse ... alors oui il faut l'ademettre mais il existe pas mal de paramètre qu'on peut modifier dans **Panneau d'administration** / **Réglages** / **Documents**

![img](./upload/20260620162503.png)

On peut notamment intervenir sur:

- le choix du modèle de vectorisation
- la base de donnée vectoriel
- le rank et re-rank

Le principale problème pour moi est que ces réglages sont vraies pour l'ensemble des base de connaissance pas possible de faire une optimisation par base.

## Et la suite

Nous avons maintenant un modèle relier à une base de connaissance sur laquelle on peu faire du **RAG**.

Mais comment maintenir cette base? que faire si on a de nouveau document? si certains documents evoluent ? 

On peut faire cette gestion manuellement mais heureusement OpenWebUi a prévu des APIs permettant de gérer nos base de connaissance

C'est API sont accessible via l'utilisation d'un token (cf l'article sur [OpenWebUi](./?md=20260607120900) pour créer ce token)



