El RAG estático no puede responder “qué pasó esta semana”. Añadir un paso de búsqueda web en vivo con una Google Search API fundamenta tu LLM en fuentes actuales y citables. Aquí tienes el patrón, usando serp.cheap.
La arquitectura
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
Paso 1 — recupera fuentes frescas
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]
]
Paso 2 — obtén y fragmenta
Obtén cada url, extrae el texto principal y divídelo en fragmentos de ~500 tokens. (Usa tu loader/splitter existente, p. ej. trafilatura + un divisor de texto.)
Paso 3 — incrusta, recupera, genera
Incrusta los fragmentos, recupera los top-k para la consulta y pásalos al modelo con la instrucción de citar las URLs de origen. Como las fuentes provienen de la SERP en vivo, la respuesta refleja lo que dicen actualmente las páginas autorizadas.
Por qué importa aquí una SERP API barata
El RAG dispara una búsqueda en cada consulta. A $0.0006 por búsqueda fresca (la mitad en caché), serp.cheap mantiene el coste de recuperación por respuesta insignificante, y las consultas idénticas recurrentes aciertan en la caché automáticamente.
Ruta rápida solo con snippets
Para una fundamentación ligera puedes omitir la obtención de páginas y alimentar al modelo directamente con los títulos + snippets de la SERP: una sola llamada a la API, sin crawling. Es más barato y a menudo suficiente para respuestas factuales rápidas.