Chunking چیست؟ راهنمای جامع تقسیمبندی اسناد برای RAG و هوش مصنوعی
Chunking فرایندی برای تقسیم اسناد به بخشهای کوچکتر است تا مدلهای هوش مصنوعی بتوانند اطلاعات مرتبط را با دقت بیشتری بازیابی کنند. در این مقاله با انواع Chunking، مزایا، کاربردها و بهترین روشهای پیادهسازی آن آشنا میشوید.
خلاصۀ مقاله: Chunking فرایندی است که در آن اسناد بزرگ به بخشهای کوچکتر و قابلمدیریت تقسیم میشوند تا مدلهای هوش مصنوعی بتوانند آنها را بهتر پردازش و بازیابی کنند. این تکنیک یکی از مهمترین مراحل در معماری RAG، جستوجوی معنایی و سیستمهای مبتنی بر Embedding است. در این مقاله با مفهوم Chunking، انواع روشهای تقسیمبندی، بهترین شیوهها و تأثیر آن بر کیفیت پاسخ مدلهای هوش مصنوعی آشنا میشوید.
Chunking چیست؟
یکی از مهمترین پرسشها هنگام ساخت یک سامانه مبتنی بر RAG این است:
آیا باید کل سند را برای مدل ارسال کنیم؟
پاسخ معمولاً خیر است.
مدلهای زبانی محدودیت Context Window دارند و ارسال یک سند کامل علاوه بر افزایش هزینه، معمولاً باعث کاهش کیفیت پاسخ نیز میشود.
به همین دلیل، پیش از تولید Embedding، اسناد به بخشهای کوچکتر تقسیم میشوند. این فرایند Chunking نام دارد.
Chunking چیست؟
Chunking به معنای تقسیم یک متن، فایل یا سند بزرگ به بخشهای کوچکتر (Chunk) است.
هر Chunk معمولاً یک مفهوم یا موضوع نسبتاً مستقل را در بر میگیرد و بهصورت جداگانه به Embedding تبدیل میشود.
در زمان جستوجو نیز بهجای بازیابی کل سند، فقط Chunkهای مرتبط برای مدل ارسال میشوند.
چرا Chunking اهمیت دارد؟
فرض کنید یک فایل PDF شامل ۳۰۰ صفحه راهنمای محصول دارید.
اگر کل فایل را به یک Embedding تبدیل کنید:
- جستوجوی معنایی دقت کمتری خواهد داشت.
- اطلاعات نامرتبط نیز بازیابی میشوند.
- Context Window سریعتر پر میشود.
- هزینه API افزایش پیدا میکند.
اما اگر فایل به صدها Chunk مناسب تقسیم شود، سیستم میتواند فقط بخشهای مرتبط با سؤال کاربر را بازیابی کند.
Chunking چگونه کار میکند؟
فرایند معمولاً شامل مراحل زیر است:
- دریافت سند
- تقسیم سند به Chunkهای کوچکتر
- تولید Embedding برای هر Chunk
- ذخیرۀ Embeddingها در Vector Database
- تبدیل سؤال کاربر به Embedding
- بازیابی نزدیکترین Chunkها
- ارسال همان Chunkها به مدل زبانی
این فرایند یکی از پایههای اصلی معماری RAG است.
اندازه مناسب Chunk چقدر است؟
یکی از مهمترین تصمیمها در طراحی سیستم RAG، انتخاب اندازۀ مناسب Chunk است.
اگر Chunkها:
بیش از حد بزرگ باشند
- اطلاعات غیرمرتبط وارد پاسخ میشوند.
- تعداد توکنها افزایش مییابد.
- هزینه API بیشتر میشود.
- دقت بازیابی کاهش پیدا میکند.
بیش از حد کوچک باشند
- مفهوم متن از بین میرود.
- ارتباط میان جملات قطع میشود.
- مدل اطلاعات کافی برای پاسخ ندارد.
به همین دلیل، اندازه بهینه به نوع محتوا و کاربرد سیستم بستگی دارد و باید با آزمون و ارزیابی انتخاب شود.
انواع Chunking
۱. Fixed-size Chunking
در این روش، متن بر اساس تعداد مشخصی از کاراکترها یا توکنها تقسیم میشود.
مزایا:
- پیادهسازی ساده
- سرعت بالا
معایب:
- ممکن است جمله یا پاراگراف در میانه قطع شود.
- همیشه مرزهای معنایی حفظ نمیشوند.
۲. Paragraph-based Chunking
در این روش، هر پاراگراف یک Chunk محسوب میشود.
مزایا:
- حفظ ساختار متن
- مناسب برای اسناد آموزشی و مقالات
۳. Sentence-based Chunking
هر Chunk از یک یا چند جمله تشکیل میشود.
این روش برای اسنادی که جملات مستقل دارند، مناسب است.
۴. Semantic Chunking
در این روش، تقسیمبندی بر اساس مفهوم انجام میشود، نه صرفاً تعداد کلمات یا پاراگرافها.
این روش معمولاً کیفیت بازیابی بالاتری دارد، اما پیادهسازی آن پیچیدهتر است.
۵. Recursive Chunking
در این روش، متن ابتدا بر اساس ساختارهای بزرگتر (مانند فصل یا بخش) تقسیم میشود و در صورت نیاز، هر بخش دوباره به قسمتهای کوچکتر شکسته میشود.
این رویکرد در بسیاری از کتابخانههای مدرن RAG استفاده میشود.

Chunk Overlap چیست؟
گاهی برای جلوگیری از قطع شدن مفهوم، بخشی از انتهای یک Chunk در ابتدای Chunk بعدی نیز تکرار میشود.
به این کار Chunk Overlap گفته میشود.
برای مثال:
Chunk اول:
...مدلهای هوش مصنوعی برای پردازش متن...
Chunk دوم:
...پردازش متن از Embedding استفاده میکند...
این همپوشانی باعث میشود اطلاعات مهم بین دو Chunk از دست نرود.
آیا Chunk Overlap همیشه مفید است؟
خیر.
اگر مقدار Overlap بسیار زیاد باشد:
- تعداد Chunkها افزایش پیدا میکند.
- فضای ذخیرهسازی بیشتر میشود.
- تعداد Embeddingها افزایش مییابد.
- هزینه نگهداری بیشتر خواهد شد.
بنابراین باید تعادل مناسبی میان حفظ مفهوم و مصرف منابع برقرار شود.
ارتباط Chunking با Embedding
هر Chunk بهصورت مستقل به یک Embedding تبدیل میشود.
اگر تقسیمبندی مناسب نباشد، حتی بهترین مدل Embedding نیز نمیتواند نتایج مطلوبی ارائه دهد.
به همین دلیل، کیفیت Chunking تأثیر مستقیمی بر کیفیت بازیابی اطلاعات دارد.
ارتباط Chunking با Vector Database
پس از تولید Embedding، هر Chunk همراه با اطلاعاتی مانند عنوان، شناسه، منبع و سایر Metadataها در Vector Database ذخیره میشود.
در زمان جستوجو، سیستم بهجای بازیابی کل سند، نزدیکترین Chunkها را پیدا میکند.
ارتباط Chunking با RAG
Chunking یکی از مراحل اصلی معماری RAG است.
بدون تقسیمبندی مناسب اسناد:
- بازیابی اطلاعات ضعیف میشود.
- پاسخها دقت کمتری خواهند داشت.
- هزینه API افزایش پیدا میکند.
- Context Window سریعتر پر میشود.
بهترین روشهای Chunking
برای دستیابی به بهترین نتیجه:
- تا حد امکان مرزهای معنایی را حفظ کنید.
- عنوانها و تیترها را از متن جدا نکنید.
- اندازه Chunkها را بر اساس نوع محتوا تنظیم کنید.
- از Metadata مناسب استفاده کنید.
- کیفیت بازیابی را با دادههای واقعی ارزیابی کنید.
- در صورت نیاز از Chunk Overlap محدود استفاده کنید.
کاربردهای Chunking
تقریباً تمام سامانههای مبتنی بر RAG از Chunking استفاده میکنند، از جمله:
- چتباتهای سازمانی
- موتورهای جستوجوی معنایی
- پایگاههای دانش
- تحلیل قراردادها
- سامانههای حقوقی
- سامانههای پزشکی
- مستندات فنی
- آموزش آنلاین
- مراکز تماس هوشمند
اشتباهات رایج
برخی از خطاهای متداول عبارتاند از:
- استفاده از Chunkهای بسیار بزرگ
- تقسیم متن در وسط یک مفهوم
- حذف عنوانها از Chunkها
- استفاده از Overlap بیش از حد
- تولید Embedding برای کل سند بهجای Chunkها
- بهروزرسانی نکردن Chunkها پس از تغییر اسناد
سوالات متداول
آیا Chunking فقط در RAG استفاده میشود؟
خیر. هرچند RAG مهمترین کاربرد آن است، اما در بسیاری از سامانههای جستوجوی معنایی و بازیابی اطلاعات نیز استفاده میشود.
آیا همیشه باید از Chunk Overlap استفاده کنیم؟
خیر. میزان همپوشانی باید بر اساس نوع داده و کیفیت نتایج تنظیم شود و مقدار بیش از حد آن میتواند هزینه و حجم داده را افزایش دهد.
بهترین اندازه Chunk چیست؟
پاسخ ثابتی وجود ندارد. اندازه مناسب به نوع محتوا، مدل Embedding، Context Window و نیازهای پروژه بستگی دارد و معمولاً با آزمون و ارزیابی تعیین میشود.
آیا Chunking باعث کاهش هزینه API میشود؟
بله. با بازیابی فقط بخشهای مرتبط، تعداد توکنهای ارسالی به مدل کاهش پیدا میکند و در نتیجه هزینه API نیز کمتر میشود.
جمعبندی
Chunking یکی از مهمترین مراحل در طراحی سامانههای مبتنی بر RAG است. تقسیم مناسب اسناد به بخشهای کوچکتر، کیفیت جستوجوی معنایی، دقت بازیابی اطلاعات و عملکرد مدلهای زبانی را بهبود میدهد و همزمان هزینه و مصرف توکن را کاهش میدهد.
اگر قصد دارید یک پایگاه دانش، چتبات سازمانی یا سامانهای مبتنی بر هوش مصنوعی توسعه دهید، طراحی صحیح فرایند Chunking به اندازۀ انتخاب مدل زبانی یا Vector Database اهمیت دارد. در درواره میتوانید از طریق یک API سازگار با OpenAI به مدلهای Embedding و سایر مدلهای هوش مصنوعی دسترسی داشته باشید و زیرساخت لازم برای پیادهسازی معماریهای مبتنی بر RAG را فراهم کنید.