Key Takeaways
- RAG = رفع المستندات + ترك النموذج يجيب عن أسئلة حولها مع الاستشهاد بالمصادر.
- Open WebUI يملك أبسط RAG مدمج. ارفع PDF، واطرح الأسئلة. إعداد في 5 دقائق.
- LlamaIndex هو الإطار الأكثر مرونة لبناء خطوط أنابيب RAG.
- LangChain هو الإطار الاحترافي الأكثر استخداماً، بمنظومة ضخمة.
- Chroma وQdrant هما قاعدتا البيانات المتجهية الرئيسيتان لتخزين أجزاء المستندات.
- في أبريل 2026، RAG المحلي ناضج وجاهز للإنتاج.
ما هو RAG (التوليد المعزّز بالاسترجاع)؟
RAG تقنية تتيح لنموذج LLM لديك الإجابة عن أسئلة حول مستنداتك الخاصة دون الحاجة إلى ضبط النموذج بدقة.
العملية: (1) ارفع مستنداتك (ملفات PDF، ملفات نصية)، (2) قسّمها إلى أجزاء، (3) حوّل الأجزاء إلى تضمينات (متجهات رقمية)، (4) خزّن التضمينات في قاعدة بيانات متجهية، (5) عند طرح سؤال، استرجع الأجزاء ذات الصلة من قاعدة البيانات، (6) مرّر الأجزاء + السؤال إلى LLM، (7) يجيب LLM بناءً على الأجزاء.
RAG مفضّل على الضبط الدقيق عندما تتغير مستنداتك بشكل متكرر (الضبط الدقيق تدريب لمرة واحدة) وتحتاج إلى نسب المصادر (يعرض RAG المستندات المستخدمة).
أفضل 8 أدوات RAG محلية في 2026
| الأداة | النوع | مثالية لـ | قاعدة البيانات المتجهية | منحنى التعلّم |
|---|---|---|---|---|
| Open WebUI | تطبيق ويب (Docker) | المبتدئون، أبسط إعداد | مدمجة | لا يوجد |
| LlamaIndex | إطار Python | خطوط أنابيب مرنة | أي منها (Chroma، Qdrant، Pinecone) | متوسط |
| LangChain | إطار Python | أنظمة الإنتاج | أي منها | متوسط |
| Chroma | قاعدة بيانات متجهية | RAG بسيط | Chroma (مدمجة) | منخفض |
| Qdrant | قاعدة بيانات متجهية | RAG قابل للتوسع | Qdrant (موزّعة) | متوسط |
| Weaviate | قاعدة بيانات متجهية | استعلامات GraphQL | Weaviate | متوسط |
| Milvus | قاعدة بيانات متجهية | النطاق الكبير | Milvus | مرتفع |
| Text-Generation-WebUI RAG | امتداد | مدمج مع النموذج | مدمجة | منخفض |
كيف تستخدم Open WebUI RAG (الخيار الأبسط)؟
يملك Open WebUI RAG مدمجاً. دون إعداد إضافي بخلاف Docker. ارفع المستندات واطرح الأسئلة فقط.
# 1. Ejecutar Open WebUI con Docker
docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
ghcr.io/open-webui/open-webui:latest
# 2. Abre http://localhost:3000
# 3. Haz clic en "+" junto al campo de mensaje → "Subir archivos"
# 4. Selecciona PDFs o archivos de texto
# 5. Haz preguntas -- Open WebUI recupera los chunks relevantes
# 6. El modelo responde basándose en los documentos, con citasكيف تبني RAG باستخدام LlamaIndex؟
LlamaIndex إطار يدير تحميل المستندات والتقطيع والتضمين والاسترجاع. مرن، متوافق مع أي قاعدة بيانات متجهية.
# 1. Instalar
pip install llama-index
pip install llama-index-embeddings-ollama # usar embeddings de Ollama en local
pip install llama-index-vector-stores-chroma # usar Chroma para almacenamiento
# 2. Pipeline RAG sencillo
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.embeddings.ollama import OllamaEmbedding
# Cargar documentos
documents = SimpleDirectoryReader("./documents").load_data()
# Crear índice con embeddings locales
embedding_model = OllamaEmbedding(model_name="nomic-embed-text")
index = VectorStoreIndex.from_documents(
documents,
embed_model=embedding_model
)
# Consulta
query_engine = index.as_query_engine()
response = query_engine.query("What does the document say about X?")
print(response)كيف تبني RAG باستخدام LangChain؟
LangChain هو الإطار الأكثر استخداماً لأنظمة RAG في الإنتاج. متوافق مع جميع قواعد البيانات المتجهية ومزوّدي LLM.
# pip install langchain langchain-community langchain-chroma
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOllama
from langchain.chains import RetrievalQA
# Cargar documentos
loader = DirectoryLoader("./documents")
docs = loader.load()
# Dividir en chunks
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
chunks = splitter.split_documents(docs)
# Crear embeddings y vector store
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(chunks, embeddings)
# Crear cadena QA
llm = ChatOllama(model="llama3.2:8b")
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# Responder preguntas
result = qa.run("What does the document say about X?")
print(result)أي قواعد البيانات المتجهية أفضل لـ RAG المحلي؟
Chroma (الأبسط): قاعدة بيانات متجهية ضمن العملية. دون إعداد خادم. مثالية لمشاريع RAG الصغيرة (< 1M مستند).
Qdrant (قابلة للتوسع): مستضافة ذاتياً أو سحابية. أفضل لـ RAG واسع النطاق. وظائف أكثر من Chroma.
Weaviate: قائمة على GraphQL. جيدة للاستعلامات المعقدة على التضمينات.
Milvus: من فئة المؤسسات. لـ RAG ضخم (100M+ مستند).
لمعظم عمليات النشر المحلية، Chroma كافية والأبسط.
هل يجب أن تستخدم RAG أم الضبط الدقيق؟
استخدم هذا المعيار:
- استخدم RAG إذا: كانت مستنداتك تتغير بشكل متكرر، أو احتجت إلى نسب المصادر، أو أردت صفر تدريب للنموذج، أو كان لديك أقل من 100K مستند.
- استخدم الضبط الدقيق إذا: كانت قاعدة معرفتك ثابتة، أو أردت أن "يفهم" النموذج المجال فعلاً، أو احتجت إلى سرعة استدلال (النماذج المضبوطة بدقة أسرع).
- ادمج كليهما: اضبط نموذجاً بدقة على مجالك ثم أضف RAG فوقه لأسئلة وأجوبة عالية الجودة جداً.
أخطاء شائعة مع RAG المحلي
- استخدام حجم جزء خاطئ. صغير جداً (100 رمز) = أجزاء صغيرة كثيرة جداً. كبير جداً (2000 رمز) = غير محدد. الأمثل 500-1000 رمز.
- نسيان استخدام التضمينات. لا يمكنك إجراء RAG دون تحويل الأجزاء إلى تضمينات. استخدم `nomic-embed-text` (أداء قوي باللغة الإنجليزية) أو `bge-m3` (متعدد اللغات).
- عدم تقييم جودة الاسترجاع. عمل RAG لا يعني أنه يسترجع المستندات الصحيحة. اختبر بأسئلة معروفة وتحقق من أن الأجزاء المسترجعة ذات صلة.
- معاملة RAG كبديل عن الضبط الدقيق. RAG هو استرجاع + تعلّم في السياق. الضبط الدقيق هو تكييف فعلي للنموذج. هما أداتان مختلفتان لاستخدامات مختلفة.
الأسئلة الشائعة حول RAG المحلي
كم مستنداً يستطيع RAG المحلي التعامل معه؟
يعتمد على قاعدة البيانات المتجهية. تتعامل Chroma مع 100K-1M مستند بسهولة على عتاد استهلاكي. لأكثر من 1M، استخدم Qdrant أو Milvus.
هل يستطيع RAG العمل مع الصور؟
فقط إذا استخرجت النص أولاً (OCR). لفهم حقيقي للصور، استخدم نماذج متعددة الوسائط مثل Llama 3.2 Vision مع RAG.
هل RAG أبطأ من الضبط الدقيق؟
يتطلب RAG استرجاعاً (مللي ثوانٍ) + تمرير السياق (رموز مضافة إلى الموجّه). عادةً أبطأ من الاستدلال بنموذج مضبوط بدقة، لكنه أسرع بكثير في الإعداد.
هل يمكنني استخدام تضمينات سحابية مع نماذج LLM المحلية؟
نعم. استخدم تضمينات سحابية (OpenAI، Cohere) للاسترجاع ونماذج LLM محلية للإجابات. النهج الهجين شائع.
المصادر
- توثيق LlamaIndex -- docs.llamaindex.ai
- توثيق LangChain -- python.langchain.com
- توثيق Chroma -- docs.trychroma.com
- توثيق Qdrant -- qdrant.tech/documentation
- ورقة RAG -- arxiv.org/abs/2005.11401