استكشِف المزيد مما يقدِّمه دليل RAG Cookbook للحصول على فهم أعمق لحلول التوليد المعزز بالاسترجاع (RAG) المتاحة اليوم.

مساحة عمل جديدة معاد تلوينها تعتمد على مساحة Watson for Customer Care كأساس لها.
لمحة عامة

في مجال الزحف إلى الويب وفهرسة المستندات، تُعَد منهجيات التقسيم الفعَّالة ضرورية؛ لتحسين أداء البحث ومدى صلته. عند التعامل مع صفحات الويب بصيغة HTML أو ملفات PDF، يمكن للاستراتيجية التي تعتمدها أن تؤثِّر بشكل كبير في كفاءة تطبيق البحث ودقته. فيما يلي دليل شامل لمنهجيات التقسيم الفعَّالة في ظروف مختلفة، خاصةً عند استخدام Elasticsearch كمخزن للمتجهات. 

 

تجزئة المستندات

تختلف صفحات الويب بشكل كبير من حيث الحجم والبنية. للمعالجة الفعَّالة:

  • تحليل HTML: تقسيم صفحات HTML إلى مقاطع قابلة للإدارة استنادًا إلى وسوم HTML (مثل <p> للفقرات و<div> للأقسام).
  • استخراج المحتوى: التركيز على استخراج المحتوى ذي المعنى مثل النص الرئيسي والعناوين والبيانات المنظمة.
استراتيجية التقسيم
  • حسب عنوان URL: التعامل مع كل عنوان URL كمستند منفصل. تُعَد هذه الطريقة مباشرةً ومفيدة للمواقع التي تكون فيها كل صفحة صغيرة نسبيًا ومستقلة بذاتها.
  • حسب أقسام الصفحة: تقسيم المستندات إلى أقسام ذات معنى (مثل المقالات أو منشورات المدونات). يُعَد هذا الأسلوب مفيدًا للمحتوى الطويل والمواقع التي تتضمن أنواع محتوى متنوعة.
  • طول المحتوى: تجنُّب المقاطع الكبيرة جدًا؛ وتحقيق التوازن بين مستوى التفصيل لتحسين صلة نتائج البحث والأداء. يمكن للمقاطع الصغيرة تحسين دقة البحث لكنها قد تزيد من عبء المعالجة.
مسار المعالجة
  • استخدام المكتبات مثل Beautiful Soup أو Scrapy لاستخراج البيانات من الويب.
  • تطبيع النص من خلال إزالة علامات HTML ومعالجة مشكلات الترميز.
  • استخدام أدوات تحليل خاصة باللغة (مثل Stemming وStop Words)؛ لتحسين دقة البحث.
التحديات المرتبطة بكود HTML القديم

عندما يتضمَّن الزحف إلى الويب كود HTML قديمًا، قد يؤثِّر ذلك بشكل كبير في جودة المقاطع المستخرجة لفهرستها في Elasticsearch. فيما يلي بعض التحديات الرئيسية واستراتيجيات التخفيف منها:

عدم اتساق البنية

العلامات والسمات غير القياسية:

  • قد يستخدم كود HTML القديم علامات أو سمات غير قياسية قد لا تتمكن أدوات التحليل الحديثة من التعامل معها بشكل صحيح أو فهمها بالكامل.
  • قد يؤدي ذلك إلى استخراج غير مكتمل أو غير صحيح لمقاطع المحتوى، خاصةً إذا كان الزاحِف يعتمد على مكتبات تحليل HTML القياسية.

العناصر المتداخلة والمهجورة:

  • غالبًا ما يتضمن كود HTML القديم عناصر متداخلة أو علامات مهجورة مثل <font> و<center> و<strike>، والتي قد لا تتمكن أدوات تحليل HTML الحديثة من تحليلها بشكل صحيح.
  • ونتيجةً لذلك، قد يؤدي تقسيم المحتوى اعتمادًا على هذه العناصر إلى إنتاج مقاطع مجزأة أو ذات بنية غير صحيحة.

جودة المحتوى ومدى صلته

التنسيق والتصميم المضمَّن داخل السطر:

  • قد يعتمد كود HTML القديم بشكل كبير على علامات التنسيق والأنماط المضمَّنة داخل السطر (<font> و<b> و<i> وغيرها)، ما قد يؤدي إلى ازدحام النص المستخرج والتقليل من جودة المقاطع المفهرسة.
  • قد تتأثر جودة البحث عندما يعمل Elasticsearch على تحليل هذه المقاطع وفهرستها، ما قد يؤثِّر في مدى صلة نتائج البحث.

بنية مستند غير متسقة:

  • قد يؤدي غياب بنية مستند بنائية في صفحات HTML القديمة إلى اختلاف أحجام المقاطع وأجزاء المحتوى.
  • يجعل هذا التباين من الصعب تحديد حدود واضحة بين أقسام المحتوى ذات المعنى، ما يؤثِّر في دقة تقسيم المقاطع ومدى صلة نتائج البحث.

التحديات التقنية

مشكلات الترميز والحروف:

  • قد تحتوي صفحات HTML القديمة على مشكلات في الترميز، مثل مجموعات الحروف غير الصحيحة أو الكيانات (&nbsp; و&lt;)، والتي تحتاج إلى معالجة صحيحة أثناء استخراج النص.
  • قد يؤدي عدم التعامل معها بشكل صحيح إلى ظهور نص مشوَّه أو تمثيل غير دقيق للمحتوى في المقاطع المفهرسة.

النص البرمجي والمحتوى الديناميكي:

  • قد لا تتمكن برامج الزحف الأساسية من معالجة العناصر الديناميكية والنصوص البرمجية المضمَّنة في صفحات HTML القديمة (مثل JavaScript وFlash) بشكل فعَّال.
  • قد يؤدي ذلك إلى استخراج محتوى غير مكتمل أو تجاهل النصوص التي تم توليدها ديناميكيًا، ما يؤثِّر في شمولية المقاطع المفهرسة.

استراتيجيات التخفيف

لتقليل تأثير كود HTML القديم في جودة المقاطع عند الزحف إلى الويب للفهرسة في Elasticsearch، يمكن اتِّباع الاستراتيجيات التالية:

  • استخدام مكتبات التحليل القوية: استخدام مكتبات تحليل HTML متقدمة قادرة على التعامل مع إصدارات HTML المختلفة والعناصر غير القياسية.
  • توحيد النص: معالجة النص المستخرج مسبقًا لتوحيد التنسيق وإزالة العلامات أو السمات غير الضرورية.
  • تنظيف المحتوى: تصفية العناصر غير الملائمة أو المهجورة أثناء عملية الاستخراج لتحسين جودة المقاطع المفهرسة.
  • تكييف منطق الاستخراج: تطوير منطق مخصص للتعامل مع خصائص HTML القديمة؛ لضمان تقسيم أدق إلى مقاطع محتوى ذات معنى.
  • التحديثات المنتظمة: الحفاظ على منطق الزاحف ومكتبات التحليل للتكيف مع التغييرات في معايير الويب وممارسات HTML مع مرور الوقت.

من خلال التعامل مع هذه التحديات بشكل استباقي، يمكنك تحسين جودة المقاطع المستخرجة من صفحات HTML القديمة، وبالتالي تعزيز فاعلية وصلة تطبيقات البحث المبنية على Elasticsearch.

فهرسة ملفات PDF

استخراج محتوى PDF

  • استخراج النص من ملفات PDF، مع مراعاة عناصر مثل العناوين والفقرات والجداول.
  • التعامل مع البيانات الوصفية (العنوان، والمؤلف، والتاريخ) بشكل منفصل للفهرسة.

استراتيجية التقسيم

  • حسب المستند: التعامل مع كل ملف PDF كمستند واحد للفهرسة.
  • حسب الصفحة: بدلًا من ذلك، يمكنك تقسيم ملفات PDF إلى مقاطع بناءً على الصفحات أو الأقسام المنطقية إذا لزم الأمر.
  • الكتل النصية: تقسيم المقاطع الكبيرة إلى وحدات أصغر بناءً على الفواصل الطبيعية في المحتوى (على سبيل المثال، الفقرات).

تحديات وحقائق وخرافات متعلقة باستخراج النصوص

  • حقيقة: قد تحتوي ملفات PDF على صور أو مستندات ممسوحة ضوئيًا، ما يتطلب استخدام التعرُّف البصري على الأحرف (OCR) لاستخراج النصوص. يحتوي Watsonx Discovery على خاصية OCR، لذا لا يُتوقع أن يكون ذلك تحديًا.
  • التعامل مع مشكلات ترميز النص وتنسيقه الفريدة في ملفات PDF (مثل تقسيم الكلمات أو فواصل الأسطر).

مسار الفهرسة

  • تطبيع النص المستخرج من خلال إزالة الأحرف الخاصة ومعالجة الفواصل بين الكلمات.
  • طبق أدوات تحليل لغوية خاصة على النص المعالج لتعزيز قدرات البحث.
الاعتبارات

اعتبارات عامة

  • الأداء: الموازنة بين حجم الأقسام لضمان فهرسة فعَّالة وأداء جيد عند الاستعلام.
  • الملاءمة: التأكد من أن الأقسام تغطي أجزاء محتوى ذات معنى للحصول على نتائج بحث دقيقة.
  • عبء الفهرسة: مراعاة العبء الناتج عن فهرسة كميات كبيرة من البيانات، وتحسين إعدادات الفهرسة وتوزيع الأجزاء في Elasticsearch.
  • جودة البحث: اختبار استعلامات البحث وتنقيحها للتأكد من أنها تقدِّم نتائج ذات صلة عبر المستندات المقسَّمة.

اختيار طريقة التقسيم

  • خصائص المحتوى: بالنسبة إلى الرسائل القصيرة، قد يكون التقسيم على مستوى الجملة كافيًا. بالنسبة إلى الوثائق الطويلة، يُنصح بالنظر في التقسيم مع مراعاة المحتوى، أو حتى استكشاف التقسيم المتباين باستخدام أحجام مقاطع مختلفة.
  • متطلبات التطبيق: إذا كانت الكفاءة الحاسوبية هي الأولوية، فقد يكون تقسيم المحتوى بأحجام ثابتة نقطة انطلاق مناسبة. أما إذا كان استرجاع المعلومات الغني بالسياق أمرًا بالغ الأهمية، فإن التقسيم مع مراعاة المحتوى يُعَد الخيار الأفضل.

باختصار، أفضل استراتيجية لتقسيم المحتوى عند استخدام Elasticsearch مع الزحف على الويب أو فهرسة ملفات PDF تتمثل في تفكيك المحتوى إلى وحدات قابلة للإدارة (مثل المستندات والصفحات، والأقسام) بحيث تحقِّق توازنًا بين الدقة والكفاءة في الفهرسة والاستعلام. يجب تعديل الاستراتيجية بناءً على طبيعة مصدر المحتوى (مثل صفحات الويب مقابل ملفات PDF) والمتطلبات المحددة لتطبيق البحث الخاص بك. ومن خلال تطبيق هذه المنهجيات، يمكنك تحسين أداء ودقة محرك البحث، ما يوفر للمستخدمين نتائج أكثر صلة ودقة.

المقارنة بين منهجيات التقسيم

الفوائد البساطة، وسهولة الإدارة

 

حالات الاستخدام:
 

  • <b style=" font-family: inherit; ">مقاطع الويب ذات الصفحات الصغيرة والمستقلة ذاتيًا:<span style=" font-family: inherit; "> سهولة إدارة كل عنوان URL كمستند منفصل.
  • الحالات التي يمثِّل فيها كل عنوان URL مستندًا مميزًا: ضمان الوضوح والبساطة في التعامل مع المستندات.
الفوائد تحسين الدقة في التقسيم، وتعزيز صلة نتائج البحث بالاستعلامات

 

حالات الاستخدام: 

- مواقع المحتوى الطويل: تعزيز صلة البحث من خلال تقسيم المقالات أو المنشورات الكبيرة.

المواقع التي تحتوي على أنواع محتوى متنوعة: إتاحة تنظيم واسترجاع أفضل للمحتوى المتنوع.

 

الفوائد تحقيق التوازن بين الدقة والأداء، وتعزيز دقة البحث

 

حالات الاستخدام: 

- المواقع الغنية بالمحتوى: ضمان ألا تكون الشرائح كبيرة جدًا، ما يؤدي إلى تحسين دقة البحث والأداء.

- المواقع الإلكترونية التي لا يُفضل فيها وجود شرائح كبيرة جدًا: تحقيق توازن بين الحاجة إلى الفهرسة التفصيلية والأداء.

الفوائد الكفاءة الحسابية، والأداء المتوقع

 

حالات الاستخدام: 

- التطبيقات التي تتطلب كفاءة حسابية عالية: توفير أداء متوقع واستخدام محسوب للموارد.

- مهام معالجة البيانات الموحَّدة: مناسبة للبيئات التي تستفيد من أحجام مقاطع موحَّدة.

الفوائد تحكم دقيق في المحتوى، نتائج بحث عالية الصلة

 

حالات الاستخدام: 

 

- فهرسة الرسائل القصيرة: مثالي لتحقيق دقة البحث والاسترجاع في النصوص الموجزة.

- تطبيقات تحليل النصوص: توفير تحليل وفهم تفصيلي للمقاطع القصيرة من النصوص.

الفوائد التقسيم مع مراعاة السياق، وتعزيز صلة نتائج البحث

 

حالات الاستخدام: 

- الوثائق الطويلة ذات المحتوى المتنوع: ضمان احتفاظ الشرائح بالسياق المعنوي.

- تحليل المحتوى التفصيلي: تحسين جودة نتائج البحث من خلال الحفاظ على السياق.

الفوائد التجزئة المنطقية، وتحسين قابلية القراءة

 

حالات الاستخدام:

فهرسة PDF: التعامل مع كل صفحة كوحدة منطقية، ما يعزز قابلية القراءة والبحث.

- المستندات التي تمثِّل فيها كل صفحة وحدة مميزة: الحفاظ على سلامة المحتوى القائم على الصفحات.

 

الفوائد الفواصل الطبيعية في المحتوى، وتحسين التعامل مع المحتوى المنظم

 

حالات الاستخدام: 

المستندات الكبيرة ذات الفواصل الواضحة بين الفقرات: تسهيل القراءة والمعالجة.

فهرسة المستندات المنظمة: ضمان فهرسة الأقسام ذات المعنى بشكل منفصل.

حلول IBM

التقسيم في watsonx

تعمل منصة IBM watsonx على تمكين وتسريع تنفيذ أنماط التوليد المعزز بالاسترجاع (RAG)، وتسمح بتقسيم المستندات وفهمها.  يُتيح watsonx Orchestrate بالتعاون مع Watsonx Discovery تقسيم المستندات بدءًا من حلول منخفضة الكود/دون كود ووصولًا إلى عمليات تنفيذ مخصصة أكثر. 

الطرق المذكورة تمثِّل اعتبارات شائعة لتقنيات تقسيم المستندات يمكن تنفيذها في حالات استخدام RAG. تتوفر التقنية الهجينة في watsonx لتوفير دقة وسرعة أفضل. تعمل العملية الشاملة على تقسيم المستند إلى جمل منفردة لضمان دقة تقسيم ذات معنى. ثم يتم تجميع الجمل في شرائح باستخدام نموذج لغوي كبير (LLM). يعمل النموذج اللغوي الكبير على تقييم إذا ما كان سياق الجملة يتناسب مع الشريحة، وإذا لم يكن كذلك، يتم بدء مقطع جديد. وباستخدام هذا المقطع، يتم استخراج بيانات وصفية ذات معنى باستخدام النموذج اللغوي الكبير؛ ويشمل ذلك العنوان، والمعرِّف، والملخص.

للمزيد من المعلومات حول هذه الطريقة، يُرجى الرجوع إلى مدونة IBM هذه: https://developer.ibm.com/articles/awb-enhancing-llm-performance-document-chunking-with-watsonx/.

الأدوات مفتوحة المصدر

التقسيم النحوي

يستخدم التقسيم النحوي نهجًا موجهًا بالبنية لفصل النص بناءً على تنسيق المستند. غالبًا وبشكل طبيعي، يتم استخدام عناوين الأقسام كفواصل. ومع ذلك، في حالات المستندات التي لا تحتوي على معلومات مشفرة (مثل PDF)، يمكن استخدام أحجام الخطوط كعلامة لفصل المقاطع.

نقاط القوة:

  • تنفيذ بسيط

القيود:

  • تفترض الخوارزمية وجود تسلسل هرمي للمعلومات؛ لذلك قد يتم إغفال بعض المؤشرات النحوية.

يمكن أن يكون التقسيم النحوي مفيدًا في الحالات التي تكون فيها البنية الطوبولوجية للمستند قابلة للتنبؤ ومهيأة بوضوح للتقسيم.

التقسيم بأحجام ثابتة

في التقسيم بأحجام ثابتة، يتم تقسيم بيانات الإدخال إلى شرائح متساوية الحجم. تعتمد هذه الطريقة غالبًا على تقسيم النص إلى أحجام محددة مسبقًا استنادًا إلى عدد الرموز المميزة. تُعَد هذه الطريقة سهلة التنفيذ والفهم، ما يجعلها مناسبة للمهام التي تكون فيها بيانات الإدخال ذات حجم متسق ويمكن التنبؤ به.

نقاط القوة:

  • سهولة التنفيذ والفهم
  • الكفاءة الحسابية

القيود:

  • جامدة ولا يمكنها التكيف مع سياق النص
  • قد تُغفل معلومات سياقية مهمة في النص

يُعَد التقسيم بأحجام ثابتة الأنسب في الحالات التي تكون فيها بيانات الإدخال قابلة للتنبؤ ولا تتطلب سياقًا معمقًا.

from langchain.text_splitter import CharacterTextSplitter

# Example text
text = "The quick brown fox jumps over the lazy dog."

# Create a splitter for fixed size chunks
splitter = CharacterTextSplitter(chunk_size=10, chunk_overlap=0)

# Split the text
chunks = splitter.split(text)

# Print the chunks
for chunk in chunks:
 print(chunk)

التقسيم الدلالي

يعمل التقسيم الدلالي على فصل النص بناءً على السياق، ويجمع العناصر ذات المعنى باستخدام تقنيات خوارزمية. يكون التقسيم الدلالي مهمًا عندما يكون معنى المحتوى أساسيًا لتكوين الاستجابة، مثل الوثائق القانونية.

نقاط القوة:

  • البيانات المسترجعة تكون أكثر دقة وارتباطًا.
  • الحفاظ على ترابط قاعدة المعرفة أثناء التقسيم.

القيود:

  • تنفيذ أكثر تعقيدًا باستخدام خوارزميات متقدمة.
  • يتطلب موارد حاسوبية أكبر.

مثال:

from langchain.text_splitter import RecursiveCharacterTextSplitter

# Example text
text = "Steve Jobs was born in California. He co-founded Apple in 1976."

# Create a splitter for semantic chunking
splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=10)

# Split the text
chunks = splitter.split(text)

# Print the chunks
for chunk in chunks:
 print(chunk)

يستخدم التقسيم الهجين كلًا من المعلومات السياقية والبنائية للاستفادة من المزايا المشتركة لكلٍّ من التقسيم بأحجام ثابتة والتقسيم الدلالي. تكون هذه الطريقة هي الأنسب في الحالات التي يتوفر فيها حجم كبير من البيانات عبر حالات استخدام متعددة، مع تنسيقات ومواد متنوعة، مثل قاعدة المعرفة المؤسسية.

نقاط القوة:

  • تحقيق دقة وسرعة مُثلى من خلال تقنيات تقسيم مرنة تعتمد على بنية قاعدة المعرفة والسياق.

القيود:

  • يتطلب قدرًا أكبر من الصيانة والجهد في التنفيذ نظرًا لارتفاع متطلبات الموارد.

مثال:

from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter

# Example text
text = "Steve Jobs was born in California. He co-founded Apple in 1976."

# Fixed-size splitter
fixed_size_splitter = CharacterTextSplitter(chunk_size=50, chunk_overlap=10)
fixed_size_chunks = fixed_size_splitter.split(text)

# Semantic splitter
semantic_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=20)
semantic_chunks = semantic_splitter.split(text)

# Print the fixed-size chunks
print("Fixed-size chunks:")
for chunk in fixed_size_chunks:
 print(chunk)

# Print the semantic chunks
print("\nSemantic chunks:")
for chunk in semantic_chunks:
 print(chunk)

التجزئة الوكيلية

تعتمد استراتيجية التقسيم هذه على استخدام النماذج اللغوية الكبيرة (LLMs) لتحديد الطول والمحتوى المناسبين لمقاطع النص بناءً على السياق الذي سيتم استخدامها فيه. تستند هذه الاستراتيجية إلى مفهوم المقترحات، والذي يتضمن استخراج عبارات مستقلة من جزء خام من النص.

لتنفيذ هذا النهج، تستخدم الاستراتيجية قالب استرجاع المقترحات الذي توفِّره LangChain لاستخراج المقترحات من النص. بعد ذلك يتم تمرير هذه المقترحات إلى وكيل يعتمد على النماذج اللغوية الكبيرة، والذي يحدد إذا ما كان ينبغي تضمين كل مقترح ضمن مقطع موجود أو إنشاء مقطع جديد.

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

نقاط القوة:

  • الاستقلالية: يمكن للنماذج اللغوية الكبيرة (LLMs) اتخاذ قرارات بشأن المقترحات التي ينبغي تضمينها في المقترح ومتى يجب إنشاء مقطع جديد دون تدخل بشري، ما يُتيح توليد النصوص بكفاءة أعلى وعلى نطاق أوسع.
  • الترابط: تم تصميم النماذج اللغوية الكبيرة لإنتاج نصوص مترابطة وملائمة للسياق، ما يساعد على ضمان أن تكون المقاطع الناتجة ذات معنى وسهلة الفهم.

القيود:

  • الاستهلاك المرتفع للموارد الحاسوبية: قد يكون توليد النصوص باستخدام النماذج اللغوية الكبيرة مكلِّفًا من حيث الموارد الحاسوبية، خاصةً عند استخدام نماذج كبيرة أو معقدة. وقد يَحُدّ ذلك من قابلية التوسع والجدوى العملية لاستخدام النماذج اللغوية الكبيرة في بعض التطبيقات.
  • الهلوسة: قد يحدث ذلك عندما يولِّد النموذج نصًا استنادًا إلى تحيُّزاته أو افتراضاته الداخلية، بدلًا من الاعتماد على البيانات أو السياق الفعلي.

الآن، كيف يمكننا تنفيذ بعض هذه التقنيات لتقسيم الوثائق؟ توجد العديد من المكتبات مفتوحة المصدر التي تُتيح تشغيل هذه الخوارزميات وتقنيات التقسيم. ومن الجيد البدء باستخدام أدوات تقسيم النصوص في LangChain؛ يُرجى الرجوع إلى الوثائق التالية للاطِّلاع على أدوات تقسيم النصوص المتاحة. https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/

الخطوات التالية

اطَّلِع على أحدث الأنماط التقنية، وبنى الحلول، ومنشورات البنية من IBM.

  1. انتقِل إلى IBM Architecture Center
المساهمون

Haneen Bakbak، وLuke Major

تاريخ التحديث: 15 نوفمبر 2024