تیپ #۳۱
قطعهبندی اسناد در RAG: اندازه و همپوشانی را جدی بگیرید
کیفیت بازیابی در سامانههای RAG بیش از هر چیز به نحوه تکهتکه کردن اسناد بستگی دارد، ولی بسیاری از تیمها همان مقدار پیشفرض کتابخانه را رها میکنند. یک نقطه شروع معقول، قطعههایی در حدود ۲۰۰ تا ۵۰۰ توکن با ۱۰ تا ۲۰ درصد همپوشانی است تا جملهای که روی مرز دو قطعه میافتد، دستکم در یک قطعه کامل باقی بماند 🧩. قطعههای خیلی کوچک معنای ناقص میدهند و قطعههای خیلی بزرگ متن بیربط را وارد پرامپت میکنند. بهجای حدس زدن، دو سه تنظیم مختلف را روی یک مجموعه ارزیابی کوچک امتحان کنید.
توضیح کاملتر
قطعهبندی، اولین و اثرگذارترین تصمیم در ساخت یک خط لوله بازیابی دانش است، چون مدلهای embedding معنای کل یک قطعه را در یک بردار فشرده خلاصه میکنند. اگر قطعه بیش از حد بلند باشد، چند موضوع متفاوت در یک بردار میانگین گرفته میشود و شباهت معنایی رقیق میشود؛ نتیجه این است که بازیاب متنی را برمیگرداند که فقط بخش کوچکی از آن به پرسش مربوط است. اگر قطعه بیش از حد کوتاه باشد، جملهها از زمینه خود جدا میشوند و مدل زبانی نمیتواند پاسخ را از تکههای پراکنده بسازد. همپوشانی دقیقاً برای همین مرزهاست: با تکرار ۱۰ تا ۲۰ درصدی انتهای هر قطعه در قطعه بعد، اطلاعاتی که روی مرز افتاده در دستکم یکی از قطعهها کامل دیده میشود. برای مثال، در قراردادی که شرط پرداخت در دو جمله پشتسرهم آمده، بدون همپوشانی ممکن است جمله دوم به قطعه بعدی بیفتد و بازیاب فقط شرط ناقص را ببیند. در عمل بهتر است بهجای برش کورکورانه بر اساس تعداد کاراکتر، از تقسیمکنندههای بازگشتی مبتنی بر توکن و مرزهای ساختاری مثل تیتر، پاراگراف و بلوک کد استفاده کنید و عنوان بخش را هم به متن هر قطعه اضافه کنید. در پایان، دو یا سه پیکربندی مختلف را روی یک مجموعه پرسش و پاسخ کوچک بسنجید، چون اندازه بهینه به نوع سند، مدل embedding و پنجره زمینه مدل زبانی شما بستگی دارد.
← بازگشت به همهٔ نکتههای روز