یه سری گزارش و بنچمارک جدید درباره Chunking توی سیستمهای RAG دیدم که خیلی از ابهامهام رو برطرف کرد... واقعیت اینه که هنوزم خیلیا دارن از Fixed-size Splitting استفاده میکنن که توی پروژههای جدی جواب نمیده و باعث میشه Context توی پاراگرافها تیکه پاره بشه و مدل گیج بزنه.
هنوز هم Recursive Character Splitting امنترین نقطه شروع برای اکثر داکیومنتهاست. توی داکیومنت ها روی حدود ۴۰۰ تا ۵۰۰ توکن با ۱۰ تا ۲۰ درصد Overlap تاکید شده بود که معمولاً تعادل خوبی بین Precision و هزینه Embedding ایجاد میکنه. اما اگه دیتای تخصصی مثل متون حقوقی یا پزشکی داری، استراتژیهای Semantic و Hierarchical قطعا خیلی بهترن.
با اینکه Semantic Chunking هزینه پردازشی بالاتری داره (چون برای هر جمله باید Embedding بگیری) ولی چون بر اساس شباهت معنایی و شکستهای منطقی متن رو تقسیم میکنه، حدود ۹ درصد Recall رو بهتر میکنه. من خودم توی پروژه قبلی دیدم که وقتی از Parent-Document Retrieval استفاده کردیم (یعنی تیکههای کوچیک برای سرچ و تیکههای بزرگتر برای کانتکست LLM) دقت جوابها به طرز عجیبی بالا رفت.
رویکردهای جدیدتر مثل Late Chunking هم دارن ترند میشن. ایدهش اینه که کل سند رو یکجا Embed کنی و بعد نمایشهای میانی رو تیکهتیکه کنی تا ارتباط بین جملات حفظ بشه. نکته طلایی که خیلیا نادیده میگیرن Metadata Augmentation هست... اضافه کردن تیترها، خلاصهها و تگهای منبع به هر Chunk، فیلتر کردن رو موقع بازیابی خیلی دقیقتر میکنه.
به نظرم به جای هایپ روی مدلهای خفنتر، باید روی همین جزئیات وقت گذاشت.
🛠 Join @LLMEngineers Community
Post #367
1.27K
- 👍 11
- ❤ 1