Skip to main content
PromptQuorum
الرئيسية/LLM المحلية المتقدمة/مراجعة txtai 2026: قاعدة بيانات متجهية مضمّنة بلا خادم (Apache 2.0)
RAG & Document Chat

مراجعة txtai 2026: قاعدة بيانات متجهية مضمّنة بلا خادم (Apache 2.0)

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

txtai مكتبة Python مجانية ومفتوحة المصدر (Apache 2.0) تجمع بين قاعدة بيانات متجهية والبحث الدلالي وخطوط أنابيب RAG وسير عمل نماذج اللغة الكبيرة في حزمة واحدة — تعمل مضمّنة داخل عملية التطبيق، تماماً مثل SQLite، بدلاً من الحاجة إلى خادم قاعدة بيانات منفصل.

تجمع معظم أنظمة RAG بين ثلاثة عناصر منفصلة: قاعدة بيانات متجهية تعمل كخدمة مستقلة، وخط أنابيب للتضمينات (embeddings)، وإطار عمل لتنسيق استدعاءات نموذج اللغة الكبير. تدمج txtai هذه العناصر الثلاثة في حزمة Python واحدة تعمل ضمن العملية نفسها، دون الحاجة إلى خادم منفصل.

مراجعة txtai 2026: قاعدة بيانات متجهية مضمّنة بلا خادم (Apache 2.0)

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

  • ترخيص Apache 2.0، مجاني ومفتوح المصدر، ولا توجد فئة مدفوعة منفصلة للمكتبة نفسها
  • مضمّنة افتراضياً — فهرس متجهات Faiss مع تخزين بيانات وصفية عبر SQLite، وكلاهما كملفات محلية
  • حزمة واحدة تغطي البحث المتجهي وRAG والوكلاء وسير العمل متعدد النماذج — وليس تخزين المتجهات فقط
  • مبنية على Hugging Face Transformers وSentence Transformers وFastAPI؛ تتطلب Python 3.10 أو أحدث
  • تدعم كلاً من نماذج اللغة المحلية (Hugging Face وllama.cpp وOllama وvLLM) والنماذج المعتمدة على واجهة برمجة تطبيقات (OpenAI وClaude وAWS Bedrock عبر LiteLLM)
  • تصونها NeuML (المؤسس David Mezzetti) — لا يوجد بعد منتج سحابي خاص بها؛ وخدمة استضافة باسم txtai.cloud لا تزال قيد التطوير

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

txtai مكتبة Python مجانية ومفتوحة المصدر (Apache 2.0) تجمع قاعدة بيانات متجهية وبحثاً دلالياً وخطوط أنابيب RAG وتنسيق نماذج اللغة الكبيرة في حزمة مضمّنة واحدة، دون خادم منفصل.

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

بدلاً من تشغيل Chroma أو Qdrant كخدمة في الخلفية وإضافة إطار عمل منفصل فوقها، يكفي تثبيت txtai عبر pip للحصول على مخزن المتجهات والبحث ومنطق RAG داخل برنامج Python نفسه — تماماً كما تعيش SQLite داخل التطبيق بدلاً من العمل كخادم قاعدة بيانات مستقل.

📌ملاحظة: تستبدل txtai قابلية التوسع الأفقي التي تتمتع بها خدمة قاعدة بيانات متجهية مخصصة بانعدام أي عبء نشر. هذه المقايضة منطقية للتطبيقات ذات العقدة الواحدة والنماذج الأولية — وليس لمجموعات البيانات التي تحتاج إلى التوزع على عدة أجهزة.

ما هي txtai؟

txtai إطار عمل Python مفتوح المصدر (ترخيص Apache 2.0، github.com/neuml/txtai) للبحث الدلالي وتنسيق نماذج اللغة الكبيرة وسير عمل نماذج اللغة، بناه وتصونه NeuML. المكوّن الأساسي فيه هو قاعدة بيانات embeddings، ويصفها التوثيق الرسمي بأنها اتحاد بين فهارس متجهية (كثيفة ومتفرقة) وشبكات رسوم بيانية وقواعد بيانات علائقية ضمن كائن واحد.

  • البحث المتجهي: تضمينات كثيفة ومتفرقة، وتصفية بلغة SQL، ونمذجة المواضيع، وتحليل الرسوم البيانية، وفهرسة متعددة الوسائط (نص، مستندات، صوت، صور، فيديو) ضمن فهرس واحد
  • خطوط الأنابيب: أغلفة جاهزة حول نماذج اللغة لأداء مهام الإجابة عن الأسئلة والتلخيص والترجمة والنسخ الصوتي ووسم النصوص
  • سير العمل: ربط عدة خطوط أنابيب في مهمة معالجة واحدة، من نص برمجي بسيط بخطوتين إلى معالجة دفعية متعددة النماذج
  • الوكلاء: وكلاء مستقلون يجمعون بين التضمينات وخطوط الأنابيب وسير العمل لإنجاز مهام متعددة الخطوات، مبنيون على إطار عمل smolagents
  • واجهات برمجة التطبيقات والروابط: خدمة REST/FastAPI إضافة إلى خادم Model Context Protocol (MCP)، مع روابط عميل للغات JavaScript وJava وRust وGo
  • أكثر من 70 دفتر ملاحظات توضيحي يغطي إطار العمل بالكامل، ويُصان جنباً إلى جنب مع المكتبة الأساسية

كيف تعمل البنية المضمّنة في txtai؟

**يحتفظ كائن Embeddings في txtai بفهرس المتجهات ومخزن البيانات الوصفية مباشرة داخل عملية Python، ويحفظ كليهما في ملفات محلية بدلاً من التواصل مع خدمة قاعدة بيانات منفصلة.** بشكل افتراضي، يستخدم فهرس المتجهات محرك Faiss، وتُخزَّن البيانات الوصفية للمحتوى في ملف SQLite محلي — وهو نفس نموذج "التضمين داخل عملية التطبيق" الذي تعتمده SQLite نفسها، بخلاف نموذج العميل/الخادم الذي تعتمده PostgreSQL.

  • محرك ANN (إعداد backend): الافتراضي هو Faiss؛ وتُدعم HNSW وAnnoy وpgvector كبدائل قابلة للاستبدال دون تغيير باقي الكود
  • تخزين المحتوى (إعداد content): الافتراضي عند التفعيل هو SQLite؛ ويُدعم أيضاً DuckDB أو قاعدة بيانات عميل/خادم عبر رابط اتصال للفرق التي تتجاوز ملفاً واحداً
  • تخزين الكائنات: تخزين ثنائي اختياري للصور أو الكائنات المسلسلة (pickle) العشوائية، مبني فوق فهرس embeddings نفسه
  • الاستمرارية: تكتب embeddings.save(path) الفهرس وقاعدة البيانات على القرص كدليل قابل للنقل، وتعيد embeddings.load(path) فتحه في عملية جديدة دون خطوة استيراد/تصدير
  • لا توجد عملية خادم يجب تشغيلها أو مراقبتها أو تصحيحها — يعيش الفهرس ويزول مع عملية التطبيق نفسها، تماماً كما تفعل ذاكرة تخزين مؤقت في الذاكرة أو قائمة على الملفات

ما الفرق بين txtai وقاعدة بيانات متجهية مستقلة؟

تعمل Chroma وQdrant وWeaviate وMilvus عادةً كخدمة مستقلة — حاوية أو نقطة نهاية مُدارة يتصل بها التطبيق عبر الشبكة. أما txtai فتعمل داخل العملية المستدعية نفسها، بشكل يشبه الفرق بين SQLite وPostgreSQL: لا سلسلة اتصال، ولا عملية منفصلة يجب إبقاؤها حية، ولا قفزة شبكية بين الكود والفهرس.

📌ملاحظة: توفّر Chroma أيضاً وضعاً مضمّناً للنماذج الأولية، لكن مسارها الإنتاجي يقود إلى خادم. لا تملك txtai وضعاً إنتاجياً منفصلاً تتطور نحوه — التضمين هو البنية الوحيدة التي تقدّمها.

هل تدعم txtai تقنية RAG والوكلاء الذكيين؟

نعم — يُعد التوليد المعزز بالاسترجاع (RAG) والوكلاء المستقلون من حالات الاستخدام الأساسية في txtai، وليسا ميزات مُضافة فوق مخزن متجهات.

  • RAG: يجمع خط أنابيب RAG بين فهرس Embeddings ونموذج لغة كبير، فيسترجع المقاطع ذات الصلة بالاستعلام ويولّد إجابة مع استشهاد بالمصادر — يصف التوثيق الرسمي لـ txtai تقنية RAG بأنها "أكثر من مجرد بحث متجهي"، إذ تدعم أيضاً استرجاع السياق من الويب وSQL
  • الوكلاء: مبنية على إطار عمل smolagents من Hugging Face، وتربط وكلاء txtai بين التضمينات وخطوط الأنابيب وسير العمل ووكلاء آخرين لإنجاز مهام متعددة الخطوات بشكل مستقل؛ كما تُدعم صياغة أوامر الوكلاء عبر ملفات agents.md وskill.md
  • سير العمل: يمكن ربط خطوط الأنابيب في مهام خطية أو متفرعة — مثل استخراج نص وتقسيمه إلى أجزاء وتضمينه ثم تلخيص كل جزء — دون كتابة كود الربط يدوياً
  • رسوم المعرفة البيانية: يمكن لاستخراج الكيانات المدفوع بنموذج اللغة الكبير بناء رسم بياني دلالي فوق فهرس embeddings، ما يضيف تحليل العلاقات إلى البحث بالتشابه البسيط

ما نماذج اللغة الكبيرة التي يمكن استخدامها مع txtai؟

**تدعم txtai النماذج المحلية والنماذج المعتمدة على واجهة برمجة التطبيقات عبر واجهتَي خط الأنابيب نفسيهما LLM وRAG — والتبديل بينهما تغيير في الإعدادات وليس إعادة كتابة للكود.**

المسار
النوع
ملاحظة
Hugging Face Transformersمحليأي نموذج لغة سببي من Hugging Face Hub أو مسار محلي
llama.cppمحلينماذج مكمَّمة بصيغة GGUF، على المعالج أو بطاقة الرسوميات
Ollamaمحلييشير إلى خادم Ollama قيد التشغيل
vLLMمحلي / مُستضاف ذاتياًخادم استدلال عالي الإنتاجية للإنتاج
LiteLLMواجهة برمجة تطبيقاتيوجّه إلى OpenAI وAnthropic Claude وAWS Bedrock وغيرها

يحمّل مثال البدء السريع لـ RAG في txtai نموذج Hugging Face عبر مسار نصي (مثل Qwen/Qwen3-0.6B) مباشرة في خط أنابيب RAG إلى جانب فهرس embeddings — ولا حاجة إلى خادم نموذج لغة منفصل ما لم يُختَر تشغيل واحد لأسباب متعلقة بالإنتاجية.

كيف تُعِدّ txtai؟

يتطلب تشغيل فهرس بحث دلالي عاملاً أمرَ pip install وبضعة أسطر من Python — دون حاوية يجب إعدادها مسبقاً.

  1. 1
    ثبِّت Python 3.10 أو أحدث، ثم ثبِّت الحزمة: pip install txtai. استخدم `pip install "txtai[pipeline-data]"` إذا احتجت أيضاً إلى استخراج المستندات (PDF وDOCX وHTML) لتقنية RAG.
  2. 2
    أنشئ فهرس embeddings في نص Python برمجي: import txtai ثم embeddings = txtai.Embeddings().
  3. 3
    فهرِس قائمة من المستندات: `embeddings.index(["Correct", "Not what we hoped"]). يضيف كل استدعاء نصاً (أو أزواجاً (id, text)` لمجموعات البيانات الأكبر) إلى الفهرس على القرص.
  4. 4
    نفِّذ بحثاً دلالياً: تُعيد embeddings.search("positive", 1) أقرب النتائج من حيث المعنى، وليس من حيث تطابق الكلمات المفتاحية.
  5. 5
    اجعل الفهرس دائماً لإعادة استخدامه: تكتب embeddings.save("index_path") الفهرس على القرص؛ وأعِد فتحه لاحقاً بـ embeddings.load("index_path") — دون الحاجة إلى إعادة الفهرسة بين مرات التشغيل.
  6. 6
    لواجهة برمجة تطبيقات عبر الويب بدلاً من نص برمجي مضمّن: عرّف ملف app.yml بسيطاً يحدد نموذج embeddings.path، ثم شغّله بالأمر CONFIG=app.yml uvicorn "txtai.api:app" واستعلم عنه عبر HTTP باستخدام curl.
python
import txtai

# إنشاء فهرس embeddings (الافتراضي: Faiss + تخزين محلي)
embeddings = txtai.Embeddings()

# فهرسة النص — يصبح كل سلسلة نصية عنصراً قابلاً للبحث
embeddings.index(["Correct", "Not what we hoped"])

# بحث دلالي — يجد المعنى وليس مجرد تطابق الكلمات المفتاحية
results = embeddings.search("positive", 1)
print(results)  # [(0, 0.298...)] — الفهرس 0 ("Correct") هو الأقرب

# الحفظ على القرص لإعادة الاستخدام بعد إعادة تشغيل العملية
embeddings.save("index_path")

هل يحتاج المثال الأدنى لـ txtai إلى بطاقة رسوميات؟

لا. يعمل كل من نموذج التضمين الافتراضي (sentence-transformers/all-MiniLM-L6-v2) ومحرك ANN من نوع Faiss على المعالج المركزي. تُسرّع بطاقة الرسوميات توليد التضمينات واستدلال نموذج اللغة الكبير في نطاق أوسع، لكنها ليست ضرورية لتنفيذ هذا الإعداد.

كيف تضيف التوليد المعزز بالاسترجاع إلى هذا الإعداد؟

مرِّر الكائن نفسه Embeddings إلى خط أنابيب txtai.RAG مع نموذج لغة كبير محلي أو معتمد على واجهة برمجة تطبيقات: rag = txtai.RAG(embeddings, "model-name")، ثم استدعِ rag("سؤالك"). يتولى خط الأنابيب عملية الاسترجاع وبناء المُوجِّه (prompt).

لمن تناسب txtai؟

استخدم txtai إذا أردت اعتمادية Python واحدة للبحث وRAG والوكلاء دون بنية تحتية يجب تشغيلها — وتجنّبها إذا احتجت إلى مخزن متجهات قابل للتوسع أفقياً لخدمة تطبيقات مستقلة كثيرة.

📌ملاحظة: الخلاصة النهائية: اختر txtai عندما يكون القيد "تطبيق Python واحد، جهاز واحد، أقل تشغيل ممكن". واختر قاعدة بيانات متجهية مستقلة (Qdrant أو Weaviate أو Milvus) عندما يكون القيد "خدمات كثيرة يجب أن تستعلم عن الفهرس نفسه، على نطاق واسع، منذ اليوم الأول".

txtai مقابل Chroma وQdrant وLlamaIndex

تحل هذه الأدوات الأربع مشكلات متداخلة لكنها متمايزة: تحمل txtai وChroma كلتاهما مخزن متجهات، أما Qdrant فخدمة قاعدة بيانات مخصصة، وLlamaIndex إطار عمل تنسيق دون مخزن خاص به.

الأداة
البنية
النشر
الترخيص
الأنسب لـ
txtaiقاعدة بيانات متجهية مضمّنة + RAG/وكلاءIn-process، دون خادمApache 2.0RAG ووكلاء Python في حزمة واحدة
Chromaقاعدة بيانات متجهيةوضع مضمّن أو خادمApache 2.0مخزن متجهات بسيط للنماذج الأولية
Qdrantقاعدة بيانات متجهيةخادم (Docker/سحابة)Apache 2.0بحث إنتاجي متعدد العملاء وواسع النطاق
LlamaIndexإطار عمل RAG/تنسيقيحتاج مخزناً متجهياً خارجياًMITموصلات بيانات فوق أي قاعدة بيانات متجهية

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

تنشأ هذه الأخطاء من تطبيق افتراضات خاصة بقواعد البيانات المتجهية القائمة على الخادم على مكتبة ذات نموذج نشر مختلف جوهرياً.

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

هل txtai مجانية الاستخدام؟

نعم. txtai مفتوحة المصدر بترخيص Apache 2.0 دون حد للاستخدام أو رسوم ترخيص للمكتبة نفسها. تبيع NeuML، الشركة التي تصونها، استشارات مدفوعة في الذكاء الاصطناعي، وتطوّر بشكل منفصل منتج استضافة باسم txtai.cloud لا يزال قيد التطوير وقت كتابة هذا المقال.

هل تحتاج txtai إلى خادم قاعدة بيانات منفصل؟

لا. تُضمّن txtai فهرس المتجهات ومخزن البيانات الوصفية مباشرة داخل عملية Python — والافتراضي فهرس Faiss من نوع ANN مع ملف SQLite، ويُحفظ كلاهما كملفات محلية دون أي عملية خادم يجب نشرها أو مراقبتها.

ما محركات ANN التي تدعمها txtai إلى جانب Faiss؟

Faiss هو المحرك الافتراضي. تدعم txtai أيضاً HNSW وAnnoy وpgvector (إضافة إلى محركات أخرى عبر حزمة ann الإضافية)، ويمكن ضبطها عبر إعداد backend دون تغيير كود التطبيق.

ما الفرق بين txtai وChroma؟

تحمل كلتاهما مخزن متجهات مضمّناً، لكن مسار الإنتاج المعتاد لـ Chroma هو العمل كخادم، بينما لا تملك txtai وضع خادم منفصل تتطور نحوه — كما تجمع txtai خطوط أنابيب RAG والوكلاء وسير العمل متعدد النماذج في الحزمة نفسها، وهو ما لا تفعله Chroma.

ما الفرق بين txtai وQdrant؟

Qdrant خدمة قاعدة بيانات متجهية مخصصة، مصممة للعمل كعملية مستقلة (عبر Docker أو نقطة نهاية سحابية مُدارة) ولاستقبال استعلامات من عملاء كثيرين في الوقت نفسه. تعمل txtai مضمّنة داخل عملية تطبيق واحدة، مستبدلة تلك التزامنية والتوسع الأفقي بانعدام أي عبء نشر.

هل تدعم txtai التوليد المعزز بالاسترجاع (RAG)؟

نعم. يجمع خط أنابيب RAG بين فهرس Embeddings ونموذج لغة كبير محلي أو معتمد على واجهة برمجة تطبيقات، فيسترجع المقاطع ذات الصلة بالاستعلام ويولّد إجابة مع استشهاد — يقدّم توثيق txtai الرسمي تقنية RAG على أنها أكثر من بحث متجهي، وتشمل استرجاع سياق من الويب وSQL.

هل يمكن لـ txtai استخدام نماذج لغة محلية بدلاً من واجهة برمجة تطبيقات سحابية؟

نعم. تحمّل txtai النماذج عبر Hugging Face Transformers وllama.cpp (بصيغة GGUF) وOllama أو vLLM لاستدلال محلي بالكامل، أو توجّه عبر LiteLLM إلى OpenAI أو Anthropic Claude أو AWS Bedrock عند تفضيل نموذج معتمد على واجهة برمجة تطبيقات — وتغطي واجهة خط الأنابيب نفسها LLM/RAG كلتا الحالتين.

هل تدعم txtai الوكلاء الذكيين؟

نعم، وهي مبنية على إطار عمل smolagents من Hugging Face. تربط وكلاء txtai بين التضمينات وخطوط الأنابيب وسير العمل لإنجاز مهام متعددة الخطوات بشكل مستقل، وتدعم اتفاقيات صياغة أوامر الوكلاء مثل agents.md وskill.md.

بأي ترخيص تُنشر txtai؟

ترخيص Apache 2.0، الذي يسمح بالاستخدام التجاري والتعديل وإعادة التوزيع دون أي إتاوات — وهو نفس الترخيص المتساهل الذي تستخدمه Chroma وQdrant.

من يصون txtai؟

تطوّر txtai وتصونها شركة NeuML، التي أسسها David Mezzetti. تقدّم NeuML، إلى جانب صيانة المكتبة مفتوحة المصدر، استشارات مدفوعة في الذكاء الاصطناعي حول منظومة txtai.

هل يمكن لـ txtai التعامل مع مجموعات بيانات ضخمة لا تسع على جهاز واحد؟

ليس في وضعها المضمّن الافتراضي. يقتصر فهرس Faiss/SQLite ذو الملف الواحد على الجهاز الذي يحمله. أما مجموعات البيانات التي يجب توزيعها عبر عُقد متعددة، أو التي تحتاج إلى استعلام خدمات مستقلة كثيرة عن فهرس مشترك في الوقت نفسه، فهي أنسب لقاعدة بيانات متجهية مخصصة وقابلة للتوسع أفقياً.

هل txtai خيار جيد لأول نموذج أولي لـ RAG؟

نعم، خصوصاً لمطور Python — إذ تُثبَّت المنظومة بأكملها (الفهرس، وخط أنابيب RAG، ونموذج لغة كبير اختيارياً) بأمر واحد pip install txtai وتعمل ضمن نص برمجي واحد، دون الحاجة إلى إعداد حاوية قاعدة بيانات قبل كتابة أول سطر من منطق التطبيق.

المصادر

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