MODULE 03 / LESSON 20

Advanced Chunking Techniques در سیستم‌های RAG

مفهوم اصلی Chunking مزایای زیادی برای سیستم‌های RAG دارد، اما یک مشکل مهم ایجاد می‌کند: تقسیم کردن Document به بخش‌های کوچک ممکن است باعث از بین رفتن Context و معنی اصلی متن شود. روش‌های ساده مانند: Fixed Size Chunking Recursive…

نویسنده: محمد ابوطالبی۱۲۵۴ واژهماژول ۳: Vector Databaseشامل افزودهٔ پژوهشی ۲۰۲۶

مفهوم اصلی

Chunking مزایای زیادی برای سیستم‌های RAG دارد، اما یک مشکل مهم ایجاد می‌کند:

تقسیم کردن Document به بخش‌های کوچک ممکن است باعث از بین رفتن Context و معنی اصلی متن شود.

روش‌های ساده مانند:

  • Fixed Size Chunking
  • Recursive Character Splitting

همیشه نمی‌توانند از این مشکل جلوگیری کنند.

به همین دلیل تکنیک‌های پیشرفته‌تری ایجاد شده‌اند که تلاش می‌کنند Chunkها را بر اساس معنی متن ایجاد کنند.


مشکل از دست رفتن Context در Chunking

مثال:

جمله:

That night she dreamed, as she did often, that she was finally an Olympic champion.

معنی جمله:

او خواب دید که در آینده قهرمان المپیک خواهد شد.

اما اگر تقسیم متن در جای نامناسب انجام شود، ممکن است Chunk باعث شود برداشت اشتباهی ایجاد شود:

  • انگار او قبلاً قهرمان المپیک شده است.
  • نه اینکه فقط رویای قهرمانی دارد.

روش‌های ساده Chunking این نوع مشکل را تشخیص نمی‌دهند.


1. Semantic Chunking

مفهوم اصلی

Semantic Chunking

متن را بر اساس شباهت معنایی جمله‌ها به Chunk تقسیم می‌کند.

هدف:

جمله‌هایی که معنی مشابه دارند در یک Chunk قرار بگیرند و هنگام تغییر موضوع، Chunk جدید ایجاد شود.


نحوه کار Semantic Chunking

الگوریتم:

  1. Document را جمله به جمله بررسی می‌کند.
  2. بررسی می‌کند جمله جدید چقدر با Chunk فعلی مرتبط است.
  3. اگر معنی مشابه باشد:
    • جمله به همان Chunk اضافه می‌شود.
  4. اگر تفاوت معنایی زیاد باشد:
    • Chunk فعلی بسته می‌شود.
    • Chunk جدید شروع می‌شود.

روش تشخیص شباهت

برای مقایسه:

  • Chunk فعلی
  • جمله بعدی

هر دو به Vector تبدیل می‌شوند.

سپس فاصله بین Vectorها محاسبه می‌شود.


اگر:

Distance < Threshold

باشد:

یعنی:

  • معنی مشابه است.
  • جمله در همان Chunk قرار می‌گیرد.

اگر:

Distance > Threshold

باشد:

یعنی:

  • موضوع تغییر کرده است.
  • Chunk جدید ساخته می‌شود.

نتیجه Semantic Chunking

خروجی:

Chunkهایی با اندازه متغیر که:

  • ساختار فکری نویسنده را بهتر حفظ می‌کنند.
  • موضوعات مرتبط را کنار هم نگه می‌دارند.

مثال

اگر نویسنده:

  • در یک پاراگراف وارد موضوع جدیدی شود.
  • یا یک ایده را در چند پاراگراف ادامه دهد.

Semantic Chunking می‌تواند محل مناسب تقسیم را پیدا کند.


مزایای Semantic Chunking

  • حفظ بهتر مفهوم متن.
  • افزایش کیفیت Retrieval.
  • بهبود معیارهایی مانند:
    • Precision
    • Recall

محدودیت Semantic Chunking

هزینه محاسباتی بالاتری دارد.

دلیل:

برای تمام جمله‌ها باید:

  • Vector ساخته شود.
  • فاصله‌ها محاسبه شوند.

در Documentهای بزرگ این فرآیند می‌تواند سنگین باشد.


2. LLM-Based Chunking

مفهوم اصلی

در این روش خود:

Large Language Model (LLM)

وظیفه ایجاد Chunkها را انجام می‌دهد.


نحوه کار

Document به LLM داده می‌شود.

همراه آن دستورالعمل مشخص می‌شود.

مثلاً:

  • متن را بر اساس معنی تقسیم کن.
  • مفاهیم مشابه را در یک Chunk نگه دار.
  • هنگام شروع موضوع جدید، Chunk جدید بساز.

عملکرد LLM

LLM مانند تولید متن معمولی:

  • Chunkهای مورد نظر را ایجاد می‌کند.

مزایای LLM-Based Chunking

  • عملکرد بسیار بالایی دارد.
  • می‌تواند ساختار معنایی متن را بهتر درک کند.
  • برای بسیاری از کاربردها کیفیت Retrieval خوبی ایجاد می‌کند.

محدودیت LLM-Based Chunking

یک روش تا حدی:

Black Box

است.

یعنی:

  • دقیقاً مشخص نیست مدل چگونه تصمیم گرفته است.
  • کنترل و بررسی آن دشوارتر است.

همچنین:

  • هزینه پردازشی بیشتری دارد.

کاهش هزینه LLM-Based Chunking

با کاهش هزینه استفاده از LLMها:

این روش از نظر اقتصادی قابل استفاده‌تر شده است.


3. Context-Aware Chunking

مفهوم اصلی

یک بهبود مهم برای هر روش Chunking:

استفاده از LLM برای اضافه کردن Context به هر Chunk است.


ایده:

علاوه بر ساخت Chunk:

LLM یک متن توضیحی درباره جایگاه آن Chunk در Document ایجاد می‌کند.


مثال Context-Aware Chunking

فرض کنید یک Blog Post در پایان خود دارد:

  • لیست طولانی نام افراد حمایت‌کننده و مشارکت‌کنندگان.

یک Chunk در انتهای متن ممکن است فقط شامل:

  • تعداد زیادی اسم

باشد.

مشکل:

اگر این Chunk به تنهایی دیده شود، معنی مشخصی ندارد.


راه‌حل:

LLM به Chunk اطلاعات اضافه می‌کند.

مثلاً توضیح می‌دهد:

این بخش مربوط به لیست حمایت‌کنندگان مقاله است.


مزایای Context-Aware Chunking

متن اضافه‌شده در دو مرحله مفید است:


هنگام Vectorization

Context اضافه‌شده همراه Chunk تبدیل به Vector می‌شود.

نتیجه:

  • Search Relevancy بهتر می‌شود.

هنگام Retrieval

وقتی Chunk به LLM اصلی داده می‌شود:

LLM بهتر معنی Chunk را درک می‌کند.


محدودیت Context-Aware Chunking

نیاز به Preprocessing سنگین دارد.

زیرا:

LLM باید:

  • تمام Documentها را بررسی کند.
  • هر Chunk را پردازش کند.
  • Context اضافه کند.

مزیت مهم

با وجود هزینه پردازشی اولیه:

در زمان Search:

  • سرعت کاهش پیدا نمی‌کند.

اما کیفیت Retrieval بهتر می‌شود.


مقایسه روش‌های Chunking

روش مزیت محدودیت
Fixed Size ساده و سریع ممکن است Context را خراب کند
Recursive Splitting حفظ بهتر ساختار متن اندازه Chunk ثابت نیست
Semantic Chunking تقسیم بر اساس معنی هزینه محاسباتی بالا
LLM-Based Chunking کیفیت بالا پیچیده و پرهزینه
Context-Aware Chunking افزایش کیفیت Search و Generation نیازمند Preprocessing سنگین

انتخاب روش مناسب Chunking

هدف در طراحی RAG:

استفاده از پیشرفته‌ترین روش ممکن نیست؛ بلکه انتخاب مناسب‌ترین روش برای داده و نیاز پروژه است.


برای Prototype

روش‌های مناسب:

  • Fixed Size Chunking
  • Recursive Character Splitting

این روش‌ها:

  • ساده هستند.
  • سریع پیاده می‌شوند.
  • نقطه شروع خوبی هستند.

برای سیستم‌های حساس به کیفیت

می‌توان بررسی کرد:

  • Semantic Chunking
  • LLM-Based Chunking

اما باید هزینه و پیچیدگی آن‌ها بررسی شود.


روش پیشنهادی برای بهبود اولیه

از آنجا که:

Context-Aware Chunking

می‌تواند روی هر روش Chunking اعمال شود و:

  • Search Relevance را افزایش دهد.
  • Generation را بهتر کند.

اغلب می‌تواند اولین بهبود بعد از روش‌های ساده باشد.


نکات مهم در انتخاب Chunking

هنگام طراحی سیستم RAG باید بررسی کرد:

  • داده‌ها چه ساختاری دارند؟
  • کیفیت Retrieval چقدر اهمیت دارد؟
  • هزینه پردازشی قابل قبول چقدر است؟
  • آیا نگهداری و بررسی سیستم ساده است یا پیچیده؟

جمع‌بندی

  • Chunking ساده ممکن است باعث از بین رفتن Context شود.
  • Semantic Chunking متن را بر اساس شباهت معنایی تقسیم می‌کند.
  • LLM-Based Chunking از LLM برای ساخت Chunkهای هوشمند استفاده می‌کند.
  • Context-Aware Chunking به هر Chunk اطلاعات اضافی درباره جایگاه آن در Document اضافه می‌کند.
  • روش‌های پیشرفته کیفیت Retrieval را افزایش می‌دهند، اما هزینه بیشتری دارند.
  • در پروژه‌های واقعی باید بین کیفیت، هزینه و پیچیدگی تعادل برقرار کرد.
  • بهترین روش Chunking به نوع داده و نیاز سیستم RAG بستگی دارد.