كيفية استخدام RAGFlow: دليل عملي لبناء تطبيقات RAG موثوقة
إذا كنت قد حاولت بناء نظام توليد معزز بالاسترجاع (RAG)، فمن المحتمل أنك واجهت نقاط الضعف الكلاسيكية: الهلوسة، والاسترجاع المتقطع، وخطوط الأنابيب البطيئة، والمعالجة المسبقة للفوضى للمستندات. يتدخل RAGFlow كأداة سير عمل شاملة تساعدك على تنظيم استيعاب المستندات، وتقسيمها، وتوجيهها، واسترجاعها، وتوليدها بمزيد من التحكم والمراقبة.
يتبع هذا الدليل نهجًا عمليًا وموجهًا نحو الحلول. سنستعرض إعدادًا نظيفًا، ونوضح لك كيفية استخدام RAGFlow للمستندات الحقيقية، ونشارك أنماطًا تقلل بالفعل من الهلوسة وتحسن جودة الإجابات.
ما هو RAGFlow ولماذا نستخدمه؟
RAGFlow هو نظام لبناء خطوط أنابيب التوليد المعزز بالاسترجاع. في إعداد RAG نموذجي، تقوم بما يلي:
- استيعاب المستندات (ملفات PDF، وصفحات الويب، والشرائح، والتعليمات البرمجية، وما إلى ذلك)
- تقسيم المحتوى إلى وحدات قابلة للاسترجاع
- تضمين الأجزاء في متجهات للبحث الدلالي
- استرجاع أفضل k جزء ذي صلة في وقت السؤال
- توليد إجابة مستندة باستخدام نموذج لغوي كبير (LLM)
يضيف RAGFlow إعدادات افتراضية محددة، وكتل سير العمل، وضوابط حماية حتى تتمكن من التكرار بشكل أسرع وشحن تطبيقات أكثر موثوقية. إنه مفيد بشكل خاص إذا كنت تريد:
- تقسيمًا ثابتًا وبيانات تعريف: يبدأ الاسترجاع الأفضل بأجزاء أفضل.
- تضمينات ونماذج لغوية كبيرة قابلة للتوصيل: استبدل OpenAI، أو النماذج المحلية، أو نقاط نهاية المؤسسة.
- تقييمات وضوابط حماية: قياس جودة الاسترجاع وتقليل الهلوسة.
- خطوط أنابيب قابلة للنشر: الانتقال من دفتر الملاحظات إلى الإنتاج مع عدد أقل من عمليات إعادة الكتابة.
بداية سريعة: من الصفر إلى خط أنابيب RAGFlow يعمل
فيما يلي سير عمل بسيط وشامل يمكنك تكييفه. حتى إذا كانت بيئتك مختلفة، فإن التسلسل وضوابط الحماية قابلة للنقل.
1) تجهيز بيئتك
OPENAI_API_KEY (أو مزود LLM آخر)
EMBEDDINGS_API_KEY (إذا كنت تستخدم مزودًا منفصلاً)
VECTOR_DB_URL (مثل Pinecone أو Weaviate أو Qdrant أو محلي)
- قم بتعيين دليل مشروع، على سبيل المثال،
ragflow-project/ مع المجلدات:
data/raw/ (الملفات المصدر)
data/processed/ (الأجزاء النظيفة)
configs/ (YAML/JSON لإعدادات خط الأنابيب)
eval/ (مجموعات البيانات والتقارير)
2) استيعاب المستندات ببيانات تعريف نظيفة
بيانات التعريف الجيدة = استرجاع أفضل. قم بتوحيد العناوين والمؤلفين والتواريخ والمصادر.
- تحويل ملفات PDF والشرائح إلى نص باستخدام محلل قوي
- الحفاظ على البنية: العناوين والقوائم وكتل التعليمات البرمجية والجداول
- إرفاق بيانات التعريف بكل جزء:
source، section، page، timestamp، version
نصيحة: احتفظ بـ doc_id و chunk_id لدعم الاقتباسات وإعادة الاستيعاب.
3) اختر إستراتيجية تقسيم تناسب المحتوى الخاص بك
يؤثر التقسيم بقوة على جودة الاسترجاع وزمن الوصول.
- للمستندات السردية: التقسيم الدلالي (التقسيم حسب العناوين/الفقرات)
- للمستندات التقنية: استخدم التقسيم الهجين (دلالي + نافذة ثابتة)
- للتعليمات البرمجية: التقسيم حسب الدالة/الفئة مع نافذة منزلقة صغيرة
الإعدادات الموصى بها للبدء:
chunk_overlap: 50-100 رمز
max_depth: تحديد الأقسام المتداخلة بـ 2-3 مستويات لتجنب التجزئة
4) اختر التضمينات ومخزن المتجهات
- ابدأ بنموذج تضمين قوي للأغراض العامة (مثل text-embedding-3-large أو نموذج محلي حديث). إذا كانت الخصوصية أساسية، ففكر في التضمينات المستضافة ذاتيًا.
- استخدم قاعدة بيانات متجهات تدعم:
- البحث المختلط (كثيف + كلمة رئيسية)
- الفلاتر (قيود بيانات التعريف)
- إدخالات مجمعة و مقاييس الفهرس
إعدادات الفهرس للاختبار:
top_k = 5-10 للاسترجاع الأولي
similarity_metric = cosine (أو نقطة لنماذج معينة)
- تمكين الحد الأقصى للأهمية الهامشية (MMR) لتقليل التكرار
5) تنسيق الاسترجاع
تنفيذ مسترجع على مرحلتين:
- إعادة ترتيب المشفر المتقاطع أو التسجيل المستند إلى LLM
- التقليل إلى
top_k النهائي (مثل 5-8)
إضافة فلاتر بيانات التعريف: source:"handbook" AND section:"benefits" AND version:"v2" لتقييد الإجابات على المستندات الموثوقة.
6) توليد قائم على أسس مع هيكل
يجب أن يفرض موجهك الاقتباسات والرفض عندما تكون الأدلة ضعيفة.
مثال على موجه النظام:
أنت مساعد حريص. أجب فقط بالمعلومات المدعومة بالسياق المقدم.
- استشهد بالمصادر مضمنة كـ [doc_id:chunk_id].
- إذا كان السياق غير كافٍ، فقل "لا توجد معلومات كافية في المستندات المقدمة."
- لا تخترع الحقائق.
قالب موجه المستخدم:
السؤال: {query}
السياق:
{top_chunks}
التعليمات:
- قدم إجابة موجزة أولاً، ثم التفاصيل.
- قم بتضمين الاقتباسات بعد كل ادعاء واقعي.
7) إضافة ضوابط حماية لتقليل الهلوسة
- فحص قابلية الإجابة: قبل التوليد، اسأل نموذجًا صغيرًا: "هل يوجد دليل مباشر في الأجزاء المسترجعة؟" إذا لم يكن الأمر كذلك، فأرجع سؤال توضيحي.
- سياسة الاقتباس أو الصمت: حظر المخرجات التي تفتقر إلى الاقتباسات.
- مرشحات السمية/معلومات التعريف الشخصية لمحتوى المؤسسة.
8) التقييم والتحسين المستمر
إنشاء مجموعة eval/ مع:
- إجابات الحقيقة الأساسية (أو المراجع الموثوقة)
- المصادر المتوقعة (معرفات المستندات) حيثما ينطبق ذلك
قياس:
- معدل ضربة الاسترجاع (هل يظهر المصدر الذهبي في top-k؟)
- إخلاص الإجابة (البيانات المدعومة بالاقتباسات)
- زمن الوصول (p95 من النهاية إلى النهاية)
- التكلفة (لكل 100 استعلام)
التكرار على:
- إعادة الترتيب مقابل top-k أعلى
خط أنابيب RAGFlow كامل: مثال على التكوين
فيما يلي تكوين مفاهيمي يمكنك تكييفه مع سلسلة الأدوات الخاصة بك. استبدل أسماء الموفرين حسب الحاجة.
project: product-handbook-rag
io:
input_path: data/raw/
output_index: product-handbook-index
parsing:
pdf:
strategy: auto
<a8>keep_layout: true</a9>extract_tables: true
markdown:
preserve_headings: true
chunking:
method: semantic_hybrid
target_tokens: 800
overlap_tokens: 80
windowing: 2
metadata:
fields: [doc_id, title, section, page, version, source]
embeddings:
provider: openai
model: text-embedding-3-large
vectorstore:
type: qdrant
url: ${VECTOR_DB_URL}
similarity: cosine
retrieval:
hybrid: true
lexical_weight: 0.35
semantic_weight: 0.65
candidate_top_k: 40
rerank:
enabled: true
model: bge-reranker-large
final_top_k: 7
generation:
llm: gpt-4o
temperature: 0.2
cite_or_silence: true
guardrails:
answerability_check: true
pii_filter: true
toxicity_filter: moderate
monitoring:
log_traces: true
latency_budget_ms: 3500cost_budget_per_100: 1.25
latency_budget_ms: 3500cost_budget_per_100: 1.25
كيفية استخدام RAGFlow لأنواع المحتوى المختلفة
كتيبات المنتج وأدلة المستخدم
- فضل التقسيم الدلالي مع حدود قسم واضحة
- إرفاق الإصدار وتاريخ السريان لمنع الإجابات القديمة
- استخدم فلاتر صارمة: تتطلب دائمًا
version = latest
قواعد المعرفة والأسئلة الشائعة
- استخدم أجزاء أصغر (400-600 رمز) للحصول على إجابات دقيقة
- قم بزيادة مجموعة المرشحين والاعتماد على إعادة الترتيب للعثور على المقتطف الدقيق
- إنشاء أزواج أسئلة وأجوبة أساسية تلقائيًا لتعزيز التذكر عبر البحث المعجمي
وثائق هندسية وتعليمات برمجية
- التقسيم حسب الوظيفة/الوحدة النمطية وتضمين رسوم بيانية الاستيراد في بيانات التعريف
- تمكين استرجاع الأصل والطفل: إرجاع الدالة + سياق سلسلة التوثيق الخاص بها
- استخدم أداة إعادة ترتيب واعية بالشفرة لتحديد أولويات الرموز ذات الصلة
القانون والامتثال
- تتطلب اقتباسات على مستوى الفقرة
- إضافة منطق الرفض للسياق غير الكامل
- احتفظ بمجموعة ذهبية من المصادر المعتمدة من قبل المنظمين في فهرس منفصل
أنماط المطالبات التي تعمل بالفعل
- أجب ثم استشهد: إجابة قصيرة في الأعلى؛ اقتباسات مضمنة بعد كل ادعاء
- سلسلة الاسترجاع: اطلب من النموذج تلخيص كل جزء أولاً، ثم التجميع
- إعادة كتابة الاستعلام: قم بتوسيع استعلامات المستخدم بالمترادفات ومصطلحات المجال قبل الاسترجاع
- مطالبات متباينة: "اشرح لماذا الخيار أ أفضل من ب بناءً على السياق." هذا يفرض استخدام الأدلة
مثال على خطوة إعادة كتابة الاستعلام:
الأصلي: "ما هي سياسة ترحيل إجازات مدفوعة الأجر الخاصة بنا؟"
إعادة الكتابة: "سياسة ترحيل الإجازات مدفوعة الأجر؛ ترحيل الإجازات؛ الحد الأقصى للساعات؛ أحدث إصدار من السياسة"
المراقبة وحلقات التغذية الراجعة
- تسجيل الأجزاء التي تم استخدامها ودرجاتها والتي تم تجاهلها
- التقاط الإبهام لأعلى/لأسفل مع شرح قصير؛ إعادة ذلك إلى ضبط المسترجع
- قم بإجراء اختبارات الانحدار الأسبوعية على مجموعة التقييم الخاصة بك قبل نشر أي تغيير في النموذج
ورقة الغش لضبط الأداء
- إذا كانت الإجابات تبدو عامة: قم بزيادة
candidate_top_k وإضافة أداة إعادة ترتيب أقوى
- إذا كانت الإجابات تفتقد إلى التفاصيل: قلل حجم الجزء؛ عزز الوزن المعجمي قليلاً
- إذا كانت الاقتباسات تكرر نفس الجزء: قم بتمكين MMR ورفع التنوع
- إذا كان زمن الوصول مرتفعًا: قم بتخزين التضمينات مؤقتًا، واحتساب عمليات إعادة كتابة الاستعلام مسبقًا، واستخدم أداة إعادة ترتيب أصغر
- إذا ارتفعت التكاليف: قم بخفض درجة حرارة التوليد، وتقصير المطالبات، وجرب نموذجًا لغويًا كبيرًا أصغر للمرور الأول
أساسيات الأمن والحوكمة
- تشفير المتجهات المخزنة وتنقيح الحقول الحساسة في بيانات التعريف
- استخدم التحكم في الوصول لكل فهرس؛ التقسيم حسب الفريق أو حساسية البيانات
- الاحتفاظ بسجل لسلالة البيانات: عنوان URL لمصدر المستند، والمجموع الاختباري، والطابع الزمني للاستيعاب
لقطة لدراسة الحالة: من ملفات PDF الفوضوية إلى إجابات موثوقة
قام فريق دعم باستيعاب 1200 صفحة من ملفات PDF. كان الاسترجاع الأولي غير متسق؛ لم يثق الوكلاء بالروبوت. بعد التبديل إلى التقسيم الدلالي الهجين (800 رمز، 80 تداخلاً)، وتمكين إعادة ترتيب المشفر المتقاطع، وفرض الاقتباس أو الصمت، ارتفع معدل ضربة top-k من 62٪ إلى 89٪، وتضاعف اعتماد الوكيل. لم يكن المفتاح هو نموذج لغوي كبير أكبر - بل كان أجزاء أنظف واسترجاع أكثر صرامة.
نصيحة للأدوات: التكرار السريع مع الشريط الجانبي للذكاء الاصطناعي
تجدر الإشارة إلى: إذا كنت تجرب المطالبات ومقتطفات الاسترجاع عبر العديد من المستندات، فإن مساعد الذكاء الاصطناعي الذي يتيح لك الدردشة عبر ملفات PDF وصفحات الويب والتعليمات البرمجية مباشرة من المتصفح يمكن أن يسرع التكرار. بالمناسبة، يقدم Sider.AI (https://sider.ai/) شريطًا جانبيًا للذكاء الاصطناعي يتيح لك سحب السياق من الصفحة التي تتصفحها، وتلخيصها، وتحسين المطالبات بسرعة. إنه مفيد لنموذج أولي لمطالبات RAG واختبار جودة الجزء قبل إضفاء الطابع الرسمي على خط الأنابيب. استكشاف أخطاء RAGFlow وإصلاحها: إصلاحات سريعة
- "النموذج واثق ولكنه خاطئ."
- تمكين فحص قابلية الإجابة؛ خفض درجة الحرارة؛ تتطلب اقتباسات
- "يبحث البحث عن تكرارات قريبة."
- تشغيل MMR؛ إضافة أداة إعادة ترتيب؛ تقليل تداخل الجزء
- "ارتفاع زمن الوصول في الذروة."
- تضمينات مجمعة؛ تخزين عمليات إعادة كتابة الاستعلام مؤقتًا؛ استخدام التوليد المتدفق
- "تستمر السياسات القديمة في الظهور."
- تصفية على
version = latest؛ إهمال أو وضع علامة شاهد على المستندات القديمة
الخطوات التالية: اجعل RAGFlow الخاص بك موثوقًا به في الإنتاج
- ابدأ بمجموعة صغيرة وموثوقة؛ إتقان التقسيم والفلاتر أولاً
- أضف أداة إعادة ترتيب قبل ترقية LLM
- قم ببناء مجموعة تقييم مكونة من 100 سؤال وتتبع معدل الضربة أسبوعيًا
- قم بتوصيل ملاحظات المستخدم لضبط الاسترجاع باستمرار
الوجبات الرئيسية:
- تتفوق جودة الاسترجاع على حجم النموذج بالنسبة لـ RAG
- التقسيم وبيانات التعريف وإعادة الترتيب هي الرافعات الأساسية الخاصة بك
- تزيد ضوابط الحماية مثل الاقتباس أو الصمت من الثقة بشكل كبير
- استثمر مبكرًا في المراقبة والتقييم
بفضل هذه الممارسات، يصبح RAGFlow بمثابة العمود الفقري الموثوق للإجابات المستندة - سواء كنت تقوم بتشغيل روبوت مساعدة، أو مساعد طيار للمطورين، أو مساعد معرفة داخلي.
الأسئلة الشائعة
س1: ما هو RAGFlow وكيف يمكنني استخدامه لضمان الجودة للمستندات؟
RAGFlow هو إطار عمل لبناء خطوط أنابيب التوليد المعزز بالاسترجاع. يمكنك استيعاب الأجزاء وتضمينها واسترجاعها وتوليد إجابات مع اقتباسات لتقليل الهلوسة وتحسين الدقة.
س2: كيف يجب أن أقوم بتقسيم المستندات في RAGFlow؟
استخدم التقسيم الدلالي أو الهجين مع أجزاء رمزية من 600 إلى 1000 و 50-100 تداخل رمزي. بالنسبة للشفرة، قم بالتقسيم حسب الوظيفة أو الفئة وقم بتضمين السياق المحيط.
س3: أي قاعدة بيانات متجهات تعمل بشكل أفضل مع RAGFlow؟
اختر متجرًا يدعم البحث المختلط وفلاتر بيانات التعريف وإعادة الترتيب - Qdrant أو Weaviate أو Pinecone أو خيار محلي كلها خيارات شائعة.
س4: كيف يمكنني منع الهلوسة في تطبيق RAGFlow؟
فرض سياسة الاقتباس أو الصمت، وإضافة فحص لقابلية الإجابة قبل التوليد، والحفاظ على المطالبات صارمة بشأن استخدام السياق المسترجع فقط.
س5: ما هي المقاييس التي يجب أن أتتبعها لتقييم RAGFlow؟
راقب معدل ضربة الاسترجاع وإخلاص الإجابة وزمن الوصول والتكلفة لكل 100 استعلام، واحتفظ بمجموعة تقييم صغيرة ولكنها تمثيلية.