أنت تتصفّح كضيف — سجّل عشان تنشئ مفتاح وتجرّب النماذج وتاخد البونص الترحيبي.

RAG
شات بوت
أمثلة كود

ابنِ شات بوت يرد من ملفاتك أنت (RAG بالعربي): الدليل العملي خطوة بخطوة 2026

05/08/2026, 10:00 3 دقائق قراءة 1 مشاهدة مشاركة

أكتر طلب بيوصلنا من أصحاب الشركات والمستقلين: «عايز شات بوت يرد على العملاء من بيانات شركتي أنا — الأسعار، السياسات، المنتجات — مش كلام عام من النت». التقنية اللي بتعمل ده اسمها RAG (Retrieval-Augmented Generation)، وهي أكتر مشروع ذكاء اصطناعي مربح للمستقلين حاليًا.

الفكرة في 3 أسطر

  1. قطّع مستنداتك لفقرات صغيرة وحوّل كل فقرة لـ«بصمة رقمية» (Embedding).
  2. لما ييجي سؤال، دوّر على أقرب الفقرات ليه دلاليًا (مش بحث كلمات — بحث معنى).
  3. ادّي الفقرات دي للموديل مع السؤال وقوله: «جاوب من السياق ده فقط».

النتيجة: بوت دقيق، بيقول «معنديش المعلومة دي» بدل ما يخترع، وبيتحدث بتحديث ملفاتك بس.

كود كامل شغّال (بايثون)

مثال مصغّر لكنه حقيقي — بوت بيجاوب من أسئلة شائعة لمتجر:

import numpy as np
from openai import OpenAI

client = OpenAI(api_key="sk-...", base_url="https://soal.help/api/v1")

# 1) "مستنداتك" — في الواقع هتقراها من ملفات PDF/Word مقطّعة لفقرات
docs = [
    "الشحن داخل القاهرة والجيزة خلال 24 ساعة بتكلفة 50 جنيه.",
    "الشحن للمحافظات من 2 لـ 4 أيام عمل بتكلفة 75 جنيه.",
    "الاسترجاع متاح خلال 14 يوم بشرط وجود الفاتورة والعبوة الأصلية.",
    "الدفع متاح كاش عند الاستلام أو فودافون كاش أو إنستاباي.",
]

# 2) Embeddings لكل فقرة (مرة واحدة، وخزّنها)
emb = client.embeddings.create(model="text-embedding-3-small", input=docs)
doc_vecs = np.array([e.embedding for e in emb.data])

def answer(question: str) -> str:
    # 3) بصمة السؤال + أقرب فقرتين بالمعنى
    q_vec = np.array(client.embeddings.create(
        model="text-embedding-3-small", input=[question]).data[0].embedding)
    sims = doc_vecs @ q_vec / (np.linalg.norm(doc_vecs, axis=1) * np.linalg.norm(q_vec))
    context = "
".join(docs[i] for i in sims.argsort()[-2:])

    # 4) الموديل يجاوب من السياق فقط
    resp = client.chat.completions.create(
        model="gpt-5-mini",
        messages=[
            {"role": "system", "content":
             "انت مساعد خدمة عملاء. جاوب من السياق التالي فقط، "
             "ولو الإجابة مش موجودة قول: معنديش المعلومة دي.
" + context},
            {"role": "user", "content": question},
        ],
    )
    return resp.choices[0].message.content

print(answer("الشحن لأسوان بياخد قد إيه وبكام؟"))
print(answer("عندكم فرع في الإسكندرية؟"))  # هيقول معنديش المعلومة دي

جرّب — السؤال الأول هيترد عليه صح من فقرة المحافظات، والتاني هيرفض بأدب بدل ما يخترع فرع وهمي. ده بالظبط الفرق بين بوت محترم وبوت فضيحة.

من المثال للإنتاج: 4 ترقيات

  1. التقطيع الذكي: قطّع ملفاتك لفقرات 200-500 كلمة مع تداخل بسيط بينها. مكتبات زي pypdf وpython-docx بتقرأ الملفات.
  2. قاعدة بيانات متجهات: مع آلاف الفقرات استخدم Chroma أو Qdrant (مجانيين ومفتوحين المصدر) بدل numpy.
  3. موديل أقوى للردود الحساسة: gpt-5-mini ممتاز وسعره رمزي؛ للاستشارات المعقدة جرّب claude-sonnet-5-5 (قارن الأسعار).
  4. وصّله بقناة حقيقية: حوّله لبوت واتساب أو تليجرام — الشرح الكامل هنا، أو من غير كود خالص عبر n8n (دليل n8n بالعربي).

التكلفة بالجنيه (الجزء الحلو)

الـ Embeddings من أرخص خدمات الذكاء الاصطناعي على الإطلاق — فهرسة مئات الصفحات بتتكلف جنيهات معدودة، لمرة واحدة. والردود بـ gpt-5-mini بتكلفتها أجزاء من الجنيه. يعني بوت معرفي كامل لشركة صغيرة بيشتغل بأقل من تكلفة وجبة في الشهر. (افهم حساب التوكنز بالتفصيل).

أسئلة بتتكرر

إيه الفرق بين RAG والـ Fine-tuning؟ الـ RAG بيدّي الموديل معلوماتك وقت السؤال (سهل، رخيص، بيتحدث فورًا). الـ Fine-tuning بيعيد تدريب الموديل (مكلف ومعقد). لـ 95% من حالات الشركات: RAG هو الإجابة.

بياناتي آمنة؟ بياناتك بتتبعت وقت الطلب بس ومش بتستخدم في تدريب نماذج، وبنشفّر كل الاتصالات. اقرأ سياسة الخصوصية.

أبدأ إزاي؟ اعمل حساب، اشحن بالجنيه، انسخ الكود اللي فوق، وحط ملفاتك مكان الأمثلة. أول بوت ليك هيشتغل النهاردة.

جاهز تجرب بنفسك؟

مفتاح API واحد يفتح لك GPT و Claude و Gemini وتوليد الصور والفيديو — بالجنيه المصري وبدون فيزا.