Il RAG statico non può rispondere a “cosa è successo questa settimana”. Aggiungere un passo di ricerca web live con una Google Search API ancora il tuo LLM a fonti attuali e citabili. Ecco il pattern, usando serp.cheap.
L’architettura
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
Passo 1 — recupera fonti fresche
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]
]
Passo 2 — scarica e suddividi
Scarica ogni url, estrai il testo principale, dividilo in chunk da circa 500 token. (Usa il tuo loader/splitter esistente — per esempio trafilatura + un text splitter.)
Passo 3 — incorpora, recupera, genera
Incorpora i chunk, recupera i top-k per la query e passali al modello con l’istruzione di citare gli URL delle fonti. Poiché le fonti provengono dalla SERP live, la risposta riflette ciò che attualmente dicono le pagine autorevoli.
Perché qui conta una SERP API economica
Il RAG dirama una ricerca a ogni query. A $0.0006 per ricerca fresca (la metà con cache), serp.cheap mantiene trascurabile il costo di recupero per risposta — e le query identiche ricorrenti colpiscono automaticamente la cache.
Percorso veloce con soli snippet
Per un ancoraggio leggero puoi saltare il download delle pagine e dare al modello direttamente i titoli + snippet della SERP — una sola chiamata API, niente crawling. È più economico e spesso sufficiente per risposte fattuali rapide.