في المشهد الحالي المعتمد على البيانات، تتردد المؤسسات بشكل متزايد في إرسال المستندات الداخلية الحساسة إلى واجهات برمجة التطبيقات (APIs) العامة لنماذج اللغة الكبيرة (LLM). ما هو الحل؟ خط أنابيب توليد مدعوم بالاسترجاع (RAG) محلي بالكامل. من خلال الجمع بين
LlamaIndex لهيكلة البيانات و
ChromaDB لتخزين المتجهات، يمكنك إنشاء نظام استرجاع للمعرفة آمن وفي الوقت الفعلي يعمل بالكامل على بنيتك التحتية. يضمن هذا النهج خصوصية البيانات مع تقليل زمن الاستجابة والتشغيل بشكل كبير.
لماذا نختار الحل المحلي باستخدام LlamaIndex وChromaDB؟
يوفر بناء خط أنابيب RAG محلي مزايا مميزة مقارنة بالبدائل القائمة على السحابة. أولاً وقبل كل شيء، هو سيادة البيانات. لا تغادر مستنداتك الخاصة شبكتك أبداً، مما يقلل من المخاطر المرتبطة بتسرب البيانات من طرف ثالث. ثانياً، يستبعد الاستدلال المحلي والبحث عن المتجهات تكاليف لكل رمز (token)، مما يجعل التوسع أكثر قابلية للتنبؤ. وأخيراً، يتم تقليل زمن الاستجابة بشكل كبير لأن البيانات لا تنتقل عبر الإنترنت العام إلى خوادم خارجية. يبسط LlamaIndex التنسيق المعقد المطلوب لربط المستندات بنماذج اللغة الكبيرة (LLMs)، بينما يوفر ChromaDB قاعدة بيانات متجهات خفيفة الوزن وقابلة للتضمين، وهي مثالية لكل من بيئات التطوير والإنتاج.
إعداد البيئة
قبل الغوص في الكود، تأكد من تثبيت Python 3.9 أو أحدث. ستحتاج إلى تثبيت المكتبات الأساسية. سنستخدم
llama-index لإطار عمل الفهرسة و
chromadb لتخزين المتجهات. بالنسبة للتضمينات (embeddings)، يمكننا استخدام واجهة برمجة التطبيقات (API) الخاصة بـ OpenAI أو، للحصول على تجربة محلية بالكامل، حزمة
llama-index-embeddings-huggingface. في هذا المثال، سنلتزم بواجهة برمجة التطبيقات القياسية لتضمينات OpenAI لتسهيل الإعداد، ولكن لاحظ أنه يمكنك استبدالها بنماذج محلية مثل BGE أو E5.
pip install llama-index chromadb openai
بناء الفهرس
يتمثل جوهر نظام RAG في الفهرس. يوفر LlamaIndex واجهة برمجة تطبيقات بسيطة لاستهلاك البيانات غير المهيكلة (مثل ملفات PDF، أو ملفات نصية، أو أدلة) وتحويلها إلى أجزاء مخزنة كمتجهات في ChromaDB. يوضح مقتطف الكود التالي كيفية إنشاء فهرس بسيط في الذاكرة من دليل يحتوي على ملفات نصية.
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
# 1. إعداد ChromaDB
chroma_client = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = chroma_client.get_or_create_collection("enterprise_docs")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
# 2. تحميل البيانات الخاصة بك
documents = SimpleDirectoryReader("./data").load_data()
# 3. إنشاء الفهرس
index = VectorStoreIndex.from_documents(
documents,
vector_store=vector_store
)
استعلام قاعدة المعرفة
بمجرد بناء الفهرس، يصبح استعلامه أمرًا بسيطًا. يتولى LlamaIndex مهمة استرجاع الأجزاء ذات الصلة ونقلها إلى نموذج اللغة الكبيرة (LLM) ضمن سياق الأمر (prompt). يضمن ذلك قيام النموذج بتوليد إجابات بناءً حصرياً على بيانات مؤسستك.
from llama_index.core import QueryEngine
# إنشاء محرك استعلام
query_engine = index.as_query_engine()
# تشغيل استعلام
response = query_engine.query("ما هي بروتوكولات الأمان الرئيسية المذكورة في وثائق سياساتنا؟")
print(response)
الخاتمة
يمنح بناء خط أنابيب RAG محلي باستخدام LlamaIndex وChromaDB المنظمات القدرة على الاستفادة من إمكانات الذكاء الاصطناعي دون المساس بالأمان أو السرعة. من خلال إبقاء البيانات محلية والاستفادة من البحث الفعال عن المتجهات، يمكن للمطورين بناء أنظمة استرجاع معرفة مؤسسية قوية وقابلة للتوسع وفعالة من حيث التكلفة. أثناء تحسين خط الأنابيب الخاص بك، فكر في تجربة نماذج تضمين واستراتيجيات إعادة ترتيب مختلفة لتعزيز دقة نتائج الاسترجاع بشكل أكبر. مستقبل الذكاء الاصطناعي المؤسسي هو محلي، وخاص، وأصبح في متناول اليد بشكل متزايد.