Statyczny RAG nie odpowie na pytanie „co wydarzyło się w tym tygodniu”. Dodanie kroku wyszukiwania na żywo z Google Search API opiera Twój LLM na aktualnych, cytowalnych źródłach. Oto wzorzec, z użyciem serp.cheap.
Architektura
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
Krok 1 — pobierz świeże źródła
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]
]
Krok 2 — pobierz i podziel na fragmenty
Pobierz każdy url, wyodrębnij główny tekst, podziel na fragmenty po ~500 tokenów. (Użyj swojego istniejącego loadera/splittera — np. trafilatura + text splitter.)
Krok 3 — osadź, pobierz, wygeneruj
Osadź fragmenty, pobierz top-k dla zapytania i przekaż je modelowi z instrukcją, aby cytował źródłowe adresy URL. Ponieważ źródła pochodzą z SERP na żywo, odpowiedź odzwierciedla to, co aktualnie mówią wiarygodne strony.
Dlaczego tanie SERP API ma tu znaczenie
RAG uruchamia wyszukiwanie przy każdym zapytaniu. Przy koszcie $0.0006 za świeże wyszukiwanie (połowa z pamięci podręcznej) serp.cheap utrzymuje koszt pobierania na odpowiedź na znikomym poziomie — a powtarzające się identyczne zapytania trafiają do pamięci podręcznej automatycznie.
Szybka ścieżka tylko ze snippetami
Do lekkiego osadzania w kontekście możesz pominąć pobieranie stron i przekazać modelowi bezpośrednio tytuły + snippety z SERP — jedno wywołanie API, bez crawlowania. Jest taniej i często wystarcza do szybkich odpowiedzi opartych na faktach.