Un RAG statique ne peut pas répondre à « que s’est-il passé cette semaine ». Ajouter une étape de recherche web en direct avec une API Google Search ancre votre LLM dans des sources actuelles et citables. Voici le schéma, en utilisant serp.cheap.
L’architecture
user query
→ SERP API search (top N results) ← live, fresh
→ fetch the result pages
→ chunk + embed on the fly
→ retrieve most relevant chunks
→ LLM answers, citing the source URLs
Étape 1 — récupérer des sources fraîches
import requests
def web_sources(query, n=5, gl="us"):
data = requests.post(
"https://api.serp.cheap/v1/search",
headers={"X-API-Key": "YOUR_KEY"},
json={"q": query, "gl": gl},
timeout=30,
).json()
return [
{"title": r["title"], "url": r["link"], "snippet": r.get("snippet", "")}
for r in data["organic"][:n]
]
Étape 2 — récupérer et découper
Récupérez chaque url, extrayez le texte principal, divisez en morceaux d’environ 500 tokens. (Utilisez votre loader/splitter existant — par exemple trafilatura + un text splitter.)
Étape 3 — intégrer, récupérer, générer
Intégrez les morceaux, récupérez les top-k pour la requête, et passez-les au modèle avec une instruction de citer les URL sources. Comme les sources proviennent du SERP en direct, la réponse reflète ce que disent actuellement les pages faisant autorité.
Pourquoi une API SERP bon marché compte ici
Le RAG déclenche une recherche sur chaque requête. À $0.0006 par recherche fraîche (moitié prix en cache), serp.cheap maintient le coût de récupération par réponse négligeable — et les requêtes identiques récurrentes touchent le cache automatiquement.
Chemin rapide « snippets seulement »
Pour un ancrage léger, vous pouvez sauter la récupération des pages et fournir directement au modèle les titres + snippets du SERP — un seul appel API, sans crawling. C’est moins cher et souvent suffisant pour des réponses factuelles rapides.