استراتيجيات التجزئة، مقارنة
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.يستخدم التجميع الاسمية نموذج إضافة. إذا قمت بتغيير النموذج، يمكنك أيضًا تغيير القطاعات. وضع نموذج القطعة بشكل منفصل من نموذج الاسترداد أو إعادة بناء المؤشر معًا.
اختيار الإعداد الافتراضي دون تشغيل المؤشر
ثلاثة خصائص تحدد المكون الافتراضي للكوربوس الجديد.
| Property | Value | Default |
|---|---|---|
| Document type | Prose with no structure | Recursive split, target 800 |
| Document type | Markdown / RFC / API docs | Structural markdown |
| Document type | Code | AST-aware (out of scope; see Phase 19 lesson 02) |
| Paragraph length | Long, single topic | Sentence, target 500 |
| Paragraph length | Short, mixed topics | Semantic, threshold 0.6 |
عندما تكون في شك، اختر الانقسام التكافئ إنه أقوى خط أساسي للاستراتيجية الواحدة
استخدمها
أنماط الإنتاج:
- قم بإجراء تقييم قبل إرسال خط أنابيب جديد؛ لا تثق في الاستراتيجية التي تعود إليها مكتبتك بشكل افتراضي.
- إعادة تشغيل تقييم كلما غيرت نموذج الإضافة أو مزيج الجسم، الفائز يعتمد على الجسم.
- إثبات اسم الاستراتيجية في البيانات المعدنية لكل قطعة حتى تتمكن من إعطاء التراجع لاحقاً.
أرسله
يستخدم نظام RAG End-to-End Track F في الدروس 69 المكونات المختارة هنا كمرحله الأول. يقرأ الحزمة التقييمية في الدروس 68 recall@k من نفس الشكل الذي eval_recallاختر الاستراتيجية التي تفوز في جسمك وتغذيه إلى الأمام
التمارين
- إضافة استراتيجية سادسة: نيزة الوهم باستخدام
tiktokenبدلاً من عدد الأحرف، قارن مع النافذة الثابتة على نفس الجهاز - أدخلي جزءًا من 30٪ من كتلة الرمز في جهاز البيانات، إعادة تشغيل الجدول، شرح لماذا كل استراتيجية باستثناء التسجيل الهيكلي تفقد التذكر.
- استبدل التضمينات الحتمية بتضمينات من مزود المشروع الحقيقي. قياس دلتا الاستدعاء المجمع التمويلي. تقرير ما إذا كان الانتشار بين الاستراتيجيات يزيد أو يضيق.
- إضافة
summaryالحقل لكل جزء: وصف مركزي من جملة واحدة. أعيد تشغيل تقييم مع ملحق الملخص إلى جسم الجزء. قياس رفع التذكر.
الشروط الرئيسية
| Term | What people say | What 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 |
المزيد من القراءة
- LongRAG: Enhancing Retrieval-Augmented Generation with Long-context LLMs (arXiv 2406.15319)
- Anthropic, Contextual Retrieval
- LlamaIndex, Chunking strategies for production RAG
- المرحلة 11 الدروس 06 - أساسيات المجموعة
- المرحلة 11 الدروس 07 - المرحلة المتقدمة
- المرحلة 19 الدروس 65 - استرداد هجين الذي يرتب قطع المنتجة هنا
- المرحلة 19 الدروس 68 - القائمة على تقييم الذي يسجل اختيار الاستراتيجية في الإنتاج
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.