Changer le thème

Faut-il abandonner la base vectorielle ? Gemini 2M tokens, Context Caching : performance et coûts

Easton editorial illustration: lifecycle journey rail

Gemini 1.5 Pro prend en charge une fenêtre de contexte de 2 millions de tokens — assez pour y glisser d’un coup toute la trilogie Le Problème à trois corps. En tant que développeur qui bidouille des systèmes RAG depuis deux ans, je me suis demandé : est-ce une belle démo de labo qui rate en production ? Le pipeline base vectorielle + embedding + reranking va-t-il être remplacé par un simple « envoie-moi tout » ?

Après des tests comparatifs, la réponse est plus nuancée qu’on ne le croit.

Panorama des capacités de contexte long de Gemini

De 1.5 Pro à 3.1 Pro : la trajectoire

Retour rapide sur l’évolution du contexte long chez Gemini.

Début 2024, Gemini 1.5 Pro arrive avec 1 million de tokens — un choc pour tout le monde. Quelques mois plus tard, la fenêtre passe à 2 millions. À l’époque, Claude 3 stagnait autour de 200 000 tokens et GPT-4 Turbo à 128 000. L’écart donnait l’impression d’une course à vélo où quelqu’un débarque en Formule 1.

Les séries Gemini 2.0 et 2.5 ont continué sur cette voie. Le dernier Gemini 3.1 Pro « réduit » la fenêtre à 1 million de tokens, mais gagne en qualité de raisonnement et en compréhension multimodale. L’explication de Google : mieux vaut consolider la qualité que courir après les chiffres.

Je suis plutôt d’accord. Un modèle qui « tient » un livre entier sans le comprendre est moins utile qu’un modèle qui saisit l’essentiel avec une capacité un peu plus modeste.

Que représentent concrètement 2 millions de tokens ?

Pour donner des ordres de grandeur :

  • Environ 1,5 million de mots anglais, ou 3 millions de caractères chinois
  • Les 7 tomes de Harry Potter
  • À peu près dix ans d’articles de blog technique cumulés
  • Ou le code source complet d’un projet Python de taille moyenne (commentaires inclus)

En clair : la majorité des bases de connaissances internes d’entreprise tiennent en une seule requête.

Chez nous, Wiki, docs techniques, specs produit et comptes-rendus de réunion totalisent quelques centaines de milliers de mots. Avant, il fallait découper, vectoriser, indexer et surveiller la qualité de recherche. Maintenant ? On envoie le tout à Gemini d’un coup.

On dirait le passage de la boîte manuelle à l’automatique : la peur au début, puis difficile de revenir en arrière.

Contexte long multimodal : pas que du texte

Un avantage souvent sous-estimé : le contexte long de Gemini est multimodal.

Vous pouvez lui envoyer une heure de vidéo, des dizaines de pages PDF et quelques graphiques, puis demander : « Quelle contradiction voyez-vous entre les chiffres de cette vidéo et les stats de la page 15 du PDF ? »

Ce type d’analyse transversale, le RAG classique le gère mal. Comment découper une vidéo ? Comment vectoriser un schéma ? Ce ne sont pas des problèmes triviaux.

J’ai testé un lot mêlant démo produit, tableau de retours utilisateurs et maquettes. Gemini répondait correctement sur la vidéo et signalait des conflits entre une décision de design et les retours — une compréhension globale vraiment marquante.

Test « aiguille dans une botte de foin » : le vrai taux de rappel

Qu’est-ce que le test Needle In A Haystack

La capacité brute ne suffit pas : est-ce que le modèle se souvient vraiment ?

Personne ne veut payer pour faire lire 2 millions de tokens à une IA qui ne retient que la fin.

Le test Needle In A Haystack (aiguille dans une botte de foin) est standard : on cache une phrase précise (« ma couleur préférée est le violet ») dans un très long texte mélangé à du bruit, puis on interroge le modèle. S’il répond juste, l’aiguille a été retrouvée. On répète à différentes longueurs et positions pour tracer une courbe de rappel.

Données officielles Gemini 1.5 Pro

Google publie des chiffres solides :

  • À 530 000 tokens : rappel à 100 %
  • À 1 million de tokens : 99,7 %
  • Même à 10 millions de tokens en test extrême : 99,2 %

La première fois, j’étais sceptique — les benchmarks officiels sont souvent optimisés.

Des tests tiers (Artificial Analysis) confirment globalement : Gemini 1.5 Pro reste très stable quelle que soit la longueur, avec un bon comportement au milieu du document — là où d’autres modèles « oublient » le centre.

En conditions métier réelles

Le labo, c’est une chose ; la prod, une autre.

J’ai simulé un corpus technique d’environ 500 000 mots (API, architecture, runbooks) avec des paramètres de config cachés à différents endroits.

Résultats :

  • Informations structurées explicites (« durée de validité de la clé API ») : rappel quasi 100 %
  • Questions nécessitant un peu de raisonnement (« quels risques de sécurité ce design implique-t-il ? ») : ~80 %
  • Croisement entre plusieurs documents : une source peut parfois être manquée

Conclusion : le contexte long de Gemini est puissant, pas magique. Dès qu’il faut raisonner au-delà d’une simple recherche, il reste de la marge d’optimisation.

Context Caching en profondeur

Pourquoi mettre le contexte en cache

Capacité et mémoire, OK — mais le coût ?

Re-envoyer 2 millions de tokens à chaque tour peut faire mal au portefeuille.

Tarifs Gemini 1.5 Pro (février 2026) : au-delà de 128K, l’entrée coûte 2,50 $/million de tokens. Une requête à 2 M tokens = 5 $ d’entrée seule. Cent requêtes par jour → 500 $.

Inacceptable pour la plupart des apps. D’où Context Caching.

Principe de fonctionnement

Vous préchargez et mettez en cache les contextes réutilisés. Les tours suivants n’envoient que la nouvelle question et l’ID de cache — pas des millions de tokens de fond à chaque fois.

Flux typique :

  1. Premier appel : vous envoyez le document et demandez la création d’un cache
  2. Gemini renvoie un ID de cache et conserve l’état côté serveur
  3. Requêtes suivantes : ID de cache + nouvelle question
  4. Facturation : tokens de la question + petits frais de maintien du cache

Point clé : les tokens en cache ne coûtent que 10 % du tarif d’entrée normal. 5 $ deviennent 0,50 $.

Implicit vs Explicit Caching

Deux modes :

Explicit Caching : vous créez le cache via l’API, définissez le contenu, le TTL, etc. Contrôle maximal — idéal pour un corpus borné (base de connaissances, dépôt de code).

Implicit Caching (depuis mai 2025) : détection automatique des préfixes de tokens répétés, sans action de votre part. Très confortable en dev.

Attention : l’implicit exige souvent un préfixe identique suffisamment long. Si chaque requête change beaucoup le contexte, le gain peut être faible.

Impact du taux de cache sur les coûts

Exemple chiffré — base de 1 million de tokens, 1 000 requêtes/jour :

Sans cache :

  • Entrée/jour : 1 000 000 × 1 000 = 1 milliard de tokens
  • Coût : 1 Md ÷ 1 M × 2,50 $ = 2 500 $/jour

Avec Context Caching :

  • Chargement initial : 2,50 $ (une fois)
  • Maintien : 1,00 $/M tokens/h × 1 M × 24 h = 24 $/jour
  • Requêtes suivantes : 10 % du tarif → ~0,25 $/M tokens
  • Requêtes/jour : 1 000 × 500 tokens × 0,25 $/M ≈ 0,125 $/jour
  • Total : ~25 $/jour

Facteur 100 entre les deux scénarios. Après ce calcul, migrer certains projets du RAG vers le contexte long + cache devient sérieux.

Duel des coûts : contexte long vs RAG

Tarification Gemini API (2026)

ModèleFenêtreEntrée ≤128KEntrée >128KSortie
Gemini 1.5 Pro2M1,25 $/MTok2,50 $/MTok5,00 $/MTok
Gemini 1.5 Flash1M0,075 $/MTok0,15 $/MTok0,60 $/MTok
Gemini 2.5 Pro2M1,25 $/MTok2,50 $/MTok10,00 $/MTok

MTok = million de tokens.

Context Caching :

  • Stockage : 1,00 $/million de tokens/heure
  • Cache hit : 10 % du prix d’entrée
  • Cache miss : tarif normal

Coûts cachés du RAG

Le RAG semble bon marché (embedding + base vectorielle), mais les coûts indirects pèsent lourd.

Coûts visibles :

  • API d’embedding (ex. text-embedding-3-large) : 0,13 $/million de tokens
  • Base vectorielle : Pinecone ~70 $/mois ou infra self-hosted
  • Génération LLM : selon le modèle choisi

Coûts cachés :

  • Temps ingénieur pour construire et maintenir le pipeline
  • Tuning : taille de chunk, overlap, reranking…
  • Latence : retrieval + génération en deux temps
  • Perte de rappel : même un bon RAG rate parfois le bon fragment

Sur un projet passé, deux semaines de tuning ont fait passer le rappel de 75 % à 85 % — le coût humain dépassait souvent une année d’API.

Point de bascule : quand changer ?

Contexte long + Context Caching si :

  • Corpus < 2 millions de tokens (~3 000 pages PDF)
  • Requêtes fréquentes (centaines/jour)
  • Besoin d’analyses transversales
  • Tolérance latence raisonnable (souvent meilleur que RAG en pratique)
  • Pas envie d’infra de retrieval complexe

RAG si :

  • Volume énorme (dizaines de millions de tokens+)
  • Peu de requêtes (quelques fois à quelques dizaines/jour)
  • Citations et traçabilité au niveau fragment obligatoires
  • Documents très volatils + budget serré
  • Infra RAG déjà mature

Exemple : base support 500 000 mots, 500 requêtes/jour → contexte long + cache ~50 $/mois ; RAG + DB vectorielle + maintenance peut coûter plus. Plateforme juridique à l’échelle du téraoctet → RAG toujours pertinent.

Mise en œuvre : intégrer Context Caching

Prérequis et limites

  1. Modèle : Gemini 1.5 Pro minimum
  2. Volume : au moins 32 768 tokens en cache (sinon peu rentable)
  3. TTL : par défaut jusqu’à 1 h, renouvelable
  4. Régions : vérifier la doc officielle pour la disponibilité

Exemple complet Python SDK

import google.generativeai as genai
from google.generativeai import caching
import datetime

# Configurer la clé API
genai.configure(api_key="YOUR_API_KEY")

# Contenu à mettre en cache (document long, ≥ 32 768 tokens)
document_content = """
[Votre document long ici]
"""

# Créer le cache
cache = caching.CachedContent.create(
    model='gemini-1.5-pro-002',
    display_name='knowledge_base_cache',
    system_instruction='Vous êtes un assistant technique ; répondez à partir des documents fournis.',
    contents=[document_content],
    ttl=datetime.timedelta(hours=1),
)

print(f"Cache créé, ID : {cache.name}")
print(f"Nombre de tokens : {cache.usage_metadata.total_token_count}")

# Utiliser le cache pour la conversation
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Les requêtes suivantes n'envoient que la question
response = model.generate_content("Quelle politique de limitation d'API est décrite dans le document ?")
print(response.text)

# Prolonger le TTL
cache.update(ttl=datetime.timedelta(hours=2))

# Supprimer après usage (ou laisser expirer)
# cache.delete()

Gestion du cycle de vie du cache

Création : au démarrage de l’app ou à l’upload utilisateur.

Renouvellement : prolonger en arrière-plan si le TTL expire mais le trafic continue.

Nettoyage : supprimer les caches inutilisés pour éviter les frais.

# Lister tous les caches
caches = caching.CachedContent.list()
for c in caches:
    remaining = int(c.expire_time.timestamp() - datetime.datetime.now().timestamp())
    print(f"{c.display_name}: {c.name} ({remaining} s restantes)")

# Nettoyer les caches sur le point d'expirer
now = datetime.datetime.now()
for c in caches:
    if c.expire_time < now + datetime.timedelta(minutes=5):
        c.delete()
        print(f"Cache supprimé : {c.display_name}")

Pièges fréquents

Piège 1 : facturation sans hit cache — mauvais ID ou cache expiré. Loggez les hits.

Piège 2 : comptage de tokens — minimum 32 768 ; votre estimation peut diverger de usage_metadata du SDK.

Piège 3 : concurrence — plusieurs requêtes sur le même ID OK ; attention à l’atomicité du renouvellement.

Piège 4 : mise à jour du contenu — le cache ne se rafraîchit pas seul ; supprimez et recréez.

Choix d’architecture : RAG mort ou coexistence ?

Limites du contexte long

  • Plafond de coût : au-delà de dizaines de millions de tokens, les frais de maintien du cache explosent
  • Fréquence de mise à jour : documents très volatils → reconstructions fréquentes
  • Citation précise : le RAG cite page/paragraphe ; plus difficile en mode contexte long
  • Multi-tenant : un contexte par utilisateur complique la gestion des caches

Où le RAG reste irremplaçable

  • Recherche à l’échelle téraoctet
  • Données temps réel (news, marchés)
  • Requêtes multi-filtres (mots-clés, tags, dates)
  • Infra RAG déjà stable — pas besoin de tout refondre pour la mode

Architecture hybride

Couche 1 : retrieval vectoriel → centaines de docs pertinents
Couche 2 : injection dans le contexte long Gemini → analyse fine

Chez moi, RAG pour le « tamis », Gemini pour la « lecture » — ça fonctionne très bien.

Arbre de décision rapide

Volume documentaire ?
├── < 2 M tokens → contexte long + Context Caching
└── > 2 M tokens → besoin de citations fragment ?
    ├── oui → RAG
    ├── mises à jour très fréquentes → RAG
    └── sinon → hybride (RAG + contexte long)

Perspectives et conclusion

Tendances

En début 2026, les fenêtres atteignent déjà des millions de tokens ; Claude suit. Coûts en baisse, « mémoire effective » en hausse — le « trop gros pour le modèle » pourrait devenir aussi rare que « pas assez de RAM ».

Conseils aux développeurs RAG

  1. Pas de panique — le RAG garde sa place, comme SQL face au NoSQL.
  2. Testez — migrez un petit projet vers le contexte long pour comparer en main propre.
  3. Hybride — probable optimum à moyen terme.
  4. Chiffres — choisissez avec des données, pas avec la hype ou l’inertie.

Mon avis sur Gemini est passé du scepticisme à un optimisme prudent : pas une baguette magique, mais souvent plus élégant et économique que le RAG classique dans certains cas.

La valeur d’une techno n’est pas son âge, mais les problèmes qu’elle résout. J’espère que cet article vous aide à trancher entre contexte long et RAG.

Partagez vos retours en commentaire — dans ce domaine qui bouge vite, on apprend tous les jours.

FAQ

Combien de contenu le contexte long de 2 millions de tokens de Gemini peut-il réellement traiter ?
Environ 1,5 million de mots anglais ou 3 millions de caractères chinois — l'équivalent des 7 tomes de Harry Potter, d'une décennie d'articles de blog technique, ou du code source complet d'un projet Python de taille moyenne. Pour la plupart des bases de connaissances internes d'entreprise, cette capacité suffit en une seule passe.
Comment Context Caching réduit-il les coûts ?
Context Caching met en cache à l'avance les contextes réutilisés ; les requêtes suivantes n'envoient qu'un ID de cache et la nouvelle question. Les tokens en cache ne sont facturés qu'à 10 % du tarif normal ; avec les frais de maintien du cache (1 $/million de tokens/heure), 1 000 requêtes/jour passent d'environ 2 500 $ à 25 $ — soit un facteur 100.
Dans quels cas préférer le RAG au contexte long ?
Le RAG reste pertinent lorsque le volume documentaire est énorme (dizaines de millions de tokens et plus), que les requêtes sont rares (quelques fois à quelques dizaines par jour), que vous avez besoin de citations précises au niveau fragment, que les documents changent très souvent, ou que vous disposez déjà d'une infrastructure RAG mature. Pour des corpus massifs et des données au niveau téraoctet, la base vectorielle reste indispensable.
Comment fonctionne une architecture hybride ?
Elle combine les deux approches : une première couche de recherche vectorielle (RAG) présélectionne quelques centaines de documents pertinents parmi un volume massif ; une seconde couche injecte ce lot dans le contexte long de Gemini pour une analyse approfondie. Vous gardez la scalabilité du RAG et la profondeur de compréhension du contexte long — idéal au-delà de 2 millions de tokens.

10 min de lecture · Publié le: 27 févr. 2026 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog