Phase 19: Capstone Projects

استراتيجيات التجزئة، مقارنة

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

Type: Build

Languages: Python

Prerequisites: Phase 11 lessons 04 (embeddings), 06 (RAG), 07 (advanced RAG); Phase 19 Track B foundations (lessons 20-29)

Time: ~90 minutes

أهداف التعلم

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

المشكلة

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

لا يمكن أن تنجح استفسار يسأل "ما هو عتبة الإجراءات المفروضة على الميزانية" إلا إذا كان بإمكانك الوصول إلى الجزء الذي يحمل عتبة الإجراءات المفروضة. إذا قطع مفصل النافذة الثابتة قيمة العد من السياق المحيط، يتحرك التضمين إلى مجموعة مختلفة، تنخفض درجة BM25, يرى المرتبة المترتبة على الضوضاء، ويولد الإجابة LLM خطأ. مقالة 2024 "LongRAG: تعزيز التجميع المُتزايد مع LLMات السياق الطويل" قيّرت 35 في المائة من التحولات المطلقة في استرجاع التذكير من خلال اختيار التقطيع. عمل المتابعة في عام 2025 على عناوين المقاطع السياسية ضيق الفجوة ولكن لم يغلقها.

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

المفهوم

flowchart LR
  Doc[Source Document] --> S1[Fixed Window]
  Doc --> S2[Sentence]
  Doc --> S3[Recursive Split]
  Doc --> S4[Semantic Cluster]
  Doc --> S5[Structural Markdown]
  S1 --> Chunks1[Chunks]
  S2 --> Chunks2[Chunks]
  S3 --> Chunks3[Chunks]
  S4 --> Chunks4[Chunks]
  S5 --> Chunks5[Chunks]
  Chunks1 --> Index[Embedding Index]
  Chunks2 --> Index
  Chunks3 --> Index
  Chunks4 --> Index
  Chunks5 --> Index
  Index --> Eval[Recall@k vs Gold Spans]

نافذة ثابتة

خط الأساس القوة الخردة. قطع كل حرف N. التداخل الخيارية بحيث يبدو جملة قطع في الموقف N كاملة داخل الجزء الذي يبدأ في الموقف N - التداخل. سريعة، تحديدية، رهيبة في الحدود. استخدمها كتحكم، وليس افتراضي.

الجملة

تقسيم حدود الجملة مع regex أو آلة الحالة البسيطة. إغلف جملة واحدة أو أكثر في جزء حتى ميزانية الشخصية المستهدفة. توقف عن قطع منتصف الكلمة. لا يزال يقطع منتصف الفقرة والفصل. الافتراض في العديد من خطوط الأنابيب RAG المبكرة واختيار معقول للنصوص دون بنية أخرى.

الانقسام المتكرر

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

التجميع الاسمني

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

العناوين الهيكلية المحددة

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

كيف يقيّم recall@k اختيار الحدود

يحتوي استفسار مع علامة ذهبية على تعويضات حرفية دقيقة من فترة الإجابة داخل الوثيقة المصدرة. بعد التقطيع، تسأل: هل أي من قطع القاعدة العليا التي أعادتها الرديفير تتداخل مع المدى الذهبي؟ إذا كان ذلك صحيحاً، فإن recall@k لهذا الاستفسار هو 1. إذا لم يكن، فهو 0. متوسط على مجموعة الاستفسارات. قم بتقييم نفسها لكل استراتيجية ويعرض لك انتشار ما هي سياسة الحدود التي تنجو من الجسم الذي لديك.

بناءها

code/main.pyتطبيقات:

  • fixed_window(text, size, overlap)-الخط الأساسي
  • sentence_chunks(text, target)-مُغلفة جمل بسيطة
  • recursive_split(text, separators, target)- التكرار الهرمي
  • semantic_chunks(text, similarity_threshold)- التجميع القائم على المركزية فوق إضافة مزيفة تحديدية.
  • structural_markdown(text)-مفتاح ذو الرأس
  • mock_embed(text, dim)-إضافة على أساس الهاش حتى يتم تشغيل الحلقة خارج الاتصال
  • DenseIndex- نفس الشكل الذي استخدم في دروس الاسترداد الهجري في مرحلة 19 من المسار ب
  • eval_recall(strategy, corpus, queries, k)-حلقة المقارنة
  • أmain()الذي يدير كل استراتيجية على جسم الجهاز ويقوم بطبع جدول الاحتجاز.

إشغله

bashpython3 code/main.py

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

أوضاع الفشل الطاولة لن تختفي

Orphan sentences.تحوي محفظة الجملة إلى قطع تفوت جملة الموضوع. ثم تشير الإدراجات إلى مجموعة خاطئة.

Mid-symbol cuts.النوافذ الثابتة داخل الشفرة أو YAML سوف تقسيم المعرف إلى النصف. النصفين مدمجة في الضوضاء.

Header-only chunks.التسجيل الهيكلي يُصدّر قطعة لا تحتوي على سوى## Title. فلترا هذه أو ضمني الفقرة الأولى من الجزء التالي

Semantic drift.تعدد المجموعات التفاصلية المفصلة عندما يكون الجسم متساوياً على الموضوع. جزء من 5000 حرف يحتوي على العديد من الإجابات المحددة في إضافة واحدة متناثرة. مزج المفصلة مع قبعة حرف صلب.

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

اختيار الإعداد الافتراضي دون تشغيل المؤشر

ثلاثة خصائص تحدد المكون الافتراضي للكوربوس الجديد.

PropertyValueDefault
Document typeProse with no structureRecursive split, target 800
Document typeMarkdown / RFC / API docsStructural markdown
Document typeCodeAST-aware (out of scope; see Phase 19 lesson 02)
Paragraph lengthLong, single topicSentence, target 500
Paragraph lengthShort, mixed topicsSemantic, threshold 0.6

عندما تكون في شك، اختر الانقسام التكافئ إنه أقوى خط أساسي للاستراتيجية الواحدة

استخدمها

أنماط الإنتاج:

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

أرسله

يستخدم نظام RAG End-to-End Track F في الدروس 69 المكونات المختارة هنا كمرحله الأول. يقرأ الحزمة التقييمية في الدروس 68 recall@k من نفس الشكل الذي eval_recallاختر الاستراتيجية التي تفوز في جسمك وتغذيه إلى الأمام

التمارين

  1. إضافة استراتيجية سادسة: نيزة الوهم باستخدام tiktokenبدلاً من عدد الأحرف، قارن مع النافذة الثابتة على نفس الجهاز
  2. أدخلي جزءًا من 30٪ من كتلة الرمز في جهاز البيانات، إعادة تشغيل الجدول، شرح لماذا كل استراتيجية باستثناء التسجيل الهيكلي تفقد التذكر.
  3. استبدل التضمينات الحتمية بتضمينات من مزود المشروع الحقيقي. قياس دلتا الاستدعاء المجمع التمويلي. تقرير ما إذا كان الانتشار بين الاستراتيجيات يزيد أو يضيق.
  4. إضافةsummaryالحقل لكل جزء: وصف مركزي من جملة واحدة. أعيد تشغيل تقييم مع ملحق الملخص إلى جسم الجزء. قياس رفع التذكر.

الشروط الرئيسية

TermWhat people sayWhat it actually means
Recall@k"Did we get the right chunk?"Fraction of queries where any of the top-k chunks overlaps the gold answer span
Chunk overlap"Sliding window"Re-include the last N characters of the previous chunk in the next chunk
Structural splitter"Header-aware chunks"Cut at H1/H2/H3 boundaries; the heading text is part of the chunk
Semantic chunker"Topic-aware chunks"Embed sentences, cluster by centroid similarity, cut on drift
Centroid drift"Topic shift"Cosine similarity between the running mean and the next sentence drops past a threshold

المزيد من القراءة

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.