RAG en français : une IA qui répond depuis vos documents

9 min de lecture · mis à jour le 26 octobre 2026

Faire répondre une IA à partir de VOS documents (règlements, catalogues, FAQ internes), c'est le principe du RAG (Retrieval-Augmented Generation). Voici la version minimale et fonctionnelle en Python, avec des embeddings multilingues qui comprennent le français.

Le principe en 30 secondes

  • 1. Indexer : chaque paragraphe de vos documents est converti en embedding (un vecteur numérique qui capture le sens)
  • 2. Chercher : la question de l'utilisateur est convertie pareil, on trouve les paragraphes les plus proches
  • 3. Répondre : on donne ces paragraphes au modèle de chat, qui répond en s'appuyant dessus

Le modèle d'embeddings qu'il vous faut

Pour du contenu en français (ou mélangé), multilingual-e5-large est excellent et coûte une fraction de franc par document. text-embedding-3-small est l'alternative classique.

Le code complet (sans base vectorielle)

Pour moins de ~5 000 paragraphes, pas besoin d'infrastructure : numpy suffit.

rag.py
import numpy as np
from openai import OpenAI

client = OpenAI(base_url="https://api.deeprelay.io/v1", api_key="dr_votre_cle")
EMB = "intfloat/multilingual-e5-large"

documents = [
    "Les livraisons à Dakar sont effectuées sous 24h pour 1500 F.",
    "Les retours sont acceptés sous 7 jours avec le reçu d'achat.",
    "Le service client répond au 77 000 00 00, du lundi au samedi 9h-18h.",
    # … vos vrais documents ici
]

# 1. Indexation (à faire une fois, puis sauvegarder)
emb = client.embeddings.create(model=EMB, input=documents)
index = np.array([e.embedding for e in emb.data])

def repondre(question: str) -> str:
    # 2. Recherche des 3 passages les plus pertinents
    q = np.array(client.embeddings.create(model=EMB, input=question).data[0].embedding)
    scores = index @ q / (np.linalg.norm(index, axis=1) * np.linalg.norm(q))
    contexte = "\n".join(documents[i] for i in scores.argsort()[-3:])
    # 3. Réponse ancrée dans le contexte
    r = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V3.2",
        messages=[
            {"role": "system", "content": f"Réponds UNIQUEMENT à partir de ce contexte:\n{contexte}\nSi la réponse n'y est pas, dis-le."},
            {"role": "user", "content": question},
        ],
    )
    return r.choices[0].message.content

print(repondre("C'est combien la livraison à Dakar ?"))

Ce que ça coûte

OpérationCoût
Indexer 1 000 paragraphes (~150 000 tokens)~1,1 F (une seule fois)
Une question (embedding + réponse)~0,37 F
Au-delà de quelques milliers de documents, passez sur une base vectorielle (Qdrant, pgvector…) : le code d'appel API reste identique.

Combinez avec le bot WhatsApp et vous obtenez un service client qui connaît vraiment votre entreprise. Clé API gratuite ici.

Essayer avec 100 F offerts

Créez un compte, générez une clé, lancez le code de ce guide. Rechargez ensuite par Wave, Orange Money ou carte.

Autres guides