لا يستطيع RAG الثابت الإجابة عن “ماذا حدث هذا الأسبوع”. إضافة خطوة بحث ويب حية عبر Google Search API تثبّت نموذجك اللغوي على مصادر آنية قابلة للاقتباس. إليك النمط، باستخدام serp.cheap.
البنية
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
الخطوة 1 — جلب مصادر حديثة
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]
]
الخطوة 2 — الجلب والتقسيم
اجلب كل url، واستخرج النص الرئيسي، وقسّمه إلى مقاطع بنحو 500 رمز. (استخدم أداة التحميل/التقسيم الحالية لديك — مثل trafilatura مع مقسّم نصوص.)
الخطوة 3 — التحويل إلى متجهات، الاسترجاع، التوليد
حوّل المقاطع إلى متجهات، استرجع أفضل-k منها للاستعلام، ومرّرها إلى النموذج مع تعليمات بأن يقتبس روابط المصادر. ولأن المصادر جاءت من SERP الحية، فإن الإجابة تعكس ما تقوله الصفحات الموثوقة حالياً.
لماذا يهم SERP API رخيص هنا
يطلق RAG عملية بحث عند كل استعلام. وبسعر $0.0006 لكل بحث جديد (النصف عند التخزين المؤقت)، يبقي serp.cheap تكلفة الاسترجاع لكل إجابة ضئيلة جداً — والاستعلامات المتطابقة المتكررة تصيب ذاكرة التخزين المؤقت تلقائياً.
المسار السريع بالمقتطفات فقط
للتثبيت الخفيف يمكنك تخطّي جلب الصفحات وتغذية النموذج بـ عناوين ومقتطفات SERP مباشرة — استدعاء واحد لـ API، دون زحف. إنه أرخص وكثيراً ما يكون كافياً للإجابات الواقعية السريعة.