Retrieval-Augmented Generation (RAG)

تحليل البيانات المالية: التجزئة الدلالية مقابل التجزئة المتكررة في RAG

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

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

الخط الأساسي: التجزئة المتكررة للحروف

تُعد تقنية تقسيم النص المتكرر للحروف الطريقة الافتراضية في معظم الأطر البرمجية مثل LangChain. تقوم بتقسيم النص إلى أجزاء بحجم محدد (على سبيل المثال، 512 أو 1024 رمزاً) باستخدام تسلسل هرمي من الفواصل: الفقرات، ثم الجمل، ثم الكلمات. وعلى الرغم من كفاءتها الحسابية وسهولة تنفيذها، إلا أنها تعاني من "تفتت السياق".

في السياقات المالية، يؤدي هذا غالباً إلى سيناريو يتم فيه تقسيم insight حاسم عبر جزأين. على سبيل المثال، إذا تم قطع جملة تشرح تحولاً في الالتزامات إلى نصفين، فإن المعنى الدلالي يضيع. يصبح متجه التضمين المُولد لذلك الجزء مشوشاً، مما يقلل من الاستدعاء (Recall) للاستفسارات المالية المحددة.

from langchain.text_splitter import RecursiveCharacterTextSplitter

# Standard recursive chunking
recursive_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    length_function=len,
    separators=["\n\n", "\n", " ", ""]
)

chunks = recursive_splitter.split_text(financial_report_text)

البديل: التجزئة الدلالية

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

بالنسبة للتقارير المالية، يعني هذا أن فقرة معقدة تناقش "سياسات الاعتراف بالإيرادات" تبقى سليمة، حتى لو تجاوزت 500 رمز، بينما يتم فصل الهوامش القصيرة وغير ذات الصلة. يؤدي هذا إلى متجهات تضمين ذات جودة أعلى، ونتيجة لذلك، نتائج استرجاع أفضل.

from langchain_experimental.text_splitter import SemanticChunker
from langchain.embeddings import OpenAIEmbeddings

# Semantic-aware chunking
embeddings = OpenAIEmbeddings()
semantic_splitter = SemanticChunker(
    embeddings=embeddings,
    breakpoint_threshold_type='standard_deviation'
)

semantic_chunks = semantic_splitter.split_text(financial_report_text)

اختبار الأداء: حالات الاستخدام المالية

لاختبار هاتين الطريقتين، استخدمنا مجموعة بيانات مكونة من 50 إقرار 10-K متنوعة من شركات Fortune 500. طرحنا 200 سؤالاً معقداً يتطلب استدلالاً متعدد الخطوات، مثل "ما كان تأثير أسعار صرف العملات الأجنبية على الدخل التشغيلي للربع الثالث؟"، وقمنا بتقييم أداء الاسترجاع باستخدام متوسط الرتبة العكسية (MRR) والاستدعاء@5.

كانت النتائج لافتة للنظر. حققت التجزئة المتكررة متوسط رتبة عكسية (MRR) يبلغ 0.42، بينما حسنت التجزئة الدلالية هذا الرقم إلى 0.68. كان المحرك الأساسي هو تقليل النتائج السلبية الكاذبة في الجداول والهوامش. لأن التجزئة الدلالية تجمع الجمل ذات الصلة، يتلقى نموذج اللغة الكبيرة سياقاً أكثر تماسكاً، مما يسمح له بأداء أفضل في الاستدلال اللاحق.

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

الخاتمة

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

Share: