يهدف هذا المشروع إلى إنشاء محرك توصية للاستفادة من بنية الجيل (RAG) الذي تم تجهيزه للاسترجاع (RAG) لتوفير توصيات مدركة للسياق بناءً على استعلامات المستخدم. يركز MVP على النموذج وقابلية التوسع مع استخدام تقنيات المصدر المفتوح لكفاءة التكلفة.
بنية قاعدة كود قاعدة كود:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
إن الجيل المتمثل في الاسترجاع (RAG) هو عملية تحسين ناتج نموذج اللغة الكبير ، لذلك يشير إلى قاعدة معرفة موثوقة خارج مصادر بيانات التدريب قبل توليد استجابة. يتم تدريب نماذج اللغة الكبيرة (LLMs) على كميات واسعة من البيانات واستخدام مليارات المعلمات لإنشاء الإخراج الأصلي لمهام مثل الإجابة على الأسئلة وترجمة اللغات واستكمال الجمل. يمتد RAG القدرات القوية بالفعل لـ LLMs إلى مجالات معينة أو قاعدة المعرفة الداخلية للمؤسسة ، كل ذلك دون الحاجة إلى إعادة تدريب النموذج. إنه نهج فعال من حيث التكلفة لتحسين إخراج LLM بحيث يظل ذا صلة ودقيقة ومفيدة في سياقات مختلفة.
LLMS هي تكنولوجيا الذكاء الاصطناعي الرئيسي (AI) تعمل على تشغيل تطبيقات الدردشة الذكية وغيرها من تطبيقات معالجة اللغة الطبيعية (NLP). الهدف من ذلك هو إنشاء روبوتات يمكنها الإجابة على أسئلة المستخدم في سياقات مختلفة عن طريق الإشارة إلى مصادر المعرفة الموثوقة. لسوء الحظ ، فإن طبيعة تقنية LLM تقدم عدم القدرة على التنبؤ في استجابات LLM. بالإضافة إلى ذلك ، فإن بيانات تدريب LLM ثابتة وتقدم تاريخًا متقطعًا على المعرفة التي لديها.
تقديم معلومات خاطئة عندما لا يكون لديه الإجابة. تقديم معلومات خارجية أو عامة عندما يتوقع المستخدم استجابة محددة حالية. خلق استجابة من مصادر غير آلية. إنشاء استجابات غير دقيقة بسبب ارتباك المصطلحات ، حيث تستخدم مصادر التدريب المختلفة نفس المصطلحات للحديث عن أشياء مختلفة. يمكنك التفكير في نموذج اللغة الكبير كموظف جديد مفرط في الحماس يرفض البقاء على اطلاع بالأحداث الجارية ولكنه سيجيب دائمًا على كل سؤال بثقة مطلقة. لسوء الحظ ، فإن مثل هذا الموقف يمكن أن يؤثر سلبًا على ثقة المستخدم وليس شيئًا تريده لمحاكاة chatbots!
خرقة هي طريقة واحدة لحل بعض هذه التحديات. يعيد توجيه LLM لاسترداد المعلومات ذات الصلة من مصادر المعرفة الموثوقة والمحددة مسبقًا. لدى المؤسسات تحكم أكبر في إخراج النص الذي تم إنشاؤه ، ويكسب المستخدمون نظرة ثاقبة حول كيفية إنشاء LLM للاستجابة.
تجلب تقنية RAG العديد من الفوائد لجهود الذكاء الاصطناعى التوليدي للمؤسسة.
عادةً ما يبدأ تطوير ChatBot باستخدام نموذج الأساس. نماذج الأساس (FMS) هي LLMs APICANCING مدربة على مجموعة واسعة من البيانات المعممة وغير الممكن. التكاليف الحسابية والمالية لإعادة تدريب FMS للمعلومات الخاصة بالتنظيم أو المجال مرتفعة. RAG هو نهج أكثر فعالية من حيث التكلفة لإدخال بيانات جديدة إلى LLM. إنه يجعل تقنية الذكاء الاصطناعي (AI) التوليدي (AI) يمكن الوصول إليها على نطاق أوسع وقابلة للاستخدام.
حتى إذا كانت مصادر بيانات التدريب الأصلية لـ LLM مناسبة لاحتياجاتك ، فمن الصعب الحفاظ على الصلة. يسمح RAG للمطورين بتوفير أحدث الأبحاث أو الإحصاءات أو الأخبار للنماذج التوليدية. يمكنهم استخدام RAG لتوصيل LLM مباشرة لتغذية الوسائط الاجتماعية أو مواقع الأخبار أو غيرها من مصادر المعلومات التي يتم تحديثها بشكل متكرر. يمكن لـ LLM بعد ذلك تقديم أحدث المعلومات للمستخدمين.
يسمح RAG لـ LLM بتقديم معلومات دقيقة مع إسناد المصدر. يمكن أن يشمل الإخراج الاستشهادات أو الإشارات إلى المصادر. يمكن للمستخدمين أيضًا البحث عن مستندات المصدر بأنفسهم إذا كانوا يحتاجون إلى مزيد من التوضيح أو المزيد من التفاصيل. هذا يمكن أن يزيد من الثقة والثقة في حل الذكاء الاصطناعي التوليدي.
مع RAG ، يمكن للمطورين اختبار وتحسين تطبيقات الدردشة الخاصة بهم بشكل أكثر كفاءة. يمكنهم التحكم في مصادر معلومات LLM وتغييرها للتكيف مع المتطلبات المتغيرة أو الاستخدام متعدد الوظائف. يمكن للمطورين أيضًا تقييد استرجاع المعلومات الحساسة لمستويات التصريح المختلفة وضمان أن تولد LLM الاستجابات المناسبة. بالإضافة إلى ذلك ، يمكنهم أيضًا استكشاف الأخطاء وإصلاحها إذا كانت LLM تشير إلى مصادر معلومات غير صحيحة لأسئلة محددة. يمكن للمؤسسات تنفيذ تقنية الذكاء الاصطناعي بشكل أكثر ثقة لمجموعة أوسع من التطبيقات.
بدون RAG ، تأخذ LLM إدخال المستخدم وإنشاء استجابة بناءً على المعلومات التي تم تدريبها عليها - أو ما يعرفه بالفعل. باستخدام RAG ، يتم تقديم مكون استرجاع المعلومات الذي يستخدم إدخال المستخدم لسحب المعلومات أولاً من مصدر بيانات جديد. يتم تقديم استعلام المستخدم والمعلومات ذات الصلة إلى LLM. تستخدم LLM المعرفة الجديدة وبيانات التدريب الخاصة بها لإنشاء ردود أفضل. توفر الأقسام التالية نظرة عامة على العملية.
تسمى البيانات الجديدة خارج مجموعة بيانات التدريب الأصلية في LLM البيانات الخارجية. يمكن أن يأتي من مصادر بيانات متعددة ، مثل واجهات برمجة التطبيقات أو قواعد البيانات أو مستودعات المستندات. قد توجد البيانات بتنسيقات مختلفة مثل الملفات أو سجلات قاعدة البيانات أو النص طويل الشكل. تقنية أخرى من الذكاء الاصطناعي ، تسمى نماذج لغة التضمين ، تقوم بتحويل البيانات إلى تمثيلات عددية وتخزينها في قاعدة بيانات متجه. تنشئ هذه العملية مكتبة معرفة يمكن أن تفهمها نماذج الذكاء الاصطناعي.
والخطوة التالية هي إجراء البحث عن الصلة. يتم تحويل استعلام المستخدم إلى تمثيل متجه ومطابقة مع قواعد بيانات المتجهات. على سبيل المثال ، ضع في اعتبارك chatbot الذكي الذي يمكنه الإجابة على أسئلة الموارد البشرية للمؤسسة. إذا بحث أحد الموظفين ، "ما مقدار الإجازة السنوية التي أمتلكها؟" سيسترجع النظام وثائق سياسة الإجازة السنوية إلى جانب سجل الإجازة السابقة للموظف. سيتم إرجاع هذه المستندات المحددة لأنها ذات صلة بدرجة كبيرة بما لدى الموظف مدخلات. تم حساب الملاءمة وتأسيسها باستخدام حسابات وتمثيلات المتجهات الرياضية.
بعد ذلك ، يعزز نموذج RAG إدخال المستخدم (أو المطالبات) عن طريق إضافة البيانات المستردة ذات الصلة في السياق. تستخدم هذه الخطوة تقنيات هندسة سريعة للتواصل بفعالية مع LLM. تتيح المطالبة المعززة لنماذج اللغة الكبيرة بإنشاء إجابة دقيقة لاستعلامات المستخدم.
قد يكون السؤال التالي - ماذا لو أصبحت البيانات الخارجية قديمة؟ للحفاظ على المعلومات الحالية للاسترجاع ، قم بتحديث المستندات بشكل غير متزامن وتحديث تمثيل التضمين للمستندات. يمكنك القيام بذلك من خلال عمليات تلقائية في الوقت الفعلي أو معالجة الدُفعات الدورية. هذا تحد شائع في تحليلات البيانات-يمكن استخدام أساليب تصنيف البيانات المتمايزة لتغيير الإدارة.
يعزز البحث الدلالي نتائج RAG للمنظمات التي ترغب في إضافة مصادر المعرفة الخارجية الشاسعة إلى تطبيقات LLM الخاصة بها. تخزن المؤسسات الحديثة كميات هائلة من المعلومات مثل الكتيبات والأسئلة الشائعة وتقارير البحث وأدلة خدمة العملاء ومستودعات مستندات الموارد البشرية عبر أنظمة مختلفة. استرجاع السياق يمثل تحديًا على نطاق واسع ، وبالتالي يقلل من جودة الإخراج التوليدي.
يمكن لتكنولوجيات البحث الدلالية مسح قواعد بيانات كبيرة من المعلومات المتباينة واسترداد البيانات بشكل أكثر دقة. على سبيل المثال ، يمكنهم الإجابة على أسئلة مثل ، "إلى أي مدى تم إنفاقه على إصلاحات الآلات العام الماضي؟" من خلال تعيين السؤال إلى المستندات ذات الصلة وإعادة نص محدد بدلاً من نتائج البحث ، يمكن للمطورين استخدام هذه الإجابة لتوفير المزيد من السياق إلى LLM.
حلول البحث عن الكلمات التقليدية أو الرئيسية في RACT تنتج نتائج محدودة للمهام كثيفة المعرفة. يجب أن يتعامل المطورون أيضًا مع تضمينات الكلمات ، وتجمع المستندات ، وغيرها من التعقيدات أثناء إعدادهم يدويًا بياناتهم. في المقابل ، تقوم تقنيات البحث الدلالية بكل عمل إعداد قاعدة المعرفة حتى لا يضطر المطورون إلى ذلك. كما أنها تولد مقاطع ذات صلة دلالة والكلمات الرمزية المطلوبة من خلال الأهمية لزيادة جودة الحمولة الراكية.