Skip to main content
PromptQuorum
الرئيسية/LLM المحلية المتقدمة/Haystack من deepset 2026: إطار عمل Python لبناء أنظمة RAG والبحث الإنتاجي
RAG & Document Chat

Haystack من deepset 2026: إطار عمل Python لبناء أنظمة RAG والبحث الإنتاجي

·12 دقيقة قراءة·بقلم Hans Kuepper · مؤسس PromptQuorum، أداة إرسال الذكاء الاصطناعي متعددة النماذج · PromptQuorum

Haystack إطار عمل Python مجاني ومفتوح المصدر (Apache 2.0) من الشركة الألمانية deepset، لبناء أنظمة بحث و RAG إنتاجية من مكونات Component و Pipeline صريحة ومحددة النوع — وليس منتجًا مستضافًا.

يسبق Haystack مصطلح "RAG" نفسه — بنته شركة deepset عام 2019 كإطار عمل للإجابة الاستخراجية على الأسئلة، قبل سنوات من أن يصبح التوليد المعزَّز بالاسترجاع الأسلوب المعياري لربط نموذج لغوي كبير بمستنداتك الخاصة. هذا الأصل القادم من عالم محركات البحث لا يزال يشكّل بنيته اليوم: كل خطوة معالجة هي Component محددة النوع، موصولة داخل Pipeline صريح — وليست سلسلة من الاستدعاءات الضمنية.

Haystack من deepset 2026: إطار عمل Python لبناء أنظمة RAG والبحث الإنتاجي

النقاط الرئيسية

  • ترخيص Apache 2.0، استضافة ذاتية مجانية — pip install haystack-ai، الشيفرة المصدرية على github.com/deepset-ai/haystack
  • طوّرته deepset، شركة مقرها ألمانيا، منذ عام 2019، بدايةً كإطار عمل للإجابة الاستخراجية على الأسئلة والبحث — قبل أن يصبح التوليد المعزَّز بالاسترجاع مصطلحًا شائعًا
  • مكوّنان أساسيان: Component (خطوة معالجة واحدة: retriever، embedder، generator، converter) و Pipeline (رسم بياني متصل من Components عبر استدعاءات .add_component() و.connect() صريحة)
  • Document Store هو تجريد خلفي قابل للاستبدال — يوفر Haystack مخزنًا في الذاكرة للاختبار ويتكامل مع Elasticsearch وWeaviate وPinecone وقواعد بيانات متجهية أخرى
  • مستقل عن مزوّد النموذج: يتكامل مع OpenAI وAnthropic وMistral وCohere وHugging Face وGoogle وAzure OpenAI وAWS Bedrock
  • تبيع deepset أيضًا Haystack Enterprise Platform وHaystack Enterprise Starter — طبقات تجارية توفر أداة بناء pipeline مرئية ونشرًا مُدارًا فوق النواة مفتوحة المصدر نفسها

📍 في جملة واحدة

Haystack إطار عمل Python مفتوح المصدر (Apache 2.0) من deepset لبناء أنظمة بحث و RAG إنتاجية من تجريدات Component و Pipeline صريحة ومحددة النوع، وهو حاليًا في الإصدار 3.1.

💬 بعبارات بسيطة

بدلًا من ربط استدعاءات الدوال تسلسليًا كما تفعل معظم مكتبات النماذج اللغوية، يفرض Haystack توصيل Components مسمّاة — retriever وprompt builder وgenerator — داخل كائن Pipeline عبر استدعاءات .connect() صريحة، فيصبح تدفق البيانات مرئيًا وقابلًا للاختبار بدلًا من أن يكون مخفيًا داخل سلسلة.

📌ملاحظة: إطار العمل مفتوح المصدر ومنتجات deepset التجارية منفصلة: تتناول هذه المراجعة فقط الشيفرة المجانية ذاتية الاستضافة تحت رخصة Apache 2.0، ما لم يُذكر صراحةً "Enterprise Platform" في قسم ما.

ما هو Haystack؟

Haystack إطار عمل Python مفتوح المصدر (Apache 2.0، github.com/deepset-ai/haystack) لبناء تطبيقات البحث والإجابة على الأسئلة والتوليد المعزَّز بالاسترجاع (RAG). تتولى صيانته deepset، شركة مقرها ألمانيا، ويُثبَّت عبر pip install haystack-ai.

  • بدأ عام 2019 كإطار عمل للإجابة الاستخراجية على الأسئلة — إيجاد المقطع الدقيق للإجابة داخل مستند — قبل أن تجعل النماذج التوليدية RAG النمط السائد
  • أُعيدت كتابته بشكل جوهري حول Haystack 2.0 نحو بنية Component/Pipeline الحالية، وهو حاليًا في الإصدار 3.1 (صدر في 2026-08-24)
  • يوفر Components لتحويل المستندات (PDF وHTML وDOCX) وتقسيم النصوص والـembedding والـretrieval (بالكلمات المفتاحية BM25 وبالمتجهات/الدلالي) والتوليد والتقييم
  • تجريد Document Store يفصل منطق الـpipeline عن خلفية التخزين — استبدل المخزن في الذاكرة بـElasticsearch أو Weaviate أو Pinecone دون إعادة كتابة الـpipeline
  • يوفر مخزن مستندات في الذاكرة جاهزًا للتطوير المحلي والاختبار، دون الحاجة إلى قاعدة بيانات خارجية للبدء
  • يدعم retrieval بالكلمات المفتاحية (BM25) وretrieval بالمتجهات/الدلالي في نفس الـpipeline، إضافة إلى retrieval هجين يجمع بينهما

كيف تعمل بنية Pipeline/Component في Haystack؟

الـComponent خطوة معالجة واحدة (retriever أو embedder أو generator)، والـPipeline رسم بياني موجّه من Components متصلة عبر استدعاءات .add_component() و.connect() صريحة، بحيث يكون تدفق البيانات بين الخطوات مرئيًا في الشيفرة بدلًا من أن يكون مخفيًا داخل كائن سلسلة.

  • يمكن تسلسل الـpipelines إلى YAML — يمكن حفظ pipeline مبني بلغة Python، وإدارة نسخه، وإعادة تحميله دون إعادة تشغيل الشيفرة التي بنته
  • التفرع والدمج مدمجان في نموذج الرسم البياني — يمكن لمخرجات retriever واحد أن تغذّي مولّدين مختلفين، أو يمكن لـretrieverين أن يغذّيا ranker واحدًا، دون شيفرة ربط إضافية
  • بما أن الاتصالات صريحة، فإن pipeline معطوبًا (أنواع غير متطابقة، اتصال ناقص) يفشل عند بناء الـpipeline برسالة خطأ واضحة، بدلًا من الفشل وقت التشغيل في أعماق سلسلة الاستدعاءات

كيف يختلف Haystack عن LangChain و LlamaIndex؟

Haystack وLangChain وLlamaIndex جميعها أطر عمل Python تعتمد الشيفرة أولًا، دون أداة بناء مرئية في نواتها مفتوحة المصدر — يكمن الفرق في التجريد المركزي لكل منها. ينظّم Haystack كل شيء حول رسوم Pipeline صريحة من Components محددة النوع؛ ينظّم LlamaIndex حول Index مبني فوق بياناتك مع كائنات Retriever وQueryEngine فوقه؛ ينظّم LangChain حول chains، وفي امتداده LangGraph حول state graph للوكلاء.

كيف تبني أول pipeline في Haystack؟

يحتاج pipeline RAG بسيط إلى ثلاث Components متصلة: retriever وprompt builder وgenerator، موصولة داخل كائن Pipeline ومُشغَّلة باستعلام.

  1. 1
    ثبّت الحزمة: pip install haystack-ai.
  2. 2
    استورد ما تحتاجه: from haystack import Pipeline, Document; from haystack.components.generators.chat import OpenAIChatGenerator; from haystack.components.retrievers import InMemoryBM25Retriever; from haystack.document_stores.in_memory import InMemoryDocumentStore; from haystack.components.builders import ChatPromptBuilder; from haystack.utils import Secret.
  3. 3
    أنشئ document store واكتب فيه المستندات: document_store = InMemoryDocumentStore()، ثم document_store.write_documents([Document(content="...")​, ...]).
  4. 4
    أنشئ الـComponents: retriever = InMemoryBM25Retriever(document_store=document_store)، وprompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")، وllm = OpenAIChatGenerator(api_key=Secret.from_env_var("OPENAI_API_KEY"), model="gpt-4o-mini").
  5. 5
    اجمع الـpipeline: rag_pipeline = Pipeline()، ثم rag_pipeline.add_component("retriever", retriever)، وrag_pipeline.add_component("prompt_builder", prompt_builder)، وrag_pipeline.add_component("llm", llm).
  6. 6
    وصّل الاتصالات: rag_pipeline.connect("retriever", "prompt_builder.documents") وrag_pipeline.connect("prompt_builder", "llm").
  7. 7
    شغّله: results = rag_pipeline.run({"retriever": {"query": question}, "prompt_builder": {"question": question}}).
python
from haystack import Pipeline, Document
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.retrievers import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.builders import ChatPromptBuilder
from haystack.utils import Secret

document_store = InMemoryDocumentStore()
document_store.write_documents([
    Document(content="My name is Jean and I live in Paris."),
    Document(content="My name is Mark and I live in Berlin."),
    Document(content="My name is Giorgio and I live in Rome."),
])

retriever = InMemoryBM25Retriever(document_store=document_store)
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
llm = OpenAIChatGenerator(api_key=Secret.from_env_var("OPENAI_API_KEY"), model="gpt-4o-mini")

rag_pipeline = Pipeline()
rag_pipeline.add_component("retriever", retriever)
rag_pipeline.add_component("prompt_builder", prompt_builder)
rag_pipeline.add_component("llm", llm)
rag_pipeline.connect("retriever", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder", "llm")

results = rag_pipeline.run({"retriever": {"query": question}, "prompt_builder": {"question": question}})

هل أحتاج مفتاح API من OpenAI لتجربة Haystack؟

يستخدم المثال أعلاه OpenAIChatGenerator، لكن Haystack يوفر أيضًا Components مولّدة لـHugging Face وAnthropic وMistral وCohere وGoogle وAzure OpenAI وAWS Bedrock، إضافة إلى تكاملات مع نماذج محلية — فأنت لست مقيدًا بمزوّد نموذج واحد.

هل أحتاج قاعدة بيانات متجهية للبدء؟

لا. لا يتطلب InMemoryDocumentStore أي خدمة خارجية، وهو كافٍ لبناء واختبار pipeline محليًا. استبدله بـElasticsearch أو Weaviate أو Pinecone فقط عند الانتقال إلى نطاق الإنتاج.

لمن يناسب Haystack؟

يناسب Haystack الفِرق التي تحتاج تحكمًا صريحًا في pipeline بحث أو RAG إنتاجي وتشعر بالراحة في كتابة Python — فهو ليس أداة بلا شيفرة أو مرئية في نواته مفتوحة المصدر.

Haystack مقابل البدائل

أطر العمل الثلاثة أدناه جميعها مفتوحة المصدر، تعتمد Python بشكل أساسي، ويُصان كل منها بنشاط — يعتمد الاختيار على أي تجريد مركزي يناسب طريقة تفكير فريقك حول الـpipeline.

الأداة
التجريد المركزي
الترخيص
الأنسب لـ
HaystackPipeline من Components محددة النوعApache 2.0البحث الإنتاجي / RAG قابل للقياس
LlamaIndexIndex + Retriever + QueryEngineMITاستيعاب وفهرسة سريعان
LangChainChains / LangGraph state graphMITشيفرة ربط عامة لتطبيقات LLM والوكلاء

أخطاء شائعة عند تقييم Haystack

تنشأ هذه الأخطاء من التعامل مع Haystack إما كمنتج SaaS مستضاف أو كبديل مباشر لتجريد إطار عمل آخر.

الأسئلة الشائعة

ما هو Haystack؟

Haystack إطار عمل Python مفتوح المصدر من deepset، شركة مقرها ألمانيا، لبناء خطوط البحث والإجابة على الأسئلة وRAG. مرخّص بموجب Apache 2.0، ويُثبَّت عبر pip install haystack-ai.

من يطوّر Haystack؟

deepset، شركة مقرها ألمانيا. أطلقت deepset Haystack عام 2019 كإطار عمل للإجابة الاستخراجية على الأسئلة، قبل أن يصبح التوليد المعزَّز بالاسترجاع مصطلحًا شائعًا.

بأي ترخيص يُنشَر Haystack؟

Apache License 2.0. الشيفرة المصدرية على github.com/deepset-ai/haystack ويمكن استخدامها وتعديلها واستضافتها ذاتيًا بحرية.

ما هو الإصدار الحالي من Haystack؟

Haystack 3.1، صدر في 24 أغسطس 2026. أُعيدت كتابة إطار العمل بشكل جوهري حول Haystack 2.0 نحو بنية Component/Pipeline الحالية.

ما الفرق بين Component وPipeline في Haystack؟

الـComponent خطوة معالجة واحدة — retriever أو embedder أو prompt builder أو generator. الـPipeline رسم بياني من Components متصلة عبر استدعاءات .add_component() و.connect() صريحة؛ يمر تشغيل الـpipeline عبر الرسم البياني حسب ترتيب الاعتماديات.

كيف يختلف Haystack عن LlamaIndex؟

ينظّم Haystack الـpipelines حول Components صريحة ومحددة النوع، موصولة داخل رسم Pipeline. ينظّم LlamaIndex حول بناء Index فوق بياناتك، والاستعلام عنه عبر Retriever وQueryEngine. عادةً ما يكون LlamaIndex أسرع للبدء في فهرسة البيانات؛ يوفر رسم Haystack الصريح رؤية وتحكمًا أكبر للـpipelines الإنتاجية.

كيف يختلف Haystack عن LangChain؟

كلاهما إطارا عمل Python يعتمدان الشيفرة أولًا، دون أداة بناء مرئية في النواة مفتوحة المصدر. يتمحور LangChain حول chains، وعبر LangGraph حول state graph للوكلاء. يتمحور Haystack حول Pipeline من Components محددة النوع، ويعامل الـretrieval والبحث كاهتمامات من الدرجة الأولى وقابلة للقياس، لا كحلقة في سلسلة عامة.

هل يتطلب Haystack قاعدة بيانات متجهية محددة؟

لا. يوفر Haystack Document Store في الذاكرة للتطوير، ويتكامل مع عدة قواعد بيانات متجهية وخلفيات بحث، منها Elasticsearch وWeaviate وPinecone، عبر واجهة Component نفسها — تبديل الخلفية لا يتطلب إعادة كتابة الـpipeline.

ما هي منصة Haystack Enterprise Platform من deepset؟

هي عرض deepset التجاري المدفوع المبني فوق إطار عمل Haystack مفتوح المصدر، ويضيف أداة بناء pipeline مرئية وخيارات نشر مُدار أو ذاتي الاستضافة. وهي منفصلة عن إطار العمل المجاني ذاتي الاستضافة بموجب Apache 2.0 الذي تتناوله هذه المراجعة.

المصادر

← العودة إلى LLM المحلية المتقدمة