+190 XP

Fichiers, embeddings et RAG avec Google

Vous pouvez confier à Gemini un manuel du salarié de 200 pages et demander « combien de jours de télétravail ai-je droit lors de ma deuxième année ? », puis obtenir une réponse sourcée avec la clause exacte. Cette leçon vous montre trois façons de faire cela sur Google AI, du « on uploade juste le fichier » au « on construit un vrai retrieval sur un ensemble documentaire », et quand choisir chacune.

Trois stratégies de retrieval, classées par effort

Avant tout code, prenez la bonne décision. Sur Google AI, vous avez trois approches distinctes, et on perd des semaines à construire la mauvaise.

  1. Long context (mettre le fichier dans le prompt). La fenêtre de contexte de Gemini est assez large pour contenir des documents entiers. Pour un seul manuel, vous n'avez peut-être pas besoin de RAG du tout. Upload, question, terminé.
  2. La File API. Pour les fichiers trop gros pour être intégrés inline, ou que vous réutilisez sur de nombreuses requêtes, uploadez une fois et référencez le handle. Toujours du retrieval en long context, mais mieux géré.
  3. Embeddings + vector store (vrai RAG). Quand vous avez des centaines de documents, ou qu'il faut chercher dans un corpus qui dépasse la fenêtre de contexte, vous embeddez des chunks, stockez les vecteurs, et récupérez les plus pertinents à chaque requête.

L'instinct acquis dans le bloc fondations pousse à sauter directement au RAG. Résistez. Si le corpus entier tient dans le contexte, le long context bat le RAG en précision et en simplicité. Passez aux embeddings quand l'échelle ou le coût vous y obligent.

Stratégie 1 : uploader simplement le fichier

Dans Google AI Studio, glissez le PDF de votre manuel dans un prompt et posez votre question. La multimodalité native fait que Gemini lit le PDF directement, tableaux et mise en page compris, sans étape d'OCR.

Pour l'API, les petits fichiers peuvent être envoyés inline en bytes. Mais dès qu'un fichier est volumineux, ou que vous allez lui poser beaucoup de questions, utilisez plutôt la File API.

Stratégie 2 : la File API pour les fichiers volumineux et réutilisables

La File API stocke un fichier côté Google et vous donne un handle. Vous uploadez une fois, puis le référencez dans de nombreuses requêtes sans renvoyer les bytes à chaque fois. Les fichiers uploadés sont conservés une durée limitée (actuellement environ 48 heures) et leur stockage est gratuit, ce qui en fait l'option idéale pour une session « je charge le manuel, je pose dix questions ».

python
from google import genai

client = genai.Client()  # lit GEMINI_API_KEY depuis l'environnement

handbook = client.files.upload(file="employee_handbook.pdf")

resp = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        handbook,
        "How many remote work days am I allowed in my second year? "
        "Quote the exact policy clause and its section number.",
    ],
)
print(resp.text)

Voilà tout le flux « répondre à partir de notre manuel » pour un document unique. Flash est le bon niveau ici : rapide, peu cher, et largement capable de lire un PDF. Gardez Pro pour du raisonnement plus difficile sur des entrées multi-documents désordonnées.

Le guide officiel sur les limites d'upload et les types supportés se trouve sur ai.google.dev. Consultez-le plutôt que de deviner les plafonds de taille, qui changent.

Long context and the File API in Gemini

Watch on YouTube

Quand le long context ne suffit plus

Le long context est formidable, jusqu'à ce qu'il ne le soit plus. Trois signaux indiquent qu'il faut passer au vrai RAG :

  • Le corpus dépasse la fenêtre. Cinquante manuels, un export de wiki, des années de notes de politique interne. Vous ne pouvez pas tout mettre inline.
  • Le coût par requête compte. Vous payez les tokens d'entrée. Envoyer le manuel entier à chacune des 10 000 questions quotidiennes est du gaspillage quand chaque réponse tient en deux paragraphes.
  • Vous avez besoin d'une provenance précise et citable sur de nombreuses sources, pas d'un « quelque part dans ce gros bloc ».

C'est là que les embeddings prennent tout leur sens.

Stratégie 3 : embeddings et vrai RAG

Vous connaissez déjà le concept de RAG. Voici comment il se traduit dans les outils spécifiques de Google.

Un embedding est un vecteur (une liste de nombres) qui capture le sens d'un chunk de texte, de sorte que des chunks sémantiquement proches se retrouvent proches dans l'espace vectoriel. Vous embeddez vos chunks de document une fois, stockez les vecteurs, embeddez la question de l'utilisateur au moment de la requête, et récupérez les chunks les plus proches pour les passer à Gemini.

Le modèle d'embedding actuel de Google est gemini-embedding-001, disponible via la même API Gemini. Un détail important : il supporte un paramètre task type. Vous lui indiquez si vous embeddez un document destiné au stockage (RETRIEVAL_DOCUMENT) ou une requête de recherche (RETRIEVAL_QUERY). Bien le régler améliore sensiblement la qualité du retrieval, et l'oublier est l'erreur la plus fréquente.

Étape 1 : découper et embedder vos documents

Découpez le manuel en sections (par titre, idéalement), puis embeddez chaque chunk comme document.

python
from google import genai

client = genai.Client()

chunks = [
    "Section 4.2 Remote Work: In their second year of employment, "
    "staff are entitled to up to 80 remote working days per year...",
    "Section 4.3 Equipment: The company provides a laptop and...",
    # ...une entrée par section du manuel
]

doc_vectors = client.models.embed_content(
    model="gemini-embedding-001",
    contents=chunks,
    config={"task_type": "RETRIEVAL_DOCUMENT"},
).embeddings

En production, vous stockez ces vecteurs dans une base vectorielle. Pour un petit outil interne, une liste en mémoire avec similarité cosinus fait très bien l'affaire. Pour passer à l'échelle, Vertex AI propose une option managée (voir plus bas).

Étape 2 : embedder la requête et récupérer

python
import numpy as np

def cosine(a, b):
    a, b = np.array(a), np.array(b)
    return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))

question = "How many remote days do I get in my second year?"

q_vec = client.models.embed_content(
    model="gemini-embedding-001",
    contents=[question],
    config={"task_type": "RETRIEVAL_QUERY"},
).embeddings[0].values

scored = sorted(
    zip(chunks, doc_vectors),
    key=lambda c: cosine(q_vec, c[1].values),
    reverse=True,
)
top_chunks = [c[0] for c in scored[:3]]

Notez la différence de task_type : les documents ont été embeddés en RETRIEVAL_DOCUMENT, la question en RETRIEVAL_QUERY. Même modèle, rôles asymétriques.

Étape 3 : générer une réponse sourcée

Maintenant, ne passez à Gemini que les chunks récupérés. C'est le bénéfice : un prompt minuscule et bon marché au lieu du manuel entier.

python
context = "\n\n".join(top_chunks)

resp = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=(
        f"Answer using ONLY the handbook excerpts below. "
        f"Cite the section number. If the answer is not present, say so.\n\n"
        f"{context}\n\nQuestion: {question}"
    ),
)
print(resp.text)

Cette instruction « réponds UNIQUEMENT à partir des extraits, et dis-le si l'information est absente » est votre garde-fou contre l'hallucination. Le RAG n'empêche pas un modèle d'inventer des réponses ; la discipline du prompt, si.

Vérification des acquis

1. Selon la leçon, quand faut-il préférer le long context à la construction d'un vrai pipeline RAG ?

2. Quel est l'intérêt principal de la File API de Google par rapport à l'envoi d'un fichier inline ?

3. Pourquoi la leçon dit-elle que la multimodalité native supprime le besoin d'une étape d'OCR lors de l'upload d'un PDF ?

CHOIX MULTIPLES

4. Sélectionnez TOUS les scénarios où le vrai RAG (embeddings + vector store) est le choix approprié.

Sélectionnez toutes les réponses correctes.

CHOIX MULTIPLES

5. Sélectionnez TOUTES les affirmations qui décrivent correctement la File API telle que présentée dans la leçon.

Sélectionnez toutes les réponses correctes.

Ne confondez pas RAG et grounding avec Google Search

Confusion fréquente : le grounding avec Google Search n'est pas du RAG sur vos documents privés. Il connecte Gemini au web public en direct, pour que le modèle puisse répondre sur l'actualité avec des citations. Votre manuel est privé et n'est pas sur le web public, donc le grounding Search ne vous aidera pas. Vous activez le grounding Search comme outil dans l'API ; vous construisez le pipeline d'embeddings ci-dessus pour vos propres fichiers. Utilisez les deux quand une requête demande des faits publics *et* une politique interne.

Passer à l'échelle : vertex AI et RAG managé

Tout ce qui précède tourne sur l'API Gemini et convient parfaitement aux prototypes et outils internes. Quand vous avez besoin de contrôles entreprise (résidence des données, IAM, échelle, audit logging), passez à Vertex AI, la plateforme IA managée de Google Cloud.

Vertex propose RAG Engine, un pipeline managé qui gère pour vous le chunking, l'embedding, le stockage vectoriel et le retrieval. Vous le pointez vers un corpus dans Cloud Storage ou Drive, et il renvoie des réponses sourcées. Vous écrivez beaucoup moins de plomberie, et vous obtenez la gouvernance qu'une équipe sécurité exigera. Commencez sur cloud.google.com/vertex-ai.

Règle approximative :

  • Prototype ou outil personnel : API Gemini + votre propre vector store (le code ci-dessus).
  • Production avec exigences de conformité : Vertex AI RAG Engine.
  • Retrieval agentique au sein d'un workflow plus large : encapsulez le retrieval comme outil dans l'Agent Development Kit (ADK) pour qu'un agent décide quand chercher dans le manuel plutôt que sur le web.

La voie no-code : là où votre manuel se trouve déjà

Tout problème de « répondre à partir de notre manuel » n'exige pas un pipeline. Si votre manuel est un Google Doc dans un Drive partagé, vous avez des options plus légères :

  • Un Gem (une configuration Gemini personnalisée et réutilisable) peut recevoir le manuel comme référence et une instruction fixe du type « réponds aux questions RH en citant la section de la politique ». Des collègues non techniques obtiennent un assistant paramétré sans une ligne de code. Voir support.google.com pour la configuration.
  • Gemini dans Google Workspace peut raisonner sur des fichiers du Drive et répondre directement dans Docs ou Gmail, via le référencement de fichier « @ » dans le panneau latéral.
  • Pour quelque chose de plus sur mesure mais toujours sans infrastructure, Apps Script permet d'appeler l'API Gemini depuis Workspace, par exemple une Sheet qui classe les tickets support selon les catégories du manuel.

La leçon : ajustez l'outil à l'utilisateur et à l'échelle. Un Gem peut résoudre en cinq minutes ce que vous alliez coder pendant une semaine.

Un arbre de décision pratique

Quand quelqu'un dit « rends notre manuel interrogeable », demandez :

  1. Un seul document, usage occasionnel ? Uploadez-le. File API. Terminé.
  2. Quelques documents, propriétaire technique, prototype ? Embeddings + similarité en mémoire (le code ci-dessus).
  3. Beaucoup de documents, production, conformité ? Vertex AI RAG Engine.
  4. Propriétaire non technique, document dans Drive ? Un Gem ou le panneau latéral Workspace.
  5. Besoin aussi de faits du web public ? Ajoutez le grounding avec Google Search.

Points clés

  • Essayez le long context avant le RAG. Si le corpus tient dans la fenêtre, la File API donne des réponses plus précises avec bien moins de code. Ne construisez des embeddings que lorsque l'échelle, le coût ou la provenance vous y obligent.
  • Réglez `task_type` à chaque appel d'embedding : RETRIEVAL_DOCUMENT pour les chunks stockés, RETRIEVAL_QUERY pour la question. Ce seul paramètre améliore visiblement le retrieval.
  • Protégez-vous de l'hallucination dans le prompt, pas dans le pipeline : demandez à Gemini de répondre uniquement à partir des extraits récupérés et de signaler quand la réponse est absente.
  • Le grounding avec Google Search n'est pas du RAG privé. Utilisez-le pour des faits publics en direct ; construisez des embeddings pour vos propres fichiers ; combinez les deux quand une requête l'exige.
  • Passez à Vertex AI RAG Engine pour la production, et pensez à un Gem ou au panneau latéral Workspace quand le vrai besoin est « des collègues non techniques, document déjà dans Drive ».

À faire, tiré de cette leçon

Ces actions sont compilées dans le plan d'action du rôle.

  • Placer les artefacts volumineux uniques directement dans le long context, en réservant le RAG aux grands corpus
Voir le plan d'action complet →