Skip to main content
Un modèle seul ne peut pas répondre à des questions sur des événements postérieurs à la limite de son entraînement, ni citer une source. La solution est l’ancrage : récupérer du contenu Web pertinent au moment de la requête et le transmettre au modèle comme contexte. Ce guide présente le modèle à suivre avec Novita AI Search pour la récupération et l’API LLM pour la synthèse — le tout derrière une seule clé API.

Qu’est-ce que le RAG ?

La génération augmentée par récupération (RAG) est le schéma derrière chaque réponse ancrée ici : au lieu de s’appuyer sur ce que le modèle a mémorisé pendant l’entraînement, vous récupérez des documents pertinents au moment de la requête et vous augmentez le prompt avec ceux-ci, afin que le modèle génère sa réponse à partir de ce contexte récent et vérifiable. Cette étape de récupération est exactement ce que fournit AI Search. Le web devient votre base de connaissances, et vous n’avez pas besoin de créer ni de maintenir une base de données vectorielle pour commencer — un appel de recherche renvoie les passages, et le LLM fait le reste. Lorsque vous voudrez plus tard effectuer une récupération sur vos propres documents privés, la même structure en trois étapes s’appliquera ; vous remplacez simplement la recherche web par un vector store. Le RAG vous apporte trois choses qu’un modèle seul ne peut pas offrir :
  • Fraîcheur — les réponses reflètent du contenu publié après la date limite d’entraînement du modèle.
  • Attribution — chaque affirmation peut renvoyer à une URL source que l’utilisateur peut vérifier.
  • Hallucinations réduites — ancrer le modèle dans du texte récupéré l’empêche d’inventer des faits.

Comment fonctionne l’ancrage

Un tour RAG unique suit trois étapes :
  1. Rechercher (récupérer) sur le web des pages pertinentes pour la question.
  2. Extraire (augmenter) le contenu dont vous avez besoin — extraits ou texte complet de page — dans le prompt.
  3. Synthétiser (générer) une réponse en transmettant ce contenu à un LLM, en lui demandant de citer ses sources.
Vous pouvez le faire avec deux appels (recherche + LLM), voire un seul, puisque Exa comme Tavily peuvent synthétiser une réponse pour vous. Choisissez en fonction du niveau de contrôle dont vous avez besoin sur la formulation finale et les citations.

Laisser le fournisseur écrire la réponse

Le chemin le plus rapide. Search de Tavily renvoie une réponse générée par un LLM lorsque vous définissez include_answer, et Exa propose une Answer point de terminaison. Un appel, aucune orchestration.
Utilisez ceci lorsque vous voulez une bonne réponse avec un minimum de code. Optez pour l’approche récupérer-puis-synthétiser ci-dessous lorsque vous avez besoin de contrôler le modèle, le ton, le format de sortie ou la façon dont les citations sont présentées.

Récupérer, puis synthétiser avec un LLM

Cela vous donne un contrôle total. Recherchez des sources, puis transmettez les résultats à l’LLM API avec des instructions pour répondre en utilisant uniquement ce contexte et pour citer chaque affirmation.
Le même flux fonctionne avec Exa Search — remplacez la route par /v3/exa/search et lire text de chaque résultat au lieu de raw_content.

Ajuster la qualité de la récupération

La qualité d’une réponse ancrée dépend bien davantage de ce que vous récupérez que du modèle. Quelques leviers à fort impact :
  • Fraîcheur. Pour les questions sensibles au temps, contraignez par date. Tavily expose time_range et start_date/end_date; Exa expose startPublishedDate/endPublishedDate. Cela évite que des pages obsolètes se retrouvent dans le contexte.
  • Fiabilité des sources. Utilisez include_domains/excludeDomains pour restreindre la récupération aux sources auxquelles vous faites confiance (documentation officielle, éditeurs réputés) et exclure les sites de faible qualité.
  • Indices de sujet. Tavily topic (news, finance, general) et d’Exa category orientez le moteur vers le bon type de résultat.
  • Dimensionnement approprié du contexte. Limitez le texte extrait (Tavily chunks_per_source, Exa maxCharacters) afin de transmettre suffisamment de signal sans faire exploser la fenêtre de contexte du modèle ni votre budget de tokens.

Search vs. extract vs. crawl

Choisissez la primitive de récupération qui correspond à votre besoin :
  • Search — vous avez une question et devez découvrir des pages pertinentes. Le point de départ par défaut.
  • Extract / Contents — vous connaissez déjà les URLs et souhaitez en obtenir un texte propre. Idéal pour s’ancrer sur un ensemble fixe de documents. Voir Tavily Extract et Exa Contents.
  • Crawl / Map — vous voulez ingérer un site ou une section entière, en suivant les liens. Idéal pour constituer une base de connaissances hors ligne. Voir Tavily Crawl et Tavily Map.
Pour un agent plus complet qui effectue des recherches de manière itérative et raisonne sur de nombreuses sources, consultez l’intégration DeepSearcher.

Mise en production

  • Gérez les résultats vides. Si la recherche ne renvoie rien de pertinent, faites dire au modèle qu’il ne peut pas répondre plutôt que d’en inventer une. Le prompt système ci-dessus le fait.
  • Mettez en cache lorsque vous le pouvez. Des requêtes identiques renvoient des résultats similaires ; la mise en cache de la récupération réduit les coûts et la latence.
  • Tenez compte des limites de débit. Les appels de récupération et les appels LLM sont limités séparément — une requête de recherche n’entame pas votre quota LLM. Appliquez un backoff en cas de 429 pour l’un ou l’autre. Consultez les limites de débit des LLM pour le côté LLM.
  • Gardez les clés côté serveur. Votre clé Novita authentifie chaque appel ici — ne l’intégrez jamais dans du code côté client.
Dernière modification le 10 août 2026